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 { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs