[Bf-blender-cvs] [0702871110a] temp-geometry-nodes-viewer-node: handle viewer node in modifier
Jacques Lucke
noreply at git.blender.org
Mon May 31 13:49:55 CEST 2021
Commit: 0702871110a34e22ba8b745bca539cdfe71c3b6b
Author: Jacques Lucke
Date: Mon May 31 13:15:41 2021 +0200
Branches: temp-geometry-nodes-viewer-node
https://developer.blender.org/rB0702871110a34e22ba8b745bca539cdfe71c3b6b
handle viewer node in modifier
===================================================================
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 8fa80025790..30e7c0901e5 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -768,22 +768,6 @@ static Vector<SpaceSpreadsheet *> find_spreadsheet_editors(Main *bmain)
using PreviewSocketMap = blender::MultiValueMap<DSocket, uint64_t>;
-static DSocket try_find_preview_socket_in_node(const DNode node)
-{
- for (const SocketRef *socket : node->outputs()) {
- if (socket->bsocket()->type == SOCK_GEOMETRY) {
- return {node.context(), socket};
- }
- }
- for (const SocketRef *socket : node->inputs()) {
- if (socket->bsocket()->type == SOCK_GEOMETRY &&
- (socket->bsocket()->flag & SOCK_MULTI_INPUT) == 0) {
- return {node.context(), socket};
- }
- }
- return {};
-}
-
static DSocket try_get_socket_to_preview_for_spreadsheet(SpaceSpreadsheet *sspreadsheet,
NodesModifierData *nmd,
const ModifierEvalContext *ctx,
@@ -839,7 +823,17 @@ static DSocket try_get_socket_to_preview_for_spreadsheet(SpaceSpreadsheet *sspre
const NodeTreeRef &tree_ref = context->tree();
for (const NodeRef *node_ref : tree_ref.nodes()) {
if (node_ref->name() == last_context->node_name) {
- return try_find_preview_socket_in_node({context, node_ref});
+ const DNode viewer_node{context, node_ref};
+ DSocket socket_to_view;
+ viewer_node.input(0).foreach_origin_socket(
+ [&](const DSocket socket) { socket_to_view = socket; });
+ if (!socket_to_view) {
+ return {};
+ }
+ bNodeSocket *bsocket = socket_to_view->bsocket();
+ if (bsocket->type == SOCK_GEOMETRY && bsocket->flag != SOCK_MULTI_INPUT) {
+ return socket_to_view;
+ }
}
}
return {};
More information about the Bf-blender-cvs
mailing list