[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