particle.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <irrlicht/irrlicht.h>
  3. #include <nlohmann/json.hpp>
  4. #include "controlpoint.h"
  5. #include "emitter.h"
  6. #include "initializer.h"
  7. #include "../../object.h"
  8. namespace wp::core::objects::particles
  9. {
  10. using json = nlohmann::json;
  11. class particle : object
  12. {
  13. public:
  14. std::vector<emitter*>* getEmitters ();
  15. std::vector<controlpoint*>* getControlPoints ();
  16. std::vector<initializer*>* getInitializers ();
  17. protected:
  18. friend class object;
  19. static particle* 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. particle (
  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 (controlpoint* controlpoint);
  35. void insertEmitter (emitter* emitter);
  36. void insertInitializer (initializer* initializer);
  37. private:
  38. irr::u32 m_starttime;
  39. irr::u32 m_maxcount;
  40. std::vector<controlpoint*> m_controlpoints;
  41. std::vector<emitter*> m_emitters;
  42. std::vector<initializer*> m_initializers;
  43. };
  44. };