EmissionModule.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // EmissionModule.h
  3. // libcocos2d Mac
  4. //
  5. // Created by 徐俊杰 on 2020/4/24.
  6. //
  7. #ifndef EmissionModule_h
  8. #define EmissionModule_h
  9. //#include "cocos2d.h"
  10. #include "rparticle/Macros/RParticleMacros.h"
  11. #include "rparticle/Modules/ParticleSystemModule.h"
  12. #include "rparticle/ParticleSystemCurves.h"
  13. NS_RRP_BEGIN
  14. //class Vector2f;
  15. class EmissionModule : public ParticleSystemModule
  16. {
  17. public:
  18. DECLARE_MODULE (EmissionModule)
  19. EmissionModule ();
  20. enum { kEmissionTypeTime, kEmissionTypeDistance };
  21. static void Emit (const ParticleSystemReadOnlyState& roState, ParticleSystemEmissionState& emissionState, size_t& amountOfParticlesToEmit, size_t& numContinuous, const ParticleSystemEmissionData& emissionData, const Vector3f velocity, float fromT, float toT, float dt, float length);
  22. void CheckConsistency ();
  23. int CalculateMaximumEmitCountEstimate(float deltaTime) const;
  24. const ParticleSystemEmissionData& GetEmissionDataRef() { return m_EmissionData; }
  25. const ParticleSystemEmissionData& GetEmissionDataRef() const { return m_EmissionData; }
  26. void GetEmissionDataCopy(ParticleSystemEmissionData* emissionData) { *emissionData = m_EmissionData; };
  27. ParticleSystemEmissionData& GetEmissionData() { return m_EmissionData; }
  28. const ParticleSystemEmissionData& GetEmissionData() const { return m_EmissionData; }
  29. template<class TransferFunction>
  30. void Transfer (TransferFunction& transfer);
  31. private:
  32. ParticleSystemEmissionData m_EmissionData;
  33. };
  34. NS_RRP_END
  35. #endif /* EmissionModule_h */