[Bf-blender-cvs] [776562623c4] functions: new Multi Execute node

Jacques Lucke noreply at git.blender.org
Sat Dec 14 13:15:41 CET 2019


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;
 }



More information about the Bf-blender-cvs mailing list