[Bf-blender-cvs] [bee737bbad5] functions: store list with non-reroute and non-frame nodes explicitely
Jacques Lucke
noreply at git.blender.org
Thu Jul 4 16:46:07 CEST 2019
Commit: bee737bbad54a74b5c94711435b163658647f2c2
Author: Jacques Lucke
Date: Thu Jul 4 14:03:06 2019 +0200
Branches: functions
https://developer.blender.org/rBbee737bbad54a74b5c94711435b163658647f2c2
store list with non-reroute and non-frame nodes explicitely
===================================================================
M source/blender/blenkernel/BKE_node_tree.hpp
M source/blender/blenkernel/intern/node_tree.cpp
M source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
===================================================================
diff --git a/source/blender/blenkernel/BKE_node_tree.hpp b/source/blender/blenkernel/BKE_node_tree.hpp
index e14230c4c20..d41d69ce911 100644
--- a/source/blender/blenkernel/BKE_node_tree.hpp
+++ b/source/blender/blenkernel/BKE_node_tree.hpp
@@ -66,22 +66,37 @@ class IndexedNodeTree {
return rna;
}
+ /**
+ * Get all nodes that are in the btree->nodes list.
+ */
ArrayRef<bNode *> original_nodes() const
{
return m_original_nodes;
}
+ /**
+ * Get all links that are in the btree->links list.
+ */
ArrayRef<bNodeLink *> original_links() const
{
return m_original_links;
}
+ /**
+ * Get all nodes that are not reroutes or frames.
+ */
+ ArrayRef<bNode *> actual_nodes() const
+ {
+ return m_actual_nodes;
+ }
+
ArrayRef<SingleOriginLink> single_origin_links() const;
ArrayRef<bNode *> nodes_with_idname(StringRef idname) const;
ArrayRef<SocketWithNode> linked(bNodeSocket *bsocket) const;
private:
bool is_reroute(bNode *bnode) const;
+ bool is_frame(bNode *bnode) const;
void find_connected_sockets_left(bNodeSocket *bsocket,
SmallVector<SocketWithNode> &r_sockets) const;
@@ -91,6 +106,7 @@ class IndexedNodeTree {
bNodeTree *m_btree;
SmallVector<bNode *> m_original_nodes;
SmallVector<bNodeLink *> m_original_links;
+ SmallVector<bNode *> m_actual_nodes;
SmallMap<bNodeSocket *, bNode *> m_node_by_socket;
SmallMultiMap<bNodeSocket *, SocketWithNode> m_direct_links;
SmallMultiMap<bNodeSocket *, SocketWithNode> m_links;
diff --git a/source/blender/blenkernel/intern/node_tree.cpp b/source/blender/blenkernel/intern/node_tree.cpp
index 09b8b3a269b..423cc50620f 100644
--- a/source/blender/blenkernel/intern/node_tree.cpp
+++ b/source/blender/blenkernel/intern/node_tree.cpp
@@ -17,6 +17,9 @@ IndexedNodeTree::IndexedNodeTree(bNodeTree *btree)
for (bNode *bnode : m_original_nodes) {
m_nodes_by_idname.add(bnode->idname, bnode);
+ if (!this->is_reroute(bnode) && !this->is_frame(bnode)) {
+ m_actual_nodes.append(bnode);
+ }
}
for (bNodeLink *blink : m_original_links) {
@@ -73,6 +76,11 @@ bool IndexedNodeTree::is_reroute(bNode *bnode) const
return STREQ(bnode->idname, "NodeReroute");
}
+bool IndexedNodeTree::is_frame(bNode *bnode) const
+{
+ return STREQ(bnode->idname, "NodeFrame");
+}
+
/* Queries
*******************************************************/
diff --git a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
index 58dd0ac7c1f..7ebfac09c61 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
@@ -20,11 +20,6 @@ static bool is_output_node(const bNode *bnode)
return STREQ(bnode->idname, "fn_FunctionOutputNode");
}
-static bool is_reroute_node(const bNode *bnode)
-{
- return STREQ(bnode->idname, "NodeReroute");
-}
-
static void insert_input_node(BTreeGraphBuilder &builder, bNode *bnode)
{
FunctionBuilder fn_builder;
@@ -57,13 +52,10 @@ static void insert_output_node(BTreeGraphBuilder &builder, bNode *bnode)
static bool insert_functions_for_bnodes(BTreeGraphBuilder &builder, GraphInserters &inserters)
{
- for (bNode *bnode : builder.indexed_btree().original_nodes()) {
+ for (bNode *bnode : builder.indexed_btree().actual_nodes()) {
if (is_input_node(bnode) || is_output_node(bnode)) {
continue;
}
- if (is_reroute_node(bnode)) {
- continue;
- }
if (!inserters.insert_node(builder, bnode)) {
return false;
More information about the Bf-blender-cvs
mailing list