Commit: 776562623c4866008e72d12b6aec47ea1abe9b7b
Author: Jacques Lucke
Date:   Sat Dec 14 11:35:27 2019 +0100
Branches: functions
https://developer.blender.org/rB776562623c4866008e72d12b6aec47ea1abe9b7b

new Multi Execute node

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

M       release/scripts/startup/nodes/bparticle_nodes/always_execute.py
M       source/blender/simulations/bparticles/node_frontend.cpp

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

diff --git a/release/scripts/startup/nodes/bparticle_nodes/always_execute.py 
b/release/scripts/startup/nodes/bparticle_nodes/always_execute.py
index 15f035d583e..61772696bed 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/always_execute.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/always_execute.py
@@ -13,3 +13,14 @@ class AlwaysExecuteNode(bpy.types.Node, SimulationNode):
     def declaration(self, builder: NodeBuilder):
         builder.execute_input("execute", "Execute", "execute__prop")
         builder.influences_output("influence", "Influence")
+
+
+class MultiExecuteNode(bpy.types.Node, SimulationNode):
+    bl_idname = "fn_MultiExecuteNode"
+    bl_label = "Multi Execute"
+
+    execute__prop: NodeBuilder.ExecuteInputProperty()
+
+    def declaration(self, builder: NodeBuilder):
+        builder.execute_input("execute", "Execute", "execute__prop")
+        builder.execute_output("execute", "Execute")
diff --git a/source/blender/simulations/bparticles/node_frontend.cpp 
b/source/blender/simulations/bparticles/node_frontend.cpp
index 055a49a395e..2c99d2e9152 100644
--- a/source/blender/simulations/bparticles/node_frontend.cpp
+++ b/source/blender/simulations/bparticles/node_frontend.cpp
@@ -361,10 +361,15 @@ class XSocketActionBuilder {
   {
     BLI_STATIC_ASSERT((std::is_base_of<Action, T>::value), "");
     T &action = this->construct<T>(std::forward<Args>(args)...);
-    m_built_action = &action;
+    this->set(action);
     return action;
   }
 
+  void set(Action &action)
+  {
+    m_built_action = &action;
+  }
+
   ParticleFunction *particle_function_for_inputs()
   {
     return 
m_inlined_tree_data.particle_function_for_all_inputs(m_execute_xsocket.node());
@@ -574,6 +579,12 @@ static void ACTION_set_attribute(XSocketActionBuilder 
&builder)
   builder.set_constructed<SetAttributeAction>(attribute_name, type, 
*inputs_fn);
 }
 
+static void ACTION_multi_execute(XSocketActionBuilder &builder)
+{
+  Action &action = builder.build_input_action_list("Execute", 
builder.system_names());
+  builder.set(action);
+}
+
 BLI_LAZY_INIT(StringMap<ActionParserCallback>, get_action_parsers)
 {
   StringMap<ActionParserCallback> map;
@@ -587,6 +598,7 @@ BLI_LAZY_INIT(StringMap<ActionParserCallback>, 
get_action_parsers)
   map.add_new("fn_AddToGroupNode", ACTION_add_to_group);
   map.add_new("fn_RemoveFromGroupNode", ACTION_remove_from_group);
   map.add_new("fn_SetParticleAttributeNode", ACTION_set_attribute);
+  map.add_new("fn_MultiExecuteNode", ACTION_multi_execute);
   return map;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to