InitialModule.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //
  2. // InitialModule.h
  3. // libcocos2d Mac
  4. //
  5. // Created by 徐俊杰 on 2020/4/24.
  6. //
  7. #ifndef InitialModule_h
  8. #define InitialModule_h
  9. //#include "cocos2d.h"
  10. #include "rparticle/Macros/RParticleMacros.h"
  11. #include "rparticle/Modules/ParticleSystemModule.h"
  12. #include "rparticle/ParticleSystemCurves.h"
  13. #include "rparticle/ParticleSystemGradients.h"
  14. #include "rparticle/Math/Random/rand.h"
  15. NS_RRP_BEGIN
  16. struct ParticleSystemState;
  17. class InitialModule : public ParticleSystemModule
  18. {
  19. public:
  20. DECLARE_MODULE (InitialModule)
  21. InitialModule ();
  22. void Start (const struct ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const Matrix4x4f& matrix, size_t fromIndex, float t);
  23. void Update (const struct ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const size_t fromIndex, const size_t toIndex, float dt) const;
  24. void GenerateProcedural (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const struct ParticleSystemEmitReplay& emit);
  25. void CheckConsistency ();
  26. void AwakeFromLoad (RParticleSystem* system, const ParticleSystemReadOnlyState& roState);
  27. void ResetSeed(const ParticleSystemReadOnlyState& roState);
  28. void SetInheritedParams(const SubEmitterInheritValues& inheritValues);
  29. inline MinMaxCurve& GetLifeTimeCurve() { return m_Lifetime; }
  30. inline const MinMaxCurve& GetLifeTimeCurve() const { return m_Lifetime; }
  31. inline MinMaxCurve& GetSpeedCurve() { return m_Speed; }
  32. inline const MinMaxCurve& GetSpeedCurve() const { return m_Speed; }
  33. inline MinMaxCurve& GetSizeCurve() { return m_Size; }
  34. inline const MinMaxCurve& GetSizeCurve() const { return m_Size; }
  35. inline MinMaxCurve& GetRotationCurve() { return m_Rotation; }
  36. inline const MinMaxCurve& GetRotationCurve() const { return m_Rotation; }
  37. inline MinMaxGradient& GetColor() { return m_Color; }
  38. inline const MinMaxGradient& GetColor() const { return m_Color; }
  39. inline void SetGravityModifier(float value) { m_GravityModifier = value; }
  40. inline float GetGravityModifier() const { return m_GravityModifier; }
  41. inline void SetMaxNumParticles(int value) { m_MaxNumParticles = value; }
  42. inline int GetMaxNumParticles() const { return m_MaxNumParticles; }
  43. inline void SetInheritVelocity(float value) { m_InheritVelocity = value; }
  44. inline float GetInheritVelocity() const { return m_InheritVelocity; }
  45. Vector3f GetGravity (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state) const;
  46. template<class TransferFunction>
  47. void Transfer (TransferFunction& transfer);
  48. private:
  49. Rand& GetRandom();
  50. MinMaxCurve m_Lifetime;
  51. MinMaxCurve m_Speed;
  52. MinMaxGradient m_Color;
  53. MinMaxCurve m_Size;
  54. MinMaxCurve m_Rotation;
  55. float m_GravityModifier;
  56. float m_InheritVelocity;
  57. int m_MaxNumParticles;
  58. Rand m_Random;
  59. SubEmitterInheritValues m_InheritedValues;
  60. #if UNITY_EDITOR
  61. public:
  62. Rand m_EditorRandom;
  63. #endif
  64. };
  65. NS_RRP_END
  66. #endif /* InitialModule_h */