[Bf-blender-cvs] [dd8d2517d69] functions: separate emitters from particle influencers

Jacques Lucke noreply at git.blender.org
Thu Jun 20 15:51:08 CEST 2019


Commit: dd8d2517d699d4cdf951c117bd6d682a74c987e4
Author: Jacques Lucke
Date:   Thu Jun 20 12:16:43 2019 +0200
Branches: functions
https://developer.blender.org/rBdd8d2517d699d4cdf951c117bd6d682a74c987e4

separate emitters from particle influencers

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

M	source/blender/simulations/bparticles/c_wrapper.cpp
M	source/blender/simulations/bparticles/core.hpp

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

diff --git a/source/blender/simulations/bparticles/c_wrapper.cpp b/source/blender/simulations/bparticles/c_wrapper.cpp
index 1ff5457a381..b6e9177a1fd 100644
--- a/source/blender/simulations/bparticles/c_wrapper.cpp
+++ b/source/blender/simulations/bparticles/c_wrapper.cpp
@@ -51,18 +51,12 @@ void BParticles_state_free(BParticlesState state)
   delete unwrap(state);
 }
 
-class ModifierStepDescription : public StepDescription {
+class ModifierStepParticleInfluencers : public ParticleInfluencers {
  public:
-  float m_duration;
-  SmallVector<Emitter *> m_emitters;
   SmallVector<Force *> m_forces;
   SmallVector<Event *> m_events;
   SmallVector<Action *> m_actions;
 
-  ArrayRef<Emitter *> emitters() override
-  {
-    return m_emitters;
-  }
   ArrayRef<Force *> forces() override
   {
     return m_forces;
@@ -71,15 +65,32 @@ class ModifierStepDescription : public StepDescription {
   {
     return m_events;
   }
-  ArrayRef<Action *> actions_per_event() override
+  ArrayRef<Action *> action_per_event() override
   {
     return m_actions;
   }
+};
+
+class ModifierStepDescription : public StepDescription {
+ public:
+  float m_duration;
+  SmallVector<Emitter *> m_emitters;
+  ModifierStepParticleInfluencers m_influencers;
 
   float step_duration() override
   {
     return m_duration;
   }
+
+  ArrayRef<Emitter *> emitters() override
+  {
+    return m_emitters;
+  }
+
+  ParticleInfluencers &influencers() override
+  {
+    return m_influencers;
+  }
 };
 
 void BParticles_simulate_modifier(NodeParticlesModifierData *UNUSED(npmd),
@@ -88,9 +99,9 @@ void BParticles_simulate_modifier(NodeParticlesModifierData *UNUSED(npmd),
 {
   ParticlesState &state = *unwrap(state_c);
   ModifierStepDescription description;
-  description.m_emitters.append(EMITTER_point({1, 1, 1}).release());
-  description.m_forces.append(FORCE_directional({0, 0, -2}).release());
   description.m_duration = 1.0f / 24.0f;
+  description.m_emitters.append(EMITTER_point({1, 1, 1}).release());
+  description.m_influencers.m_forces.append(FORCE_directional({0, 0, -2}).release());
   simulate_step(state, description);
 }
 
diff --git a/source/blender/simulations/bparticles/core.hpp b/source/blender/simulations/bparticles/core.hpp
index b75aeeb98c2..60534bb5378 100644
--- a/source/blender/simulations/bparticles/core.hpp
+++ b/source/blender/simulations/bparticles/core.hpp
@@ -127,14 +127,17 @@ class Emitter {
   virtual void emit(EmitterHelper helper) = 0;
 };
 
+class ParticleInfluencers {
+  virtual ArrayRef<Force *> forces() = 0;
+  virtual ArrayRef<Event *> events() = 0;
+  virtual ArrayRef<Action *> action_per_event() = 0;
+};
+
 class StepDescription {
  public:
   virtual float step_duration() = 0;
-
   virtual ArrayRef<Emitter *> emitters() = 0;
-  virtual ArrayRef<Force *> forces() = 0;
-  virtual ArrayRef<Event *> events() = 0;
-  virtual ArrayRef<Action *> actions_per_event() = 0;
+  virtual ParticleInfluencers &influencers() = 0;
 };
 
 class ParticlesState {



More information about the Bf-blender-cvs mailing list