diff options
author | Jacques Lucke <jacques@blender.org> | 2021-04-01 11:38:19 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-04-01 11:38:19 +0300 |
commit | 3af1903ac7e7299c7232df2646020c38b0960025 (patch) | |
tree | 3add46e35fa7ec222f8e1e93e2ff3721b9c0cb09 | |
parent | 214a49aae418d2e65e8fba217a1627abef352e53 (diff) |
log more socket values
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes.cc | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index eeb3bf1c5bb..63bd969a18d 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -301,7 +301,7 @@ static DNode find_active_node_instance(const SpaceNode &snode, const DerivedNode class GeometryNodesEvaluator { public: - using SocketValueFn = std::function<void(DSocket, blender::fn::GPointer)>; + using SocketValueFn = std::function<void(DSocket, Span<GPointer>)>; private: blender::LinearAllocator<> allocator_; @@ -437,7 +437,9 @@ class GeometryNodesEvaluator { GValueMap<StringRef> node_inputs_map{allocator_}; for (const InputSocketRef *input_socket : node->inputs()) { if (input_socket->is_available()) { - Vector<GMutablePointer> values = this->get_input_values({node.context(), input_socket}); + DInputSocket dsocket{node.context(), input_socket}; + Vector<GMutablePointer> values = this->get_input_values(dsocket); + this->handle_socket_value(dsocket, values); for (int i = 0; i < values.size(); ++i) { /* Values from Multi Input Sockets are stored in input map with the format * <identifier>[<index>]. */ @@ -492,13 +494,23 @@ class GeometryNodesEvaluator { } } - void handle_socket_value(const DSocket socket, blender::fn::GPointer value) + void handle_socket_value(const DSocket socket, Span<GPointer> values) { if (socket_value_fn_) { - socket_value_fn_(socket, value); + socket_value_fn_(socket, values); } } + void handle_socket_value(const DSocket socket, Span<GMutablePointer> values) + { + this->handle_socket_value(socket, values.cast<GPointer>()); + } + + void handle_socket_value(const DSocket socket, GPointer value) + { + this->handle_socket_value(socket, Span<GPointer>(&value, 1)); + } + void execute_node(const DNode node, GeoNodeExecParams params) { const bNode &bnode = params.node(); @@ -1195,10 +1207,12 @@ static GeometrySet compute_geometry(const DerivedNodeTree &tree, Vector<DInputSocket> group_outputs; group_outputs.append({root_context, &socket_to_compute}); - auto handle_socket_value = [&](const DSocket socket, const GPointer value) { - std::stringstream ss; - value.type()->debug_print(value.get(), ss); - std::cout << socket->name() << ": " << ss.str() << "\n"; + auto handle_socket_value = [&](const DSocket socket, const Span<GPointer> values) { + for (GPointer value : values) { + std::stringstream ss; + value.type()->debug_print(value.get(), ss); + std::cout << socket->name() << ": " << ss.str() << "\n"; + } }; GeometryNodesEvaluator evaluator{group_inputs, |