From 8f95158f083148de900678aa1df790bfdea7d2c6 Mon Sep 17 00:00:00 2001 From: Swann Date: Thu, 21 Jan 2021 14:48:07 +0100 Subject: [PATCH 1/2] feat: initial support for new scenes --- multi_user/bl_types/bl_scene.py | 6 +----- multi_user/operators.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) 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..2f78759 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -1025,8 +1025,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 From 1cfb4e797ebd4c24e3510910005ab2182ebf0ea2 Mon Sep 17 00:00:00 2001 From: Swann Date: Fri, 22 Jan 2021 11:18:28 +0100 Subject: [PATCH 2/2] fix: handle none uuid --- multi_user/operators.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/multi_user/operators.py b/multi_user/operators.py index 2f78759..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):