[Bf-blender-cvs] [592470b07b4] functions: simplify code by changing ownership of particle functions

Jacques Lucke noreply at git.blender.org
Thu Sep 12 16:32:27 CEST 2019


Commit: 592470b07b405547f7a8065ff5330f9f0a882b95
Author: Jacques Lucke
Date:   Thu Sep 12 15:45:55 2019 +0200
Branches: functions
https://developer.blender.org/rB592470b07b405547f7a8065ff5330f9f0a882b95

simplify code by changing ownership of particle functions

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

M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
M	source/blender/simulations/bparticles/actions.cpp
M	source/blender/simulations/bparticles/actions.hpp
M	source/blender/simulations/bparticles/events.cpp
M	source/blender/simulations/bparticles/events.hpp
M	source/blender/simulations/bparticles/forces.cpp
M	source/blender/simulations/bparticles/forces.hpp
M	source/blender/simulations/bparticles/node_frontend.cpp
M	source/blender/simulations/bparticles/offset_handlers.cpp
M	source/blender/simulations/bparticles/offset_handlers.hpp

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

diff --git a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
index 695f21f24e9..cfcbda6c69f 100644
--- a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
@@ -23,6 +23,11 @@ class VTreeDataGraph {
  public:
   VTreeDataGraph(VirtualNodeTree &vtree, SharedDataGraph graph, Array<DataSocket> mapping);
 
+  VirtualNodeTree &vtree()
+  {
+    return m_vtree;
+  }
+
   SharedDataGraph &graph()
   {
     return m_graph;
diff --git a/source/blender/simulations/bparticles/actions.cpp b/source/blender/simulations/bparticles/actions.cpp
index 3f34d29113b..72d751de7e5 100644
--- a/source/blender/simulations/bparticles/actions.cpp
+++ b/source/blender/simulations/bparticles/actions.cpp
@@ -55,7 +55,7 @@ void SetVelocityAction::execute(ActionInterface &interface)
 {
   auto velocities = interface.attributes().get<float3>("Velocity");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
 
   for (uint pindex : interface.pindices()) {
     float3 velocity = inputs->get<float3>("Velocity", 0, pindex);
@@ -69,7 +69,7 @@ void RandomizeVelocityAction::execute(ActionInterface &interface)
 {
   auto velocities = interface.attributes().get<float3>("Velocity");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
 
   for (uint pindex : interface.pindices()) {
     float randomness = inputs->get<float>("Randomness", 0, pindex);
@@ -87,7 +87,7 @@ void ChangeColorAction::execute(ActionInterface &interface)
 {
   auto colors = interface.attributes().get<rgba_f>("Color");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
   for (uint pindex : interface.pindices()) {
     rgba_f color = inputs->get<rgba_f>("Color", 0, pindex);
     colors[pindex] = color;
@@ -98,7 +98,7 @@ void ChangeSizeAction::execute(ActionInterface &interface)
 {
   auto sizes = interface.attributes().get<float>("Size");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
   for (uint pindex : interface.pindices()) {
     float size = inputs->get<float>("Size", 0, pindex);
     sizes[pindex] = size;
@@ -109,7 +109,7 @@ void ChangePositionAction::execute(ActionInterface &interface)
 {
   auto positions = interface.attributes().get<float3>("Position");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
   for (uint pindex : interface.pindices()) {
     float3 position = inputs->get<float3>("Position", 0, pindex);
     positions[pindex] = position;
@@ -130,7 +130,7 @@ void ExplodeAction::execute(ActionInterface &interface)
   Vector<float> new_birth_times;
   Vector<uint> source_particles;
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
 
   for (uint pindex : interface.pindices()) {
     uint parts_amount = std::max(0, inputs->get<int>("Amount", 0, pindex));
@@ -160,7 +160,7 @@ void ExplodeAction::execute(ActionInterface &interface)
 
 void ConditionAction::execute(ActionInterface &interface)
 {
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
 
   Vector<uint> true_pindices, false_pindices;
   for (uint pindex : interface.pindices()) {
diff --git a/source/blender/simulations/bparticles/actions.hpp b/source/blender/simulations/bparticles/actions.hpp
index b1cce7d87be..746c47156b8 100644
--- a/source/blender/simulations/bparticles/actions.hpp
+++ b/source/blender/simulations/bparticles/actions.hpp
@@ -27,11 +27,10 @@ class KillAction : public Action {
 
 class SetVelocityAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
 
  public:
-  SetVelocityAction(std::unique_ptr<ParticleFunction> compute_inputs)
-      : m_compute_inputs(std::move(compute_inputs))
+  SetVelocityAction(ParticleFunction *inputs_fn) : m_inputs_fn(inputs_fn)
   {
   }
 
@@ -40,11 +39,10 @@ class SetVelocityAction : public Action {
 
 class RandomizeVelocityAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
 
  public:
-  RandomizeVelocityAction(std::unique_ptr<ParticleFunction> compute_inputs)
-      : m_compute_inputs(std::move(compute_inputs))
+  RandomizeVelocityAction(ParticleFunction *inputs_fn) : m_inputs_fn(inputs_fn)
   {
   }
 
@@ -53,11 +51,10 @@ class RandomizeVelocityAction : public Action {
 
 class ChangeColorAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
 
  public:
-  ChangeColorAction(std::unique_ptr<ParticleFunction> compute_inputs)
-      : m_compute_inputs(std::move(compute_inputs))
+  ChangeColorAction(ParticleFunction *inputs_fn) : m_inputs_fn(inputs_fn)
   {
   }
 
@@ -66,11 +63,10 @@ class ChangeColorAction : public Action {
 
 class ChangeSizeAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
 
  public:
-  ChangeSizeAction(std::unique_ptr<ParticleFunction> compute_inputs)
-      : m_compute_inputs(std::move(compute_inputs))
+  ChangeSizeAction(ParticleFunction *inputs_fn) : m_inputs_fn(inputs_fn)
   {
   }
 
@@ -79,11 +75,10 @@ class ChangeSizeAction : public Action {
 
 class ChangePositionAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
 
  public:
-  ChangePositionAction(std::unique_ptr<ParticleFunction> compute_inputs)
-      : m_compute_inputs(std::move(compute_inputs))
+  ChangePositionAction(ParticleFunction *inputs_fn) : m_inputs_fn(inputs_fn)
   {
   }
 
@@ -93,15 +88,15 @@ class ChangePositionAction : public Action {
 class ExplodeAction : public Action {
  private:
   Vector<std::string> m_types_to_emit;
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
   std::unique_ptr<Action> m_on_birth_action;
 
  public:
   ExplodeAction(Vector<std::string> types_to_emit,
-                std::unique_ptr<ParticleFunction> compute_inputs,
+                ParticleFunction *inputs_fn,
                 std::unique_ptr<Action> on_birth_action)
       : m_types_to_emit(std::move(types_to_emit)),
-        m_compute_inputs(std::move(compute_inputs)),
+        m_inputs_fn(inputs_fn),
         m_on_birth_action(std::move(on_birth_action))
   {
   }
@@ -111,14 +106,14 @@ class ExplodeAction : public Action {
 
 class ConditionAction : public Action {
  private:
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
   std::unique_ptr<Action> m_true_action, m_false_action;
 
  public:
-  ConditionAction(std::unique_ptr<ParticleFunction> compute_inputs,
+  ConditionAction(ParticleFunction *inputs_fn,
                   std::unique_ptr<Action> true_action,
                   std::unique_ptr<Action> false_action)
-      : m_compute_inputs(std::move(compute_inputs)),
+      : m_inputs_fn(inputs_fn),
         m_true_action(std::move(true_action)),
         m_false_action(std::move(false_action))
   {
diff --git a/source/blender/simulations/bparticles/events.cpp b/source/blender/simulations/bparticles/events.cpp
index 8a6e44592b0..116e5e8d380 100644
--- a/source/blender/simulations/bparticles/events.cpp
+++ b/source/blender/simulations/bparticles/events.cpp
@@ -19,7 +19,7 @@ void AgeReachedEvent::filter(EventFilterInterface &interface)
   AttributesRef attributes = interface.attributes();
   auto ids = attributes.get<int32_t>("ID");
 
-  auto inputs = m_compute_inputs->compute(interface);
+  auto inputs = m_inputs_fn->compute(interface);
 
   TemporaryArray<float> trigger_ages(attributes.size());
   for (uint pindex : interface.pindices()) {
@@ -90,7 +90,7 @@ void CustomEvent::filter(EventFilterInterface &interface)
     }
   }
 
-  auto inputs = m_compute_inputs->compute(
+  auto inputs = m_inputs_fn->compute(
       pindices_to_check,
       interface.attributes(),
       ParticleTimes::FromDurationsAndEnd(interface.remaining_durations(),
diff --git a/source/blender/simulations/bparticles/events.hpp b/source/blender/simulations/bparticles/events.hpp
index d3de7da5516..9d05605423d 100644
--- a/source/blender/simulations/bparticles/events.hpp
+++ b/source/blender/simulations/bparticles/events.hpp
@@ -19,16 +19,14 @@ using BLI::float4x4;
 class AgeReachedEvent : public Event {
  private:
   std::string m_identifier;
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
   std::unique_ptr<Action> m_action;
 
  public:
   AgeReachedEvent(StringRef identifier,
-                  std::unique_ptr<ParticleFunction> compute_inputs,
+                  ParticleFunction *inputs_fn,
                   std::unique_ptr<Action> action)
-      : m_identifier(identifier),
-        m_compute_inputs(std::move(compute_inputs)),
-        m_action(std::move(action))
+      : m_identifier(identifier), m_inputs_fn(inputs_fn), m_action(std::move(action))
   {
   }
 
@@ -40,16 +38,12 @@ class AgeReachedEvent : public Event {
 class CustomEvent : public Event {
  private:
   std::string m_identifier;
-  std::unique_ptr<ParticleFunction> m_compute_inputs;
+  ParticleFunction *m_inputs_fn;
   std::unique_ptr<Action> m_action;
 
  public:
-  CustomEvent(StringRef identifier,
-              std::unique_ptr<ParticleFunction> compute_inputs,
-              std::unique_ptr<Action> action)
-      : m_identifier(identifier),
-        m_compute_inputs(std::move(compute_inputs)),
-        m_action(std::move(action))
+  CustomEvent(StringRef identifier, ParticleFunction *inputs_fn, std::unique_ptr<Action> action)
+      : m_identifier(identifier), m_inputs_fn(inputs_fn), m_action(std::move(action))
   {
   }
 
diff --git a/source/blender/simulations/bparticles/forces.cpp b/source/blender/simulations/bparticles/forces.cpp
index 5ee4ee6044c..ffd16aca14c 100644
--- a/source/blender/simulations/bparticles/forces.cpp


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list