From 569543650fa555519d15125f21ce6d1556a25974 Mon Sep 17 00:00:00 2001 From: Swann Date: Thu, 3 Jun 2021 15:43:47 +0200 Subject: [PATCH] feat: skip external updates --- multi_user/bl_types/bl_collection.py | 19 +++++++++++++++++++ multi_user/operators.py | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/multi_user/bl_types/bl_collection.py b/multi_user/bl_types/bl_collection.py index 4cdfd79..75be16c 100644 --- a/multi_user/bl_types/bl_collection.py +++ b/multi_user/bl_types/bl_collection.py @@ -19,6 +19,8 @@ import bpy import mathutils +from deepdiff import DeepDiff, Delta + from .. import utils from replication.protocol import ReplicatedDatablock from .dump_anything import Loader, Dumper @@ -140,5 +142,22 @@ class BlCollection(ReplicatedDatablock): def resolve_deps(datablock: object) -> [object]: return resolve_collection_dependencies(datablock) + @staticmethod + def compute_delta(last_data: dict, current_data: dict) -> Delta: + diff_params = { + 'ignore_order': True, + 'report_repetition': True + } + delta_params = { + # 'mutate': True + } + + return Delta( + DeepDiff(last_data, + current_data, + cache_size=5000, + **diff_params), + **delta_params) + _type = bpy.types.Collection _class = BlCollection \ No newline at end of file diff --git a/multi_user/operators.py b/multi_user/operators.py index e5d8050..e570659 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -952,7 +952,11 @@ def depsgraph_evaluation(scene): update_external_dependencies() + is_internal = [u for u in dependency_updates if u.is_updated_geometry or u.is_updated_shading or u.is_updated_transform] + # NOTE: maybe we don't need to check each update but only the first + if not is_internal: + return for update in reversed(dependency_updates): # Is the object tracked ? if update.id.uuid: