Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-04-28 16:39:30 +0300
committerHans Goudey <h.goudey@me.com>2022-04-28 16:39:30 +0300
commit0ad73bb9655f04afb5ad56174d8fb416cded3e4c (patch)
treee427b3514ee5165843f9a5dc2724d85c92fd215a /source/blender/blenkernel
parentb0e47ffdcf13cd00c42e6cab4c3556679ad9fea4 (diff)
Geometry Nodes: Add default attribute name to field inputs/outputs
Geometry node group inputs and outputs get a new property that controls the attribute name used for that field input/output when assigning the node group to a modifier for the first time. If the default name is assigned to an input, the default "Use attribute name" is true . In order to properly detect when a node group is first assigned, the modifier now clears its properties when clearing the node group. Ref T96707 Differential Revision: https://developer.blender.org/D14761
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/node.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index 4acccca322a..d3f61d381f2 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -487,6 +487,9 @@ static void write_node_socket(BlendWriter *writer, bNodeSocket *sock)
IDP_BlendWrite(writer, sock->prop);
}
+ /* This property should only be used for group node "interface" sockets. */
+ BLI_assert(sock->default_attribute_name == nullptr);
+
write_node_socket_default_value(writer, sock);
}
static void write_node_socket_interface(BlendWriter *writer, bNodeSocket *sock)
@@ -497,6 +500,8 @@ static void write_node_socket_interface(BlendWriter *writer, bNodeSocket *sock)
IDP_BlendWrite(writer, sock->prop);
}
+ BLO_write_string(writer, sock->default_attribute_name);
+
write_node_socket_default_value(writer, sock);
}
@@ -650,6 +655,7 @@ static void direct_link_node_socket(BlendDataReader *reader, bNodeSocket *sock)
sock->typeinfo = nullptr;
BLO_read_data_address(reader, &sock->storage);
BLO_read_data_address(reader, &sock->default_value);
+ BLO_read_data_address(reader, &sock->default_attribute_name);
sock->total_inputs = 0; /* Clear runtime data set before drawing. */
sock->cache = nullptr;
sock->declaration = nullptr;
@@ -2161,6 +2167,9 @@ static void node_socket_copy(bNodeSocket *sock_dst, const bNodeSocket *sock_src,
}
}
+ sock_dst->default_attribute_name = static_cast<char *>(
+ MEM_dupallocN(sock_src->default_attribute_name));
+
sock_dst->stack_index = 0;
/* XXX some compositor nodes (e.g. image, render layers) still store
* some persistent buffer data here, need to clear this to avoid dangling pointers. */