diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index 3bfd0b2..bc8adb5 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -30,7 +30,7 @@ from .bl_datablock import get_datablock_from_uuid, resolve_datablock_from_uuid from .bl_action import dump_animation_data, load_animation_data, resolve_animation_dependencies NODE_SOCKET_INDEX = re.compile('\[(\d*)\]') -IGNORED_SOCKETS = ['GEOMETRY', 'SHADER', 'CUSTOM'] +IGNORED_SOCKETS = ['NodeSocketGeometry', 'NodeSocketShader', 'CUSTOM'] def load_node(node_data: dict, node_tree: bpy.types.ShaderNodeTree): """ Load a node into a node_tree from a dict diff --git a/multi_user/bl_types/bl_object.py b/multi_user/bl_types/bl_object.py index e8b64e6..e4bccbf 100644 --- a/multi_user/bl_types/bl_object.py +++ b/multi_user/bl_types/bl_object.py @@ -58,20 +58,16 @@ else: def get_node_group_properties_identifiers(node_group): props_ids = [] - # Inputs - for inpt in node_group.inputs: - if inpt.type in IGNORED_SOCKETS: + + for socket in node_group.interface.items_tree: + if socket.socket_type in IGNORED_SOCKETS: continue else: - props_ids.append((inpt.identifier, inpt.type)) + props_ids.append((socket.identifier, socket.socket_type)) - if inpt.type in ['INT', 'VALUE', 'BOOLEAN', 'RGBA', 'VECTOR']: - props_ids.append((f"{inpt.identifier}_attribute_name",'STR')) - props_ids.append((f"{inpt.identifier}_use_attribute", 'BOOL')) - - for outpt in node_group.outputs: - if outpt.type not in IGNORED_SOCKETS and outpt.type in ['INT', 'VALUE', 'BOOLEAN', 'RGBA', 'VECTOR']: - props_ids.append((f"{outpt.identifier}_attribute_name", 'STR')) + # for outpt in node_group.outputs: + # if outpt.type not in IGNORED_SOCKETS and outpt.type in ['INT', 'VALUE', 'BOOLEAN', 'RGBA', 'VECTOR']: + # props_ids.append((f"{outpt.identifier}_attribute_name", 'STR')) return props_ids # return [inpt.identifer for inpt in node_group.inputs if inpt.type not in IGNORED_SOCKETS] @@ -172,13 +168,13 @@ def load_modifier_geometry_node_props(dumped_modifier: dict, target_modifier: bp for input_index, inpt in enumerate(get_node_group_properties_identifiers(target_modifier.node_group)): dumped_value, dumped_type = dumped_modifier['props'][input_index] input_value = target_modifier[inpt[0]] - if dumped_type in ['INT', 'VALUE', 'STR', 'BOOL']: + if dumped_type in ['NodeSocketInt', 'NodeSocketFloat', 'NodeSocketString', 'NodeSocketBool']: logging.info(f"{inpt[0]}/{dumped_value}") target_modifier[inpt[0]] = dumped_value elif dumped_type in ['RGBA', 'VECTOR']: for index in range(len(input_value)): input_value[index] = dumped_value[index] - elif dumped_type in ['COLLECTION', 'OBJECT', 'IMAGE', 'TEXTURE', 'MATERIAL']: + elif dumped_type in ['NodeSocketCollection', 'NodeSocketObject', 'NodeSocketImage', 'NodeSocketTexture', 'NodeSocketMaterial']: target_modifier[inpt[0]] = get_datablock_from_uuid(dumped_value, None) diff --git a/multi_user/handlers.py b/multi_user/handlers.py index d6f936e..ae12003 100644 --- a/multi_user/handlers.py +++ b/multi_user/handlers.py @@ -81,9 +81,9 @@ def on_scene_update(scene): # NOTE: maybe we don't need to check each update but only the first for update in reversed(dependency_updates): - update_uuid = getattr(update.id, 'uuid', None) + update_uuid = getattr(update.id.original, 'uuid', None) if update_uuid: - node = session.repository.graph.get(update.id.uuid) + node = session.repository.graph.get(update_uuid) check_common = session.repository.rdp.get_implementation(update.id).bl_check_common if node and (node.owner == session.repository.username or check_common):