diff --git a/multi_user/bl_types/bl_gpencil.py b/multi_user/bl_types/bl_gpencil.py index 530ab1b..610f368 100644 --- a/multi_user/bl_types/bl_gpencil.py +++ b/multi_user/bl_types/bl_gpencil.py @@ -29,6 +29,7 @@ from .bl_datablock import resolve_datablock_from_uuid from .bl_action import dump_animation_data, load_animation_data, resolve_animation_dependencies from ..utils import get_preferences from ..timers import is_annotating +from .bl_material import load_materials_slots, dump_materials_slots STROKE_POINT = [ 'co', @@ -229,10 +230,10 @@ class BlGpencil(ReplicatedDatablock): @staticmethod def load(data: dict, datablock: object): - datablock.materials.clear() - if "materials" in data.keys(): - for mat in data['materials']: - datablock.materials.append(bpy.data.materials[mat]) + # MATERIAL SLOTS + src_materials = data.get('materials', None) + if src_materials: + load_materials_slots(src_materials, datablock.materials) loader = Loader() loader.load(datablock, data) @@ -260,7 +261,6 @@ class BlGpencil(ReplicatedDatablock): dumper = Dumper() dumper.depth = 2 dumper.include_filter = [ - 'materials', 'name', 'zdepth_offset', 'stroke_thickness_space', @@ -268,7 +268,7 @@ class BlGpencil(ReplicatedDatablock): 'stroke_depth_order' ] data = dumper.dump(datablock) - + data['materials'] = dump_materials_slots(datablock.materials) data['layers'] = {} for layer in datablock.layers: diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index 603856b..f016277 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -387,11 +387,10 @@ def load_materials_slots(src_materials: list, dst_materials: bpy.types.bpy_prop_ for mat_uuid, mat_name in src_materials: mat_ref = None - if mat_uuid is not None: + if mat_uuid: mat_ref = get_datablock_from_uuid(mat_uuid, None) else: mat_ref = bpy.data.materials[mat_name] - dst_materials.append(mat_ref)