diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index 8ab3099..b142907 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -404,6 +404,7 @@ class BlMaterial(ReplicatedDatablock): bl_check_common = False bl_icon = 'MATERIAL_DATA' bl_reload_parent = False + bl_reload_child = True @staticmethod def construct(data: dict) -> object: @@ -513,6 +514,7 @@ class BlMaterial(ReplicatedDatablock): if datablock.use_nodes: deps.extend(get_node_tree_dependencies(datablock.node_tree)) + deps.extend(resolve_animation_dependencies(datablock.node_tree)) deps.extend(resolve_animation_dependencies(datablock)) return deps diff --git a/multi_user/libs/replication b/multi_user/libs/replication index 730e6a9..ce3a7b4 160000 --- a/multi_user/libs/replication +++ b/multi_user/libs/replication @@ -1 +1 @@ -Subproject commit 730e6a9d37b5c617b78dba1503f282032c4bb027 +Subproject commit ce3a7b4363ec9fa879925d57c8555decbc92158a diff --git a/multi_user/operators.py b/multi_user/operators.py index c9aeb84..d339ae9 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -604,8 +604,7 @@ class SessionApply(bpy.types.Operator): node_ref = session.repository.graph.get(self.target) porcelain.apply(session.repository, self.target, - force=True, - force_dependencies=self.reset_dependencies) + force=True) impl = session.repository.rdp.get_implementation(node_ref.instance) if impl.bl_reload_parent: for parent in session.repository.graph.get_parents(self.target): @@ -614,6 +613,11 @@ class SessionApply(bpy.types.Operator): porcelain.apply(session.repository, parent.uuid, force=True) + if hasattr(impl, 'bl_reload_child') and impl.bl_reload_child: + for dep in node_ref.dependencies: + porcelain.apply(session.repository, + dep, + force=True) except Exception as e: self.report({'ERROR'}, repr(e)) traceback.print_exc() diff --git a/multi_user/timers.py b/multi_user/timers.py index dafbf08..a4502e4 100644 --- a/multi_user/timers.py +++ b/multi_user/timers.py @@ -129,6 +129,11 @@ class ApplyTimer(Timer): porcelain.apply(session.repository, parent.uuid, force=True) + if hasattr(impl, 'bl_reload_child') and impl.bl_reload_child: + for dep in node_ref.dependencies: + porcelain.apply(session.repository, + dep, + force=True) class DynamicRightSelectTimer(Timer):