[Bf-blender-cvs] [7a3e5c1dadf] functions: simplify creating particle function
Jacques Lucke
noreply at git.blender.org
Thu Jul 25 15:10:40 CEST 2019
Commit: 7a3e5c1dadf01165fd36636f38c26d16fada5647
Author: Jacques Lucke
Date: Thu Jul 25 14:31:25 2019 +0200
Branches: functions
https://developer.blender.org/rB7a3e5c1dadf01165fd36636f38c26d16fada5647
simplify creating particle function
===================================================================
M source/blender/simulations/bparticles/inserters.cpp
M source/blender/simulations/bparticles/inserters.hpp
M source/blender/simulations/bparticles/node_frontend.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/inserters.cpp b/source/blender/simulations/bparticles/inserters.cpp
index b38237b75e6..d33d0f0063d 100644
--- a/source/blender/simulations/bparticles/inserters.cpp
+++ b/source/blender/simulations/bparticles/inserters.cpp
@@ -54,10 +54,10 @@ static ValueOrError<SharedFunction> create_function__emitter_inputs(VirtualNode
return fn;
}
-static ValueOrError<SharedFunction> create_function__action_inputs(VirtualNode *action_vnode,
- VTreeDataGraph &data_graph)
+ValueOrError<ParticleFunction> create_particle_function(VirtualNode *main_vnode,
+ VTreeDataGraph &data_graph)
{
- Vector<DFGraphSocket> sockets_to_compute = find_input_data_sockets(action_vnode, data_graph);
+ Vector<DFGraphSocket> sockets_to_compute = find_input_data_sockets(main_vnode, data_graph);
auto dependencies = data_graph.find_placeholder_dependencies(sockets_to_compute);
FunctionBuilder fn_builder;
@@ -82,29 +82,12 @@ static ValueOrError<SharedFunction> create_function__action_inputs(VirtualNode *
fn_builder.add_input(name_prefix + vsocket->name(), type);
}
- SharedFunction fn = fn_builder.build(action_vnode->name());
-
+ SharedFunction fn = fn_builder.build(main_vnode->name());
FunctionGraph fgraph(data_graph.graph(), dependencies.sockets, sockets_to_compute);
FN::fgraph_add_TupleCallBody(fn, fgraph);
- return fn;
-}
-
-ValueOrError<SharedFunction> create_function__offset_handler_inputs(
- VirtualNode *offset_handler_vnode, VTreeDataGraph &data_graph)
-{
- return create_function__action_inputs(offset_handler_vnode, data_graph);
-}
-ValueOrError<SharedFunction> create_function__force_inputs(VirtualNode *force_vnode,
- VTreeDataGraph &data_graph)
-{
- return create_function__action_inputs(force_vnode, data_graph);
-}
-
-ValueOrError<SharedFunction> create_function__event_inputs(VirtualNode *event_vnode,
- VTreeDataGraph &data_graph)
-{
- return create_function__action_inputs(event_vnode, data_graph);
+ ParticleFunction particle_function(fn);
+ return particle_function;
}
static std::unique_ptr<Action> build_action(BuildContext &ctx,
@@ -201,7 +184,7 @@ static std::unique_ptr<Action> build_action(BuildContext &ctx,
BLI_assert(start->is_input());
VirtualNode *vnode = start->vnode();
- auto fn_or_error = create_function__action_inputs(vnode, ctx.data_graph);
+ auto fn_or_error = create_particle_function(vnode, ctx.data_graph);
if (fn_or_error.is_error()) {
return std::unique_ptr<Action>(new NoneAction());
}
diff --git a/source/blender/simulations/bparticles/inserters.hpp b/source/blender/simulations/bparticles/inserters.hpp
index 7148e0578b5..a98f86e8b9b 100644
--- a/source/blender/simulations/bparticles/inserters.hpp
+++ b/source/blender/simulations/bparticles/inserters.hpp
@@ -36,14 +36,8 @@ struct BuildContext {
}
};
-ValueOrError<SharedFunction> create_function__offset_handler_inputs(
- VirtualNode *offset_handler_vnode, VTreeDataGraph &data_graph);
-
-ValueOrError<SharedFunction> create_function__force_inputs(VirtualNode *force_vnode,
- VTreeDataGraph &data_graph);
-
-ValueOrError<SharedFunction> create_function__event_inputs(VirtualNode *event_vnode,
- VTreeDataGraph &data_graph);
+ValueOrError<ParticleFunction> create_particle_function(VirtualNode *main_vnode,
+ VTreeDataGraph &data_graph);
using ForceFromNodeCallback = std::function<std::unique_ptr<Force>(
BuildContext &ctx, VirtualNode *vnode, ParticleFunction compute_inputs_fn)>;
diff --git a/source/blender/simulations/bparticles/node_frontend.cpp b/source/blender/simulations/bparticles/node_frontend.cpp
index 871c6d2c1eb..2410e05b428 100644
--- a/source/blender/simulations/bparticles/node_frontend.cpp
+++ b/source/blender/simulations/bparticles/node_frontend.cpp
@@ -69,13 +69,12 @@ std::unique_ptr<StepDescription> step_description_from_node_tree(VirtualNodeTree
for (VirtualNode *vnode : vtree.nodes_with_idname(item.key)) {
for (VirtualSocket *linked : vnode->output(0)->links()) {
if (is_particle_type_node(linked->vnode())) {
- auto fn_or_error = create_function__force_inputs(vnode, data_graph);
+ auto fn_or_error = create_particle_function(vnode, data_graph);
if (fn_or_error.is_error()) {
continue;
}
- ParticleFunction fn(fn_or_error.extract_value());
- auto force = item.value(ctx, vnode, std::move(fn));
+ auto force = item.value(ctx, vnode, fn_or_error.extract_value());
if (force) {
forces.add(linked->vnode()->name(), force.release());
}
@@ -89,14 +88,12 @@ std::unique_ptr<StepDescription> step_description_from_node_tree(VirtualNodeTree
for (VirtualNode *vnode : vtree.nodes_with_idname(item.key)) {
for (VirtualSocket *linked : vnode->output(0)->links()) {
if (is_particle_type_node(linked->vnode())) {
- auto fn_or_error = create_function__offset_handler_inputs(vnode, data_graph);
+ auto fn_or_error = create_particle_function(vnode, data_graph);
if (fn_or_error.is_error()) {
continue;
}
- ParticleFunction fn(fn_or_error.extract_value());
-
- auto listener = item.value(ctx, vnode, std::move(fn));
+ auto listener = item.value(ctx, vnode, fn_or_error.extract_value());
if (listener) {
offset_handlers.add(linked->vnode()->name(), listener.release());
}
@@ -110,14 +107,12 @@ std::unique_ptr<StepDescription> step_description_from_node_tree(VirtualNodeTree
for (VirtualNode *vnode : vtree.nodes_with_idname(item.key)) {
for (VirtualSocket *linked : vnode->input(0)->links()) {
if (is_particle_type_node(linked->vnode())) {
- auto fn_or_error = create_function__event_inputs(vnode, data_graph);
+ auto fn_or_error = create_particle_function(vnode, data_graph);
if (fn_or_error.is_error()) {
continue;
}
- ParticleFunction fn(fn_or_error.extract_value());
-
- auto event = item.value(ctx, vnode, std::move(fn));
+ auto event = item.value(ctx, vnode, fn_or_error.extract_value());
if (event) {
events.add(linked->vnode()->name(), event.release());
}
More information about the Bf-blender-cvs
mailing list