[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