[Bf-blender-cvs] [a2a8b9e82fc] temp-geometry-nodes-evaluator-refactor: fixes
Jacques Lucke
noreply at git.blender.org
Wed Aug 31 16:08:08 CEST 2022
Commit: a2a8b9e82fc7135abaf49a678cde4235769af80b
Author: Jacques Lucke
Date: Wed Aug 31 15:58:20 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rBa2a8b9e82fc7135abaf49a678cde4235769af80b
fixes
===================================================================
M source/blender/modifiers/intern/MOD_nodes.cc
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 909b2c7b0f8..0c79672c30e 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -764,35 +764,37 @@ void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
}
static void initialize_group_input(NodesModifierData &nmd,
- const bNodeSocket &socket,
+ const bNodeSocket &interface_socket,
+ const int input_index,
void *r_value)
{
- const bNodeSocketType &socket_type = *socket.typeinfo;
- const eNodeSocketDatatype socket_data_type = static_cast<eNodeSocketDatatype>(socket.type);
+ const bNodeSocketType &socket_type = *interface_socket.typeinfo;
+ const eNodeSocketDatatype socket_data_type = static_cast<eNodeSocketDatatype>(
+ interface_socket.type);
if (nmd.settings.properties == nullptr) {
- socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+ socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
return;
}
const IDProperty *property = IDP_GetPropertyFromGroup(nmd.settings.properties,
- socket.identifier);
+ interface_socket.identifier);
if (property == nullptr) {
- socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+ socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
return;
}
- if (!id_property_type_matches_socket(socket, *property)) {
- socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+ if (!id_property_type_matches_socket(interface_socket, *property)) {
+ socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
return;
}
- if (!input_has_attribute_toggle(*nmd.node_group, socket.index())) {
+ if (!input_has_attribute_toggle(*nmd.node_group, input_index)) {
init_socket_cpp_value_from_property(*property, socket_data_type, r_value);
return;
}
const IDProperty *property_use_attribute = IDP_GetPropertyFromGroup(
- nmd.settings.properties, (socket.identifier + use_attribute_suffix).c_str());
+ nmd.settings.properties, (interface_socket.identifier + use_attribute_suffix).c_str());
const IDProperty *property_attribute_name = IDP_GetPropertyFromGroup(
- nmd.settings.properties, (socket.identifier + attribute_name_suffix).c_str());
+ nmd.settings.properties, (interface_socket.identifier + attribute_name_suffix).c_str());
if (property_use_attribute == nullptr || property_attribute_name == nullptr) {
init_socket_cpp_value_from_property(*property, socket_data_type, r_value);
return;
@@ -1144,7 +1146,7 @@ static GeometrySet compute_geometry(const bNodeTree &tree_ref,
const CPPType *type = interface_socket->typeinfo->geometry_nodes_cpp_type;
BLI_assert(type != nullptr); /* Todo */
void *value = allocator.allocate(type->size(), type->alignment());
- initialize_group_input(*nmd, *interface_socket, value);
+ initialize_group_input(*nmd, *interface_socket, input_index, value);
param_inputs[input_index] = {type, value};
inputs_to_destruct.append({type, value});
}
@@ -1247,6 +1249,7 @@ static void modifyGeometry(ModifierData *md,
}
const bNodeTree &tree = *nmd->node_group;
+ tree.ensure_topology_cache();
check_property_socket_sync(ctx->object, md);
/* Todo: Check for link cycles recursively. */
More information about the Bf-blender-cvs
mailing list