CInitializer.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "CInitializer.h"
  2. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CLifeTimeRandom.h"
  3. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CSizeRandom.h"
  4. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CRotationRandom.h"
  5. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CVelocityRandom.h"
  6. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CColorRandom.h"
  7. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CAlphaRandom.h"
  8. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CAngularVelocityRandom.h"
  9. #include "WallpaperEngine/Core/Objects/Particles/Initializers/CTurbulentVelocityRandom.h"
  10. using namespace WallpaperEngine::Core::Objects::Particles;
  11. CInitializer* CInitializer::fromJSON (json data)
  12. {
  13. auto id_it = data.find ("id");
  14. auto name_it = jsonFindRequired (data, "name", "Particle's initializer must have a name");
  15. uint32_t id = ((id_it == data.end ()) ? 0 : (uint32_t) (*id_it));
  16. if (*name_it == "lifetimerandom")
  17. {
  18. return Initializers::CLifeTimeRandom::fromJSON (data, id);
  19. }
  20. else if (*name_it == "sizerandom")
  21. {
  22. return Initializers::CSizeRandom::fromJSON (data, id);
  23. }
  24. else if (*name_it == "rotationrandom")
  25. {
  26. return Initializers::CRotationRandom::fromJSON (data, id);
  27. }
  28. else if (*name_it == "velocityrandom")
  29. {
  30. return Initializers::CVelocityRandom::fromJSON (data, id);
  31. }
  32. else if (*name_it == "colorrandom")
  33. {
  34. return Initializers::CColorRandom::fromJSON (data, id);
  35. }
  36. else if (*name_it == "alpharandom")
  37. {
  38. return Initializers::CAlphaRandom::fromJSON (data, id);
  39. }
  40. else if (*name_it == "angularvelocityrandom")
  41. {
  42. return Initializers::CAngularVelocityRandom::fromJSON (data, id);
  43. }
  44. else if (*name_it == "turbulentvelocityrandom")
  45. {
  46. return Initializers::CTurbulentVelocityRandom::fromJSON (data, id);
  47. }
  48. else
  49. {
  50. throw std::runtime_error ("Particle's got an unknown initializer");
  51. }
  52. }
  53. CInitializer::CInitializer (uint32_t id, std::string name) :
  54. m_id (id),
  55. m_name (std::move(name))
  56. {
  57. }
  58. const std::string& CInitializer::getName () const
  59. {
  60. return this->m_name;
  61. }
  62. const uint32_t CInitializer::getId () const
  63. {
  64. return this->m_id;
  65. }