diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index 452879c..b356211 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -507,7 +507,6 @@ class BlMaterial(ReplicatedDatablock): @staticmethod def resolve_deps(datablock: object) -> [object]: - # TODO: resolve node group deps deps = [] if datablock.use_nodes: diff --git a/multi_user/bl_types/bl_texture.py b/multi_user/bl_types/bl_texture.py index 0dd0f03..62505d5 100644 --- a/multi_user/bl_types/bl_texture.py +++ b/multi_user/bl_types/bl_texture.py @@ -21,7 +21,9 @@ import mathutils from .dump_anything import Loader, Dumper from replication.protocol import ReplicatedDatablock - +from .bl_datablock import resolve_datablock_from_uuid +from .bl_action import dump_animation_data, load_animation_data, resolve_animation_dependencies +import bpy.types as T class BlTexture(ReplicatedDatablock): bl_id = "textures" @@ -30,15 +32,18 @@ class BlTexture(ReplicatedDatablock): bl_icon = 'TEXTURE' bl_reload_parent = False + @staticmethod def load(data: dict, datablock: object): loader = Loader() - loader.load(target, data) + loader.load(datablock, data) + load_animation_data(datablock.get('animation_data'), datablock) + @staticmethod def construct(data: dict) -> object: return bpy.data.textures.new(data["name"], data["type"]) + @staticmethod def dump(datablock: object) -> dict: - assert(instance) dumper = Dumper() dumper.depth = 1 @@ -52,24 +57,39 @@ class BlTexture(ReplicatedDatablock): 'name_full' ] - data = dumper.dump(instance) - color_ramp = getattr(instance, 'color_ramp', None) + data = dumper.dump(datablock) + + color_ramp = getattr(datablock, 'color_ramp', None) if color_ramp: dumper.depth = 4 data['color_ramp'] = dumper.dump(color_ramp) + data['animation_data'] = dump_animation_data(datablock) return data + @staticmethod + def resolve(data: dict) -> object: + uuid = data.get('uuid') + name = data.get('name') + datablock = resolve_datablock_from_uuid(uuid, bpy.data.textures) + if datablock is None: + datablock = bpy.data.textures.get(name) + + return datablock + + @staticmethod def resolve_deps(datablock: object) -> [object]: - # TODO: resolve material deps = [] - image = getattr(self.instance,"image", None) + image = getattr(datablock,"image", None) if image: deps.append(image) + deps.extend(resolve_animation_dependencies(datablock)) + return deps - +_type = [T.WoodTexture, T.WoodTexture, T.StucciTexture, T.NoiseTexture, T.MusgraveTexture, T.MarbleTexture, T.MagicTexture, T.ImageTexture, T.DistortedNoiseTexture, T.CloudsTexture, T.BlendTexture] +_class = BlTexture