forked from atticus-lv/RenderNode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path__init__.py
More file actions
61 lines (50 loc) · 1.79 KB
/
__init__.py
File metadata and controls
61 lines (50 loc) · 1.79 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
bl_info = {
"name" : "RenderStack Node",
"author" : "Atticus",
"version" : (1, 1, 8),
"blender" : (2, 92, 0),
"location" : "Node Editor > Render Editor",
"description": "Node based render queue workflow",
'warning' : "",
"doc_url" : "https://github.com/atticus-lv/RenderStackNode/wiki",
"category" : "Render",
}
import bpy
import importlib
import sys
import os
from itertools import groupby
# get folder name
__folder_name__ = __name__
__dict__ = {}
addon_dir = os.path.dirname(__file__)
# get all .py file path
py_paths = [os.path.join(root, f) for root, dirs, files in os.walk(addon_dir) for f in files if
f.endswith('.py') and f != '__init__.py']
for path in py_paths:
name = os.path.basename(path)[:-3]
correct_path = path.replace('\\', '/')
# split path with folder name
dir_list = [list(g) for k, g in groupby(correct_path.split('/'), lambda x: x == __folder_name__) if
not k]
# combine path and make dict like this: 'name:folder.name'
if 'preset' not in dir_list[-1]:
r_name_raw = __folder_name__ + '.' + '.'.join(dir_list[-1])
__dict__[name] = r_name_raw[:-3]
# auto reload
for name in __dict__.values():
if name in sys.modules:
importlib.reload(sys.modules[name])
else:
globals()[name] = importlib.import_module(name)
setattr(globals()[name], 'modules', __dict__)
def register():
for name in __dict__.values():
if name in sys.modules and hasattr(sys.modules[name], 'register'):
sys.modules[name].register()
def unregister():
for name in __dict__.values():
if name in sys.modules and hasattr(sys.modules[name], 'unregister'):
sys.modules[name].unregister()
if __name__ == '__main__':
register()