[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