From ac134c5a51898174a69071f2d77ea375bd4d10d4 Mon Sep 17 00:00:00 2001 From: Habib Gahbiche Date: Tue, 5 Aug 2025 11:39:56 +0200 Subject: [PATCH] Compositor: Use frame for Map Value node versioning Ref: #143441 The Map Value node was removed. During versioning, it gets replaced by other equivalent nodes. This PR adds a frame around the newly created nodes with a label that clarifies the reason these nodes were added. Pull Request: https://projects.blender.org/blender/blender/pulls/143800 --- .../blender/blenloader/intern/versioning_500.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/source/blender/blenloader/intern/versioning_500.cc b/source/blender/blenloader/intern/versioning_500.cc index b1f8709666a..27ebd74ebfd 100644 --- a/source/blender/blenloader/intern/versioning_500.cc +++ b/source/blender/blenloader/intern/versioning_500.cc @@ -892,6 +892,12 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) } } + bNode *frame = blender::bke::node_add_static_node(nullptr, *node_tree, NODE_FRAME); + frame->parent = node->parent; + STRNCPY(frame->label, IFACE_("Versioning: Map Value node was removed")); + NodeFrame *frame_data = static_cast(frame->storage); + frame_data->label_size = 10; + /* If the value input is not connected, add a value node with the computed value. */ if (!value_link) { const float value = static_cast(value_input->default_value)->value; @@ -903,7 +909,8 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) bNode &value_node = version_node_add_empty(*node_tree, "ShaderNodeValue"); bNodeSocket &value_output = version_node_add_socket( *node_tree, value_node, SOCK_OUT, "NodeSocketFloat", "Value"); - value_node.parent = node->parent; + + value_node.parent = frame; value_node.location[0] = node->location[0]; value_node.location[1] = node->location[1]; @@ -939,7 +946,7 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) bNodeSocket &add_output = version_node_add_socket( *node_tree, add_node, SOCK_OUT, "NodeSocketFloat", "Value"); - add_node.parent = node->parent; + add_node.parent = frame; add_node.custom1 = NODE_MATH_ADD; add_node.location[0] = node->location[0]; add_node.location[1] = node->location[1]; @@ -956,7 +963,7 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) /* Add a multiply node to multiply by the size. */ bNode &multiply_node = version_node_add_empty(*node_tree, "ShaderNodeMath"); - multiply_node.parent = node->parent; + multiply_node.parent = frame; multiply_node.custom1 = NODE_MATH_MULTIPLY; multiply_node.location[0] = add_node.location[0]; multiply_node.location[1] = add_node.location[1] - 40.0f; @@ -983,7 +990,7 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) if (use_min) { /* Add a maximum node to clamp by the minimum. */ bNode &max_node = version_node_add_empty(*node_tree, "ShaderNodeMath"); - max_node.parent = node->parent; + max_node.parent = frame; max_node.custom1 = NODE_MATH_MAXIMUM; max_node.location[0] = final_node->location[0]; max_node.location[1] = final_node->location[1] - 40.0f; @@ -1010,7 +1017,7 @@ static void do_version_map_value_node(bNodeTree *node_tree, bNode *node) if (use_max) { /* Add a minimum node to clamp by the maximum. */ bNode &min_node = version_node_add_empty(*node_tree, "ShaderNodeMath"); - min_node.parent = node->parent; + min_node.parent = frame; min_node.custom1 = NODE_MATH_MINIMUM; min_node.location[0] = final_node->location[0]; min_node.location[1] = final_node->location[1] - 40.0f;