[Bf-blender-cvs] [5e7dc72f114] functions: better function signature for inserters
Jacques Lucke
noreply at git.blender.org
Fri Jul 5 12:26:42 CEST 2019
Commit: 5e7dc72f114a06371379a451949399133b434969
Author: Jacques Lucke
Date: Fri Jul 5 10:24:38 2019 +0200
Branches: functions
https://developer.blender.org/rB5e7dc72f114a06371379a451949399133b434969
better function signature for inserters
===================================================================
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 469d453cf0a..7e0af8f7e39 100644
--- a/source/blender/simulations/bparticles/c_wrapper.cpp
+++ b/source/blender/simulations/bparticles/c_wrapper.cpp
@@ -268,30 +268,32 @@ class IndexedBParticlesTree {
}
};
-typedef std::function<void(
- bNode *bnode, IndexedBParticlesTree &bparticles_tree, SmallVector<Emitter *> &r_emitters)>
- EmitterInserter;
+using EmitterInserter = std::function<void(bNode *bnode,
+ IndexedNodeTree &indexed_tree,
+ FN::DataFlowNodes::GeneratedGraph &data_graph,
+ ModifierStepDescription &step_description)>;
+using EventInserter = EmitterInserter;
-typedef std::function<void(bNode *bnode,
- FN::DataFlowNodes::GeneratedGraph &generated_graph,
- IndexedBParticlesTree &bparticles_tree,
- ModifierStepDescription &step_description)>
- EventInserter;
+static bool is_particle_type_node(bNode *bnode)
+{
+ return STREQ(bnode->idname, "bp_ParticleTypeNode");
+}
static void INSERT_EMITTER_mesh_surface(bNode *emitter_node,
- IndexedBParticlesTree &bparticles_tree,
- SmallVector<Emitter *> &r_emitters)
+ IndexedNodeTree &indexed_tree,
+ FN::DataFlowNodes::GeneratedGraph &UNUSED(data_graph),
+ ModifierStepDescription &step_description)
{
BLI_assert(STREQ(emitter_node->idname, "bp_MeshEmitterNode"));
bNodeSocket *emitter_output = (bNodeSocket *)emitter_node->outputs.first;
- for (SocketWithNode linked : bparticles_tree.base().linked(emitter_output)) {
- if (!bparticles_tree.is_particle_type_node(linked.node)) {
+ for (SocketWithNode linked : indexed_tree.linked(emitter_output)) {
+ if (!is_particle_type_node(linked.node)) {
continue;
}
bNode *type_node = linked.node;
- PointerRNA rna = bparticles_tree.base().get_rna(emitter_node);
+ PointerRNA rna = indexed_tree.get_rna(emitter_node);
Object *object = (Object *)RNA_pointer_get(&rna, "object").id.data;
if (object == nullptr) {
@@ -300,31 +302,32 @@ static void INSERT_EMITTER_mesh_surface(bNode *emitter_node,
Emitter *emitter = EMITTER_mesh_surface(
type_node->name, (Mesh *)object->data, object->obmat, object->obmat, 1.0f);
- r_emitters.append(emitter);
+ step_description.m_emitters.append(emitter);
}
}
static void INSERT_EMITTER_point(bNode *emitter_node,
- IndexedBParticlesTree &bparticles_tree,
- SmallVector<Emitter *> &r_emitters)
+ IndexedNodeTree &indexed_tree,
+ FN::DataFlowNodes::GeneratedGraph &UNUSED(data_graph),
+ ModifierStepDescription &step_description)
{
BLI_assert(STREQ(emitter_node->idname, "bp_PointEmitterNode"));
bNodeSocket *emitter_output = (bNodeSocket *)emitter_node->outputs.first;
- for (SocketWithNode linked : bparticles_tree.base().linked(emitter_output)) {
- if (!bparticles_tree.is_particle_type_node(linked.node)) {
+ for (SocketWithNode linked : indexed_tree.linked(emitter_output)) {
+ if (!is_particle_type_node(linked.node)) {
continue;
}
bNode *type_node = linked.node;
- PointerRNA rna = bparticles_tree.base().get_rna(emitter_node);
+ PointerRNA rna = indexed_tree.get_rna(emitter_node);
float3 position;
RNA_float_get_array(&rna, "position", position);
Emitter *emitter = EMITTER_point(type_node->name, position);
- r_emitters.append(emitter);
+ step_description.m_emitters.append(emitter);
}
}
@@ -359,20 +362,20 @@ class OldKillEvent : public Event {
};
static void INSERT_EVENT_age_reached(bNode *event_node,
- FN::DataFlowNodes::GeneratedGraph &generated_graph,
- IndexedBParticlesTree &bparticles_tree,
+ IndexedNodeTree &indexed_tree,
+ FN::DataFlowNodes::GeneratedGraph &data_graph,
ModifierStepDescription &step_description)
{
BLI_assert(STREQ(event_node->idname, "bp_AgeReachedEventNode"));
bNodeSocket *event_input = (bNodeSocket *)event_node->inputs.first;
- FN::DFGraphSocket age_input_socket = generated_graph.lookup_socket(event_input->next);
- FN::FunctionGraph function_graph(generated_graph.graph(), {}, {age_input_socket});
+ FN::DFGraphSocket age_input_socket = data_graph.lookup_socket(event_input->next);
+ FN::FunctionGraph function_graph(data_graph.graph(), {}, {age_input_socket});
FN::SharedFunction compute_age_function = function_graph.new_function("Compute Age");
FN::fgraph_add_TupleCallBody(compute_age_function, function_graph);
- for (SocketWithNode linked : bparticles_tree.base().linked(event_input)) {
- if (!bparticles_tree.is_particle_type_node(linked.node)) {
+ for (SocketWithNode linked : indexed_tree.linked(event_input)) {
+ if (!is_particle_type_node(linked.node)) {
continue;
}
@@ -415,13 +418,13 @@ static ModifierStepDescription *step_description_from_node_tree(bNodeTree *btree
for (auto item : emitter_inserters.items()) {
for (bNode *emitter_node : indexed_tree.nodes_with_idname(item.key)) {
- item.value(emitter_node, bparticles_tree, step_description->m_emitters);
+ item.value(emitter_node, indexed_tree, generated_graph, *step_description);
}
}
for (auto item : event_inserters.items()) {
for (bNode *event_node : indexed_tree.nodes_with_idname(item.key)) {
- item.value(event_node, generated_graph, bparticles_tree, *step_description);
+ item.value(event_node, indexed_tree, generated_graph, *step_description);
}
}
More information about the Bf-blender-cvs
mailing list