From a1069b6c662ffbeba0457164c3ec831678b25fd4 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Tue, 4 May 2021 15:19:33 +0200 Subject: Fix T86314: materials not updated correctly after collada import (again) While rB6b18678e34bf did the correct updates, it did it a bit early (not covering all possible node tree changes). Now do the ntreeUpdateTree() at the very end of the material import instead. Thx @scurest investigating. Maniphest Tasks: T86314 Differential Revision: https://developer.blender.org/D11159 --- source/blender/io/collada/DocumentImporter.cpp | 2 ++ source/blender/io/collada/Materials.cpp | 9 +++++---- source/blender/io/collada/Materials.h | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'source/blender/io') diff --git a/source/blender/io/collada/DocumentImporter.cpp b/source/blender/io/collada/DocumentImporter.cpp index 214b5207a96..beadfc98c74 100644 --- a/source/blender/io/collada/DocumentImporter.cpp +++ b/source/blender/io/collada/DocumentImporter.cpp @@ -817,6 +817,8 @@ void DocumentImporter::write_profile_COMMON(COLLADAFW::EffectCommon *ef, Materia matNode.set_ambient(ef->getAmbient()); matNode.set_specular(ef->getSpecular()); matNode.set_reflective(ef->getReflective()); + + matNode.update_material_nodetree(); } /** diff --git a/source/blender/io/collada/Materials.cpp b/source/blender/io/collada/Materials.cpp index 6ba31599fcd..2cc80de2ec1 100644 --- a/source/blender/io/collada/Materials.cpp +++ b/source/blender/io/collada/Materials.cpp @@ -25,8 +25,6 @@ MaterialNode::MaterialNode(bContext *C, Material *ma, KeyImageMap &key_image_map 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); - - ntreeUpdateTree(CTX_data_main(C), ntree); } } @@ -61,8 +59,6 @@ MaterialNode::MaterialNode(bContext *C, 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); - - ntreeUpdateTree(CTX_data_main(C), ntree); #endif } @@ -109,6 +105,11 @@ bNodeTree *MaterialNode::prepare_material_nodetree() return ntree; } +void MaterialNode::update_material_nodetree() +{ + ntreeUpdateTree(CTX_data_main(mContext), ntree); +} + bNode *MaterialNode::add_node(int node_type, int locx, int locy, std::string label) { bNode *node = nodeAddStaticNode(mContext, ntree, node_type); diff --git a/source/blender/io/collada/Materials.h b/source/blender/io/collada/Materials.h index f671a00758d..2d8c823a4c2 100644 --- a/source/blender/io/collada/Materials.h +++ b/source/blender/io/collada/Materials.h @@ -68,4 +68,6 @@ class MaterialNode { void set_alpha(COLLADAFW::EffectCommon::OpaqueMode mode, COLLADAFW::ColorOrTexture &cot, COLLADAFW::FloatOrParam &val); + + void update_material_nodetree(); }; -- cgit v1.2.3