CInitializer.cpp 1.9 KB

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