From 68d28e4a664e460d170d54bd92ddeaff76006935 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Mon, 14 Oct 2019 15:24:08 +0200 Subject: [PATCH] feat: color_ramp loading --- multi_user/bl_types/bl_material.py | 31 +++++++++++++++++++++++++++--- multi_user/bl_types/bl_scene.py | 1 - 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/multi_user/bl_types/bl_material.py b/multi_user/bl_types/bl_material.py index ea4ff42..a02a7eb 100644 --- a/multi_user/bl_types/bl_material.py +++ b/multi_user/bl_types/bl_material.py @@ -6,6 +6,15 @@ from .. import utils from .bl_datablock import BlDatablock logger = logging.getLogger(__name__) +def clean_color_ramp(target_ramp): + # clear existing + try: + for key in target_ramp.elements: + target_ramp.elements.remove(key) + except: + pass + + def load_node(target_node_tree, source): target_node = target_node_tree.nodes.get(source["name"]) @@ -15,11 +24,17 @@ def load_node(target_node_tree, source): target_node = target_node_tree.nodes.new(type=node_type) + # Clean color ramp before loading it + if source['type'] == 'VALTORGB': + clean_color_ramp(target_node.color_ramp) + utils.dump_anything.load( - target_node, source) + target_node, + source) if source['type'] == 'TEX_IMAGE': target_node.image = bpy.data.images[source['image']] + for input in source["inputs"]: if hasattr(target_node.inputs[input], "default_value"): @@ -114,11 +129,21 @@ class BlMaterial(BlDatablock): if hasattr(node, 'inputs'): nodes[node.name]['inputs'] = {} - for i in node.inputs: - + for i in node.inputs: if hasattr(i, 'default_value'): nodes[node.name]['inputs'][i.name] = input_dumper.dump( i) + if hasattr(node, 'color_ramp'): + ramp_dumper = utils.dump_anything.Dumper() + ramp_dumper.depth = 4 + ramp_dumper.include_filter = [ + 'elements', + 'alpha', + 'color', + 'position' + ] + nodes[node.name]['color_ramp'] = ramp_dumper.dump(node.color_ramp) + data["node_tree"]['nodes'] = nodes data["node_tree"]["links"] = links_dumper.dump(pointer.node_tree.links) diff --git a/multi_user/bl_types/bl_scene.py b/multi_user/bl_types/bl_scene.py index 981f2b9..b638432 100644 --- a/multi_user/bl_types/bl_scene.py +++ b/multi_user/bl_types/bl_scene.py @@ -39,7 +39,6 @@ class BlScene(BlDatablock): target.world = bpy.data.worlds[data['world']] # Annotation - if 'grease_pencil' in data.keys(): target.grease_pencil = bpy.data.grease_pencils[data['grease_pencil']]