[Bf-blender-cvs] [2f948952b5e] functions: store an index per virtual socket
Jacques Lucke
noreply at git.blender.org
Thu Aug 1 18:22:53 CEST 2019
Commit: 2f948952b5eacb166eeaa97c3c4c95d886833a9f
Author: Jacques Lucke
Date: Thu Aug 1 10:16:36 2019 +0200
Branches: functions
https://developer.blender.org/rB2f948952b5eacb166eeaa97c3c4c95d886833a9f
store an index per virtual socket
===================================================================
M source/blender/blenkernel/BKE_node_tree.hpp
M source/blender/blenkernel/intern/node_tree.cpp
===================================================================
diff --git a/source/blender/blenkernel/BKE_node_tree.hpp b/source/blender/blenkernel/BKE_node_tree.hpp
index 59807d701e6..3d50766f89f 100644
--- a/source/blender/blenkernel/BKE_node_tree.hpp
+++ b/source/blender/blenkernel/BKE_node_tree.hpp
@@ -39,6 +39,7 @@ class VirtualNodeTree {
Vector<VirtualSocket *> m_inputs_with_links;
MultiMap<std::string, VirtualNode *> m_nodes_by_idname;
MonotonicAllocator<> m_allocator;
+ uint m_socket_counter = 0;
public:
void add_all_of_tree(bNodeTree *btree);
@@ -74,6 +75,11 @@ class VirtualNodeTree {
return m_frozen;
}
+ uint socket_count()
+ {
+ return m_socket_counter;
+ }
+
private:
void initialize_direct_links();
void initialize_links();
@@ -152,6 +158,7 @@ class VirtualSocket {
VirtualNode *m_vnode;
bNodeTree *m_btree;
bNodeSocket *m_bsocket;
+ uint m_id;
ArrayRef<VirtualSocket *> m_direct_links;
ArrayRef<VirtualSocket *> m_links;
@@ -177,6 +184,11 @@ class VirtualSocket {
return m_btree;
}
+ uint id()
+ {
+ return m_id;
+ }
+
ID *btree_id()
{
return &m_btree->id;
diff --git a/source/blender/blenkernel/intern/node_tree.cpp b/source/blender/blenkernel/intern/node_tree.cpp
index a50eb9f3e54..7802a1c12db 100644
--- a/source/blender/blenkernel/intern/node_tree.cpp
+++ b/source/blender/blenkernel/intern/node_tree.cpp
@@ -11,19 +11,19 @@ void VirtualNodeTree::add_all_of_tree(bNodeTree *btree)
node_mapping.add_new(bnode, vnode);
}
for (bNodeLink *blink : BKE::bLinkList(btree->links)) {
- VirtualNode *from_node = node_mapping.lookup(blink->fromnode);
- VirtualNode *to_node = node_mapping.lookup(blink->tonode);
+ VirtualNode *from_vnode = node_mapping.lookup(blink->fromnode);
+ VirtualNode *to_vnode = node_mapping.lookup(blink->tonode);
VirtualSocket *from_vsocket = nullptr;
VirtualSocket *to_vsocket = nullptr;
- for (VirtualSocket *output : from_node->outputs()) {
+ for (VirtualSocket *output : from_vnode->outputs()) {
if (output->bsocket() == blink->fromsock) {
from_vsocket = output;
break;
}
}
- for (VirtualSocket *input : to_node->inputs()) {
+ for (VirtualSocket *input : to_vnode->inputs()) {
if (input->bsocket() == blink->tosock) {
to_vsocket = input;
break;
@@ -60,6 +60,7 @@ VirtualNode *VirtualNodeTree::add_bnode(bNodeTree *btree, bNode *bnode)
vsocket.m_vnode = vnode;
vsocket.m_btree = btree;
vsocket.m_bsocket = original_inputs[i];
+ vsocket.m_id = m_socket_counter++;
vnode->m_inputs[i] = &vsocket;
}
for (uint i = 0; i < original_outputs.size(); i++) {
@@ -68,6 +69,7 @@ VirtualNode *VirtualNodeTree::add_bnode(bNodeTree *btree, bNode *bnode)
vsocket.m_vnode = vnode;
vsocket.m_btree = btree;
vsocket.m_bsocket = original_outputs[i];
+ vsocket.m_id = m_socket_counter++;
vnode->m_outputs[i] = &vsocket;
}
More information about the Bf-blender-cvs
mailing list