From 3af1903ac7e7299c7232df2646020c38b0960025 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 1 Apr 2021 10:38:19 +0200 Subject: log more socket values --- source/blender/modifiers/intern/MOD_nodes.cc | 30 ++++++++++++++++++++-------- 1 file 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; + using SocketValueFn = std::function)>; private: blender::LinearAllocator<> allocator_; @@ -437,7 +437,9 @@ class GeometryNodesEvaluator { GValueMap node_inputs_map{allocator_}; for (const InputSocketRef *input_socket : node->inputs()) { if (input_socket->is_available()) { - Vector values = this->get_input_values({node.context(), input_socket}); + DInputSocket dsocket{node.context(), input_socket}; + Vector 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 * []. */ @@ -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 values) { if (socket_value_fn_) { - socket_value_fn_(socket, value); + socket_value_fn_(socket, values); } } + void handle_socket_value(const DSocket socket, Span values) + { + this->handle_socket_value(socket, values.cast()); + } + + void handle_socket_value(const DSocket socket, GPointer value) + { + this->handle_socket_value(socket, Span(&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 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 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, -- cgit v1.2.3