diff --git a/multi_user/bl_types/bl_scene.py b/multi_user/bl_types/bl_scene.py index df7e9a6..95e72ab 100644 --- a/multi_user/bl_types/bl_scene.py +++ b/multi_user/bl_types/bl_scene.py @@ -281,13 +281,9 @@ class BlScene(BlDatablock): bl_icon = 'SCENE_DATA' bl_reload_parent = False - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.diff_method = DIFF_JSON - def _construct(self, data): instance = bpy.data.scenes.new(data["name"]) + instance.uuid = self.uuid return instance def _load_implementation(self, data, target): diff --git a/multi_user/operators.py b/multi_user/operators.py index 9cf4d38..a6db607 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -960,16 +960,13 @@ def sanitize_deps_graph(dummy): rm_cpt = 0 for node_key in session.list(): node = session.get(node_key) - if not node.resolve(construct=False): + if node is None or not node.resolve(construct=False): try: session.remove(node.uuid) rm_cpt+=1 except NonAuthorizedOperationError: continue - - logging.debug(f"Sanitize took { utils.current_milli_time()-start}ms") - logging.info(f"Removed {rm_cpt} nodes") - + logging.debug(f"Sanitize took { utils.current_milli_time()-start}ms, Removed {rm_cpt} nodes") @persistent def load_pre_handler(dummy): @@ -1025,8 +1022,15 @@ def depsgraph_evaluation(scene): logging.error(e) else: continue - - + # A new scene is created + elif isinstance(update.id, bpy.types.Scene): + ref = session.get(reference=update.id) + if ref: + ref.resolve() + else: + scn_uuid = session.add(update.id) + session.commit(scn_uuid) + session.push(scn_uuid, check_data=False) def register(): from bpy.utils import register_class