@ -47,14 +47,15 @@ stop_modal_executor = False
|
|||||||
modal_executor_queue = None
|
modal_executor_queue = None
|
||||||
server_process = None
|
server_process = None
|
||||||
|
|
||||||
|
|
||||||
def unregister_delayables():
|
def unregister_delayables():
|
||||||
global delayables, stop_modal_executor
|
global delayables, stop_modal_executor
|
||||||
|
|
||||||
for d in delayables:
|
for d in delayables:
|
||||||
try:
|
try:
|
||||||
d.unregister()
|
d.unregister()
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
stop_modal_executor = True
|
stop_modal_executor = True
|
||||||
|
|
||||||
@ -200,6 +201,7 @@ class SessionStopOperator(bpy.types.Operator):
|
|||||||
|
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
class SessionKickOperator(bpy.types.Operator):
|
class SessionKickOperator(bpy.types.Operator):
|
||||||
bl_idname = "session.kick"
|
bl_idname = "session.kick"
|
||||||
bl_label = "Kick"
|
bl_label = "Kick"
|
||||||
@ -226,10 +228,10 @@ class SessionKickOperator(bpy.types.Operator):
|
|||||||
def invoke(self, context, event):
|
def invoke(self, context, event):
|
||||||
return context.window_manager.invoke_props_dialog(self)
|
return context.window_manager.invoke_props_dialog(self)
|
||||||
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
row = self.layout
|
row = self.layout
|
||||||
row.label(text=f" Do you really want to kick {self.user} ? " )
|
row.label(text=f" Do you really want to kick {self.user} ? ")
|
||||||
|
|
||||||
|
|
||||||
class SessionPropertyRemoveOperator(bpy.types.Operator):
|
class SessionPropertyRemoveOperator(bpy.types.Operator):
|
||||||
bl_idname = "session.remove_prop"
|
bl_idname = "session.remove_prop"
|
||||||
@ -337,7 +339,7 @@ class SessionSnapUserOperator(bpy.types.Operator):
|
|||||||
|
|
||||||
if target_ref:
|
if target_ref:
|
||||||
target_scene = target_ref['metadata']['scene_current']
|
target_scene = target_ref['metadata']['scene_current']
|
||||||
if target_scene != context.scene.name:
|
if target_scene != context.scene.name:
|
||||||
bpy.context.window.scene = bpy.data.scenes[target_scene]
|
bpy.context.window.scene = bpy.data.scenes[target_scene]
|
||||||
|
|
||||||
rv3d.view_matrix = mathutils.Matrix(
|
rv3d.view_matrix = mathutils.Matrix(
|
||||||
@ -498,6 +500,20 @@ classes = (
|
|||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@persistent
|
||||||
|
def sanitize_deps_graph(dummy):
|
||||||
|
"""sanitize deps graph
|
||||||
|
|
||||||
|
Temporary solution to resolve each node pointers after a Undo.
|
||||||
|
A future solution should be to avoid storing dataclock reference...
|
||||||
|
|
||||||
|
"""
|
||||||
|
global client
|
||||||
|
|
||||||
|
if client and client.state['STATE'] == STATE_ACTIVE:
|
||||||
|
for node_key in client.list():
|
||||||
|
client.get(node_key).resolve()
|
||||||
|
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
def load_pre_handler(dummy):
|
def load_pre_handler(dummy):
|
||||||
@ -507,9 +523,6 @@ def load_pre_handler(dummy):
|
|||||||
bpy.ops.session.stop()
|
bpy.ops.session.stop()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
def update_client_frame(scene):
|
def update_client_frame(scene):
|
||||||
if client and client.state['STATE'] == STATE_ACTIVE:
|
if client and client.state['STATE'] == STATE_ACTIVE:
|
||||||
@ -523,12 +536,15 @@ def register():
|
|||||||
for cls in classes:
|
for cls in classes:
|
||||||
register_class(cls)
|
register_class(cls)
|
||||||
|
|
||||||
|
|
||||||
|
bpy.app.handlers.undo_post.append(sanitize_deps_graph)
|
||||||
|
bpy.app.handlers.redo_post.append(sanitize_deps_graph)
|
||||||
|
|
||||||
bpy.app.handlers.load_pre.append(load_pre_handler)
|
bpy.app.handlers.load_pre.append(load_pre_handler)
|
||||||
|
|
||||||
|
|
||||||
bpy.app.handlers.frame_change_pre.append(update_client_frame)
|
bpy.app.handlers.frame_change_pre.append(update_client_frame)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def unregister():
|
def unregister():
|
||||||
global client
|
global client
|
||||||
|
|
||||||
@ -540,9 +556,11 @@ def unregister():
|
|||||||
for cls in reversed(classes):
|
for cls in reversed(classes):
|
||||||
unregister_class(cls)
|
unregister_class(cls)
|
||||||
|
|
||||||
|
bpy.app.handlers.undo_post.remove(sanitize_deps_graph)
|
||||||
|
bpy.app.handlers.redo_post.remove(sanitize_deps_graph)
|
||||||
|
|
||||||
|
|
||||||
bpy.app.handlers.load_pre.remove(load_pre_handler)
|
bpy.app.handlers.load_pre.remove(load_pre_handler)
|
||||||
|
|
||||||
|
|
||||||
bpy.app.handlers.frame_change_pre.remove(update_client_frame)
|
bpy.app.handlers.frame_change_pre.remove(update_client_frame)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user