diff --git a/source/blender/blenkernel/intern/bake_items_socket.cc b/source/blender/blenkernel/intern/bake_items_socket.cc index 945a4beea1f..204e4f0814f 100644 --- a/source/blender/blenkernel/intern/bake_items_socket.cc +++ b/source/blender/blenkernel/intern/bake_items_socket.cc @@ -11,15 +11,6 @@ namespace blender::bke::bake { -static const CPPType &get_socket_cpp_type(const eNodeSocketDatatype socket_type) -{ - const char *socket_idname = nodeStaticSocketType(socket_type, 0); - const bNodeSocketType *typeinfo = nodeSocketTypeFind(socket_idname); - BLI_assert(typeinfo); - BLI_assert(typeinfo->geometry_nodes_cpp_type); - return *typeinfo->geometry_nodes_cpp_type; -} - Array> move_socket_values_to_bake_items(const Span socket_values, const BakeSocketConfig &config) { @@ -201,6 +192,14 @@ static void rename_attributes(const Span geometries, } } +static void default_initialize_socket_value(const eNodeSocketDatatype socket_type, void *r_value) +{ + const char *socket_idname = nodeStaticSocketType(socket_type, 0); + const bNodeSocketType *typeinfo = nodeSocketTypeFind(socket_idname); + typeinfo->geometry_nodes_cpp_type->copy_construct(typeinfo->geometry_nodes_default_cpp_value, + r_value); +} + void move_bake_items_to_socket_values( const Span bake_items, const BakeSocketConfig &config, @@ -214,11 +213,10 @@ void move_bake_items_to_socket_values( for (const int i : bake_items.index_range()) { const eNodeSocketDatatype socket_type = config.types[i]; - const CPPType &type = get_socket_cpp_type(socket_type); BakeItem *bake_item = bake_items[i]; void *r_socket_value = r_socket_values[i]; if (bake_item == nullptr) { - type.value_initialize(r_socket_value); + default_initialize_socket_value(socket_type, r_socket_value); continue; } if (!copy_bake_item_to_socket_value( @@ -228,7 +226,7 @@ void move_bake_items_to_socket_values( attribute_map, r_socket_value)) { - type.value_initialize(r_socket_value); + default_initialize_socket_value(socket_type, r_socket_value); continue; } if (socket_type == SOCK_GEOMETRY) { @@ -253,11 +251,10 @@ void copy_bake_items_to_socket_values( for (const int i : bake_items.index_range()) { const eNodeSocketDatatype socket_type = config.types[i]; - const CPPType &type = get_socket_cpp_type(socket_type); const BakeItem *bake_item = bake_items[i]; void *r_socket_value = r_socket_values[i]; if (bake_item == nullptr) { - type.value_initialize(r_socket_value); + default_initialize_socket_value(socket_type, r_socket_value); continue; } if (!copy_bake_item_to_socket_value( @@ -267,7 +264,7 @@ void copy_bake_items_to_socket_values( attribute_map, r_socket_value)) { - type.value_initialize(r_socket_value); + default_initialize_socket_value(socket_type, r_socket_value); continue; } if (socket_type == SOCK_GEOMETRY) {