-
-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy path__init__.py
More file actions
70 lines (50 loc) · 1.38 KB
/
__init__.py
File metadata and controls
70 lines (50 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import importlib
import bpy
from bpy.app.handlers import persistent
from .ui import register_bakers
from .preferences import generate_pack_enums
#########################
# BOOTSTRAPPER
#########################
def init_baker_dependencies():
"""Refresh all dynamic GrabDoc classes or
properties dependent on the `UIList` structure."""
register_bakers()
generate_pack_enums()
#########################
# HANDLERS
#########################
@persistent
def load_post_handler(_dummy) -> None:
if not bpy.data.filepath:
return
init_baker_dependencies()
@persistent
def save_pre_handler(_dummy) -> None:
if not bpy.context.scene.gd.preview_state:
return
bpy.ops.grabdoc.baker_preview_exit()
#########################
# REGISTRATION
#########################
module_names = (
"operators.core",
"operators.material",
"operators.marmoset",
"preferences",
"ui"
)
modules = []
for module_name in module_names:
if module_name in locals():
modules.append(importlib.reload(locals()[module_name]))
else:
modules.append(importlib.import_module(f".{module_name}", __package__))
def register():
for mod in modules:
mod.register()
bpy.app.handlers.load_post.append(load_post_handler)
bpy.app.handlers.save_pre.append(save_pre_handler)
def unregister():
for mod in modules:
mod.unregister()