diff --git a/multi_user/__init__.py b/multi_user/__init__.py index d7a1248..98c4103 100644 --- a/multi_user/__init__.py +++ b/multi_user/__init__.py @@ -44,7 +44,7 @@ from . import environment DEPENDENCIES = { - ("replication", '0.1.7'), + ("replication", '0.1.8'), } diff --git a/multi_user/bl_types/bl_camera.py b/multi_user/bl_types/bl_camera.py index e65b85a..22f58ae 100644 --- a/multi_user/bl_types/bl_camera.py +++ b/multi_user/bl_types/bl_camera.py @@ -48,12 +48,15 @@ class BlCamera(BlDatablock): background_images = data.get('background_images') + target.background_images.clear() + if background_images: - target.background_images.clear() for img_name, img_data in background_images.items(): - target_img = target.background_images.new() - target_img.image = bpy.data.images[img_name] - loader.load(target_img, img_data) + img_id = img_data.get('image') + if img_id: + target_img = target.background_images.new() + target_img.image = bpy.data.images[img_id] + loader.load(target_img, img_data) def _dump_implementation(self, data, instance=None): assert(instance) diff --git a/multi_user/bl_types/bl_object.py b/multi_user/bl_types/bl_object.py index 021fb35..4d0bc79 100644 --- a/multi_user/bl_types/bl_object.py +++ b/multi_user/bl_types/bl_object.py @@ -24,7 +24,6 @@ from replication.exception import ContextError from .bl_datablock import BlDatablock, get_datablock_from_uuid from .dump_anything import Dumper, Loader -from replication.exception import ReparentException def load_pose(target_bone, data): @@ -120,9 +119,7 @@ class BlObject(BlDatablock): data_uuid = data.get("data_uuid") data_id = data.get("data") - if target.type != data['type']: - raise ReparentException() - elif target.data and (target.data.name != data_id): + if target.data and (target.data.name != data_id): target.data = get_datablock_from_uuid(data_uuid, find_data_from_name(data_id), ignore=['images']) # vertex groups @@ -191,10 +188,10 @@ class BlObject(BlDatablock): target_bone.bone_group = target.pose.bone_group[bone_data['bone_group_index']] # TODO: find another way... - if target.type == 'EMPTY': + if target.empty_display_type == "IMAGE": img_uuid = data.get('data_uuid') if target.data is None and img_uuid: - target.data = get_datablock_from_uuid(img_uuid, None)#bpy.data.images.get(img_key, None) + target.data = get_datablock_from_uuid(img_uuid, None) def _dump_implementation(self, data, instance=None): assert(instance) diff --git a/multi_user/delayable.py b/multi_user/delayable.py index df75973..70ecfe6 100644 --- a/multi_user/delayable.py +++ b/multi_user/delayable.py @@ -36,8 +36,7 @@ from replication.constants import (FETCHED, STATE_ACTIVE, STATE_SYNCING, STATE_LOBBY, - STATE_SRV_SYNC, - REPARENT) + STATE_SRV_SYNC) from replication.interface import session from replication.exception import NonAuthorizedOperationError @@ -122,15 +121,6 @@ class ApplyTimer(Timer): session.apply(node) except Exception as e: logging.error(f"Fail to apply {node_ref.uuid}: {e}") - elif node_ref.state == REPARENT: - # Reload the node - node_ref.remove_instance() - node_ref.resolve() - session.apply(node) - for parent in session._graph.find_parents(node): - logging.info(f"Applying parent {parent}") - session.apply(parent, force=True) - node_ref.state = UP class DynamicRightSelectTimer(Timer):