initializer.cpp 1.6 KB

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