forked from ChaosGroup/vray_for_blender_exporter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
events.py
97 lines (70 loc) · 2.78 KB
/
events.py
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#
# V-Ray/Blender
#
# http://www.chaosgroup.com
#
# Author: Andrei Izrantcev
# E-Mail: andrei.izrantcev@chaosgroup.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# All Rights Reserved. V-Ray(R) is a registered trademark of Chaos Software.
#
import bpy
from .lib import BlenderUtils
from .nodes.tree_defaults import AddMaterialNodeTree
from . import engine
import _vray_for_blender
@bpy.app.handlers.persistent
def dr_nodes_store(e):
bpy.ops.vray.dr_nodes_save()
@bpy.app.handlers.persistent
def dr_nodes_restore(e):
bpy.ops.vray.dr_nodes_load()
@bpy.app.handlers.persistent
def event_shutdown(e):
engine.Shutdown()
@bpy.app.handlers.persistent
def new_material_ntree(ma):
AddMaterialNodeTree(ma)
bpy.ops.vray.show_ntree(data='MATERIAL', ntree_name=ma.vray.ntree.name)
@bpy.app.handlers.persistent
def update_world_preview(ob):
if not ob.type == 'CAMERA':
return
sce = bpy.context.scene
world = sce.world
if not world:
return
ntree = world.vray.ntree
if not ntree:
return
_vray_for_blender.updatePreview(bpy.context.as_pointer(), BlenderUtils.NC_WORLD)
@bpy.app.handlers.persistent
def update_material_preview(sce):
_vray_for_blender.updatePreview(bpy.context.as_pointer(), BlenderUtils.NC_MATERIAL)
def register():
BlenderUtils.AddEvent(bpy.app.handlers.save_post, dr_nodes_store)
BlenderUtils.AddEvent(bpy.app.handlers.load_post, dr_nodes_restore)
BlenderUtils.AddEvent(bpy.app.handlers.exit, event_shutdown)
BlenderUtils.AddEvent(bpy.app.handlers.new_material, new_material_ntree)
BlenderUtils.AddEvent(bpy.app.handlers.object_update, update_world_preview)
BlenderUtils.AddEvent(bpy.app.handlers.frame_change_post, update_material_preview)
def unregister():
BlenderUtils.DelEvent(bpy.app.handlers.save_post, dr_nodes_store)
BlenderUtils.DelEvent(bpy.app.handlers.load_post, dr_nodes_restore)
BlenderUtils.DelEvent(bpy.app.handlers.exit, event_shutdown)
BlenderUtils.DelEvent(bpy.app.handlers.new_material, new_material_ntree)
BlenderUtils.DelEvent(bpy.app.handlers.object_update, update_world_preview)
BlenderUtils.DelEvent(bpy.app.handlers.frame_change_post, update_material_preview)