Commit: 821b7e53607003e2431dcd011d2926f612fe6b41
Author: Jacques Lucke
Date:   Fri Jul 5 10:48:44 2019 +0200
Branches: functions
https://developer.blender.org/rB821b7e53607003e2431dcd011d2926f612fe6b41

initial build action from nodes

===================================================================

M       source/blender/simulations/bparticles/c_wrapper.cpp

===================================================================

diff --git a/source/blender/simulations/bparticles/c_wrapper.cpp 
b/source/blender/simulations/bparticles/c_wrapper.cpp
index 7fb1ca0f39e..15af0816d56 100644
--- a/source/blender/simulations/bparticles/c_wrapper.cpp
+++ b/source/blender/simulations/bparticles/c_wrapper.cpp
@@ -219,6 +219,34 @@ static ArrayRef<bNode *> 
get_particle_type_nodes(IndexedNodeTree &indexed_tree)
   return indexed_tree.nodes_with_idname("bp_ParticleTypeNode");
 }
 
+static Action *build_action(SocketWithNode start,
+                            IndexedNodeTree &indexed_tree,
+                            FN::DataFlowNodes::GeneratedGraph &data_graph,
+                            ModifierStepDescription &step_description)
+{
+  if (start.socket->in_out == SOCK_OUT) {
+    auto linked = indexed_tree.linked(start.socket);
+    if (linked.size() == 0) {
+      return ACTION_none();
+    }
+    else if (linked.size() == 1) {
+      return build_action(linked[0], indexed_tree, data_graph, 
step_description);
+    }
+    else {
+      return nullptr;
+    }
+  }
+
+  BLI_assert(start.socket->in_out == SOCK_IN);
+  bNode *bnode = start.node;
+  if (STREQ(bnode->idname, "bp_KillParticleNode")) {
+    return ACTION_kill();
+  }
+  else {
+    return nullptr;
+  }
+}
+
 static void INSERT_EMITTER_mesh_surface(bNode *emitter_node,
                                         IndexedNodeTree &indexed_tree,
                                         FN::DataFlowNodes::GeneratedGraph 
&UNUSED(data_graph),
@@ -344,7 +372,10 @@ static void INSERT_EVENT_age_reached(bNode *event_node,
     bNode *type_node = linked.node;
 
     EventFilter *event_filter = new 
AgeReachedEventFilter(compute_age_function);
-    Action *action = ACTION_kill();
+    Action *action = build_action({(bNodeSocket *)event_node->outputs.first, 
event_node},
+                                  indexed_tree,
+                                  data_graph,
+                                  step_description);
     Event *event = new EventFilterWithAction(event_filter, action);
     
step_description.m_types.lookup_ref(type_node->name)->m_events.append(event);
   }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to