CParticle.h 1.8 KB

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