[Bf-blender-cvs] [4419dd3bfd0] master: fix T65576 collada exporter duplicates node tree when exported material already uses nodes
Gaia Clary
noreply at git.blender.org
Tue Jun 11 14:06:00 CEST 2019
Commit: 4419dd3bfd00906f9f0f174f083d3490c27b01f8
Author: Gaia Clary
Date: Tue Jun 11 13:56:31 2019 +0200
Branches: master
https://developer.blender.org/rB4419dd3bfd00906f9f0f174f083d3490c27b01f8
fix T65576 collada exporter duplicates node tree when exported material already uses nodes
===================================================================
M source/blender/collada/Materials.cpp
===================================================================
diff --git a/source/blender/collada/Materials.cpp b/source/blender/collada/Materials.cpp
index 5b60eadef3d..aa35b71b9db 100644
--- a/source/blender/collada/Materials.cpp
+++ b/source/blender/collada/Materials.cpp
@@ -19,11 +19,13 @@
MaterialNode::MaterialNode(bContext *C, Material *ma, KeyImageMap &key_image_map)
: mContext(C), material(ma), effect(nullptr), key_image_map(&key_image_map)
{
- ntree = prepare_material_nodetree();
+ bNodeTree *new_ntree = prepare_material_nodetree();
setShaderType();
- shader_node = add_node(SH_NODE_BSDF_PRINCIPLED, 0, 300, "");
- output_node = add_node(SH_NODE_OUTPUT_MATERIAL, 300, 300, "");
- add_link(shader_node, 0, output_node, 0);
+ if (new_ntree) {
+ shader_node = add_node(SH_NODE_BSDF_PRINCIPLED, 0, 300, "");
+ output_node = add_node(SH_NODE_OUTPUT_MATERIAL, 300, 300, "");
+ add_link(shader_node, 0, output_node, 0);
+ }
}
MaterialNode::MaterialNode(bContext *C,
@@ -32,7 +34,7 @@ MaterialNode::MaterialNode(bContext *C,
UidImageMap &uid_image_map)
: mContext(C), material(ma), effect(ef), uid_image_map(&uid_image_map)
{
- ntree = prepare_material_nodetree();
+ prepare_material_nodetree();
setShaderType();
std::map<std::string, bNode *> nmap;
@@ -89,13 +91,18 @@ void MaterialNode::setShaderType()
#endif
}
+// returns null if material already has a node tree
bNodeTree *MaterialNode::prepare_material_nodetree()
{
- if (material->nodetree == NULL) {
- material->nodetree = ntreeAddTree(NULL, "Shader Nodetree", "ShaderNodeTree");
- material->use_nodes = true;
+ if (material->nodetree) {
+ ntree = material->nodetree;
+ return NULL;
}
- return material->nodetree;
+
+ material->nodetree = ntreeAddTree(NULL, "Shader Nodetree", "ShaderNodeTree");
+ material->use_nodes = true;
+ ntree = material->nodetree;
+ return ntree;
}
bNode *MaterialNode::add_node(int node_type, int locx, int locy, std::string label)
More information about the Bf-blender-cvs
mailing list