From cd49fee741148dc9dcc0cbefce0b70ea0f2d55c6 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 5 Sep 2022 15:46:00 +0200 Subject: IDMAnagement: Add owner ID pointer to embedded ones. Add a dedicated `owner_id` pointer to ID types that can be embedded (Collections and NodeTrees), and modify slightly come code to make handling those more safe and consistent. This implements first part of T69169. Reviewed By: brecht Differential Revision: https://developer.blender.org/D15838 --- source/blender/io/collada/Materials.cpp | 2 +- source/blender/io/collada/collada_utils.cpp | 2 +- source/blender/io/usd/intern/usd_reader_material.cc | 3 +-- source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 3 ++- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'source/blender/io') diff --git a/source/blender/io/collada/Materials.cpp b/source/blender/io/collada/Materials.cpp index b5d89d8d1cf..997da31b939 100644 --- a/source/blender/io/collada/Materials.cpp +++ b/source/blender/io/collada/Materials.cpp @@ -86,7 +86,7 @@ bNodeTree *MaterialNode::prepare_material_nodetree() return nullptr; } - material->nodetree = ntreeAddTree(nullptr, "Shader Nodetree", "ShaderNodeTree"); + ntreeAddTreeEmbedded(nullptr, &material->id, "Shader Nodetree", "ShaderNodeTree"); material->use_nodes = true; ntree = material->nodetree; return ntree; diff --git a/source/blender/io/collada/collada_utils.cpp b/source/blender/io/collada/collada_utils.cpp index 75842734b08..82c471a6524 100644 --- a/source/blender/io/collada/collada_utils.cpp +++ b/source/blender/io/collada/collada_utils.cpp @@ -1108,7 +1108,7 @@ static std::string bc_get_uvlayer_name(Mesh *me, int layer) static bNodeTree *prepare_material_nodetree(Material *ma) { if (ma->nodetree == nullptr) { - ma->nodetree = ntreeAddTree(nullptr, "Shader Nodetree", "ShaderNodeTree"); + ntreeAddTreeEmbedded(nullptr, &ma->id, "Shader Nodetree", "ShaderNodeTree"); ma->use_nodes = true; } return ma->nodetree; diff --git a/source/blender/io/usd/intern/usd_reader_material.cc b/source/blender/io/usd/intern/usd_reader_material.cc index 4b72a075106..3546beb022c 100644 --- a/source/blender/io/usd/intern/usd_reader_material.cc +++ b/source/blender/io/usd/intern/usd_reader_material.cc @@ -353,8 +353,7 @@ void USDMaterialReader::import_usd_preview(Material *mtl, * and output shaders. */ /* Add the node tree. */ - bNodeTree *ntree = ntreeAddTree(nullptr, "Shader Nodetree", "ShaderNodeTree"); - mtl->nodetree = ntree; + bNodeTree *ntree = ntreeAddTreeEmbedded(nullptr, &mtl->id, "Shader Nodetree", "ShaderNodeTree"); mtl->use_nodes = true; /* Create the Principled BSDF shader node. */ diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc index 58d414a59ad..0922a71979e 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc @@ -380,7 +380,8 @@ bNodeTree *create_mtl_node_tree(Main *bmain, Material *mat, bool relative_paths) { - bNodeTree *ntree = ntreeAddTree(nullptr, "Shader Nodetree", ntreeType_Shader->idname); + bNodeTree *ntree = ntreeAddTreeEmbedded( + nullptr, &mat->id, "Shader Nodetree", ntreeType_Shader->idname); bNode *bsdf = add_node(ntree, SH_NODE_BSDF_PRINCIPLED, node_locx_bsdf, node_locy_top); bNode *output = add_node(ntree, SH_NODE_OUTPUT_MATERIAL, node_locx_output, node_locy_top); -- cgit v1.2.3