[Bf-blender-cvs] [49049a3e6fc] temp-derived-node-tree-refactor: simplify getting input values for socket
Jacques Lucke
noreply at git.blender.org
Thu Mar 4 16:55:55 CET 2021
Commit: 49049a3e6fc63aae49fdbdff36c61d96b9a91b6f
Author: Jacques Lucke
Date: Thu Mar 4 16:55:44 2021 +0100
Branches: temp-derived-node-tree-refactor
https://developer.blender.org/rB49049a3e6fc63aae49fdbdff36c61d96b9a91b6f
simplify getting input values for socket
===================================================================
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 5f48466ba07..df1c1032d89 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -306,41 +306,30 @@ class GeometryNodesEvaluator {
socket_to_compute.foreach_origin_socket(
[&](XXXSocket socket) { from_sockets.append(socket); });
- const CPPType &type = *blender::nodes::socket_cpp_type_get(*socket_to_compute->typeinfo());
-
- if (from_sockets.is_empty()) {
- /* The input is not connected, use the value from the socket itself. */
- return {get_unlinked_input_value(socket_to_compute, type)};
- }
-
/* Multi-input sockets contain a vector of inputs. */
if (socket_to_compute->is_multi_input_socket()) {
Vector<GMutablePointer> values;
for (const XXXSocket from_socket : from_sockets) {
- if (from_socket->is_output()) {
- XXXOutputSocket from_output_socket{from_socket};
- const std::pair<XXXInputSocket, XXXOutputSocket> key = std::make_pair(
- socket_to_compute, from_output_socket);
- std::optional<GMutablePointer> value = value_by_input_.pop_try(key);
- if (value.has_value()) {
- values.append(*value);
- }
- else {
- this->compute_output_and_forward(from_output_socket);
- GMutablePointer value = value_by_input_.pop(key);
- values.append(value);
- }
- }
- else {
- XXXInputSocket from_input_socket{from_socket};
- GMutablePointer value = get_unlinked_input_value(from_input_socket, type);
- values.append(value);
- }
+ GMutablePointer value = get_input_from_incoming_link(socket_to_compute, from_socket);
+ values.append(value);
}
return values;
}
+ if (from_sockets.is_empty()) {
+ /* The input is not connected, use the value from the socket itself. */
+ const CPPType &type = *blender::nodes::socket_cpp_type_get(*socket_to_compute->typeinfo());
+ return {get_unlinked_input_value(socket_to_compute, type)};
+ }
+
const XXXSocket from_socket = from_sockets[0];
+ GMutablePointer value = this->get_input_from_incoming_link(socket_to_compute, from_socket);
+ return {value};
+ }
+
+ GMutablePointer get_input_from_incoming_link(const XXXInputSocket socket_to_compute,
+ const XXXSocket from_socket)
+ {
if (from_socket->is_output()) {
const XXXOutputSocket from_output_socket{from_socket};
const std::pair<XXXInputSocket, XXXOutputSocket> key = std::make_pair(socket_to_compute,
@@ -356,6 +345,8 @@ class GeometryNodesEvaluator {
return {value_by_input_.pop(key)};
}
+ /* Get value from an unlinked input socket. */
+ const CPPType &type = *blender::nodes::socket_cpp_type_get(*socket_to_compute->typeinfo());
const XXXInputSocket from_input_socket{from_socket};
return {get_unlinked_input_value(from_input_socket, type)};
}
More information about the Bf-blender-cvs
mailing list