CParticle.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <irrlicht/irrlicht.h>
  3. #include <nlohmann/json.hpp>
  4. #include "CControlPoint.h"
  5. #include "CEmitter.h"
  6. #include "CInitializer.h"
  7. #include "../../CObject.h"
  8. namespace WallpaperEngine::Core::Objects::Particles
  9. {
  10. using json = nlohmann::json;
  11. class CParticle : CObject
  12. {
  13. public:
  14. std::vector<CEmitter*>* getEmitters ();
  15. std::vector<CControlPoint*>* getControlPoints ();
  16. std::vector<CInitializer*>* getInitializers ();
  17. protected:
  18. friend class CObject;
  19. static CParticle* fromFile (
  20. const irr::io::path& filename,
  21. irr::u32 id,
  22. std::string name,
  23. const irr::core::vector3df& origin,
  24. const irr::core::vector3df& scale
  25. );
  26. CParticle (
  27. irr::u32 starttime,
  28. irr::u32 maxcount,
  29. irr::u32 id,
  30. std::string name,
  31. const irr::core::vector3df& origin,
  32. const irr::core::vector3df& scale
  33. );
  34. void insertControlPoint (CControlPoint* controlpoint);
  35. void insertEmitter (CEmitter* emitter);
  36. void insertInitializer (CInitializer* initializer);
  37. private:
  38. irr::u32 m_starttime;
  39. irr::u32 m_maxcount;
  40. std::vector<CControlPoint*> m_controlpoints;
  41. std::vector<CEmitter*> m_emitters;
  42. std::vector<CInitializer*> m_initializers;
  43. };
  44. };