From 67d18f08e2977ff66230a4eaa1854aaea70215f6 Mon Sep 17 00:00:00 2001 From: Swann Date: Wed, 31 Mar 2021 15:38:35 +0200 Subject: [PATCH] fix: Timer not unregistered error fix: handle correctly unsupported float parameter for geometry nodes fix: Material loading --- multi_user/bl_types/bl_material.py | 5 +---- multi_user/bl_types/bl_object.py | 8 ++++++-- multi_user/operators.py | 3 +-- multi_user/timers.py | 5 +++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index 1d3b57f..3dc82ca 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -365,10 +365,7 @@ def load_materials_slots(src_materials: list, dst_materials: bpy.types.bpy_prop_ if mat_uuid is not None: mat_ref = get_datablock_from_uuid(mat_uuid, None) else: - mat_ref = bpy.data.materials.get(mat_name, None) - - if mat_ref is None: - raise Exception(f"Material {mat_name} doesn't exist") + mat_ref = bpy.data.materials[mat_name] dst_materials.append(mat_ref) diff --git a/multi_user/bl_types/bl_object.py b/multi_user/bl_types/bl_object.py index b3c787e..3f72d39 100644 --- a/multi_user/bl_types/bl_object.py +++ b/multi_user/bl_types/bl_object.py @@ -55,7 +55,9 @@ def dump_modifier_geometry_node_inputs(modifier: bpy.types.Modifier) -> list: dumped_input = None if isinstance(input_value, bpy.types.ID): dumped_input = input_value.uuid - elif type(input_value) in [int, str, float]: + elif isinstance(input_value, float): + logging.warning("Float parameter not supported in blender 2.92, skipping it") + elif isinstance(input_value,(int, str)): dumped_input = input_value elif hasattr(input_value, 'to_list'): dumped_input = input_value.to_list() @@ -78,7 +80,9 @@ def load_modifier_geometry_node_inputs(dumped_modifier: dict, target_modifier: b for input_index, input_name in enumerate(inputs_name): dumped_value = dumped_modifier['inputs'][input_index] input_value = target_modifier[input_name] - if type(input_value) in [int, str, float]: + if isinstance(input_value, float): + logging.warning("Float parameter not supported in blender 2.92, skipping it") + elif isinstance(input_value,(int, str)): target_modifier[input_name] = dumped_value elif hasattr(input_value, 'to_list'): for index in range(len(input_value)): diff --git a/multi_user/operators.py b/multi_user/operators.py index 8aa9a0f..981c7df 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -210,8 +210,6 @@ class SessionStartOperator(bpy.types.Operator): type_module_class, check_common=type_module_class.bl_check_common) - deleyables.append(timers.ApplyTimer(timeout=settings.depsgraph_update_rate)) - if bpy.app.version[1] >= 91: python_binary_path = sys.executable else: @@ -272,6 +270,7 @@ class SessionStartOperator(bpy.types.Operator): # Background client updates service deleyables.append(timers.ClientUpdate()) deleyables.append(timers.DynamicRightSelectTimer()) + deleyables.append(timers.ApplyTimer(timeout=settings.depsgraph_update_rate)) # deleyables.append(timers.PushTimer( # queue=stagging, # timeout=settings.depsgraph_update_rate diff --git a/multi_user/timers.py b/multi_user/timers.py index 9e1d2e6..1e6c64d 100644 --- a/multi_user/timers.py +++ b/multi_user/timers.py @@ -17,7 +17,7 @@ import logging import sys - +import traceback import bpy from replication.constants import (FETCHED, RP_COMMON, STATE_ACTIVE, STATE_INITIAL, STATE_LOBBY, STATE_QUITTING, @@ -112,7 +112,8 @@ class ApplyTimer(Timer): try: session.apply(node) except Exception as e: - logging.error(f"Fail to apply {node_ref.uuid}: {e}") + logging.error(f"Fail to apply {node_ref.uuid}") + traceback.print_exc() else: if node_ref.bl_reload_parent: for parent in session._graph.find_parents(node):