// // InitialModule.h // libcocos2d Mac // // Created by 徐俊杰 on 2020/4/24. // #ifndef InitialModule_h #define InitialModule_h //#include "cocos2d.h" #include "rparticle/Macros/RParticleMacros.h" #include "rparticle/Modules/ParticleSystemModule.h" #include "rparticle/ParticleSystemCurves.h" #include "rparticle/ParticleSystemGradients.h" #include "rparticle/Math/Random/rand.h" NS_RRP_BEGIN struct ParticleSystemState; class InitialModule : public ParticleSystemModule { public: DECLARE_MODULE (InitialModule) InitialModule (); void Start (const struct ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const Matrix4x4f& matrix, size_t fromIndex, float t); void Update (const struct ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const size_t fromIndex, const size_t toIndex, float dt) const; void GenerateProcedural (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const struct ParticleSystemEmitReplay& emit); void CheckConsistency (); void AwakeFromLoad (RParticleSystem* system, const ParticleSystemReadOnlyState& roState); void ResetSeed(const ParticleSystemReadOnlyState& roState); void SetInheritedParams(const SubEmitterInheritValues& inheritValues); inline MinMaxCurve& GetLifeTimeCurve() { return m_Lifetime; } inline const MinMaxCurve& GetLifeTimeCurve() const { return m_Lifetime; } inline MinMaxCurve& GetSpeedCurve() { return m_Speed; } inline const MinMaxCurve& GetSpeedCurve() const { return m_Speed; } inline MinMaxCurve& GetSizeCurve() { return m_Size; } inline const MinMaxCurve& GetSizeCurve() const { return m_Size; } inline MinMaxCurve& GetRotationCurve() { return m_Rotation; } inline const MinMaxCurve& GetRotationCurve() const { return m_Rotation; } inline MinMaxGradient& GetColor() { return m_Color; } inline const MinMaxGradient& GetColor() const { return m_Color; } inline void SetGravityModifier(float value) { m_GravityModifier = value; } inline float GetGravityModifier() const { return m_GravityModifier; } inline void SetMaxNumParticles(int value) { m_MaxNumParticles = value; } inline int GetMaxNumParticles() const { return m_MaxNumParticles; } inline void SetInheritVelocity(float value) { m_InheritVelocity = value; } inline float GetInheritVelocity() const { return m_InheritVelocity; } Vector3f GetGravity (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state) const; template void Transfer (TransferFunction& transfer); private: Rand& GetRandom(); MinMaxCurve m_Lifetime; MinMaxCurve m_Speed; MinMaxGradient m_Color; MinMaxCurve m_Size; MinMaxCurve m_Rotation; float m_GravityModifier; float m_InheritVelocity; int m_MaxNumParticles; Rand m_Random; SubEmitterInheritValues m_InheritedValues; #if UNITY_EDITOR public: Rand m_EditorRandom; #endif }; NS_RRP_END #endif /* InitialModule_h */