CCamera.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "CCamera.h"
  2. #include "../../core.h"
  3. using namespace wp::core::Scenes;
  4. CCamera::CCamera (irr::core::vector3df center, irr::core::vector3df eye, irr::core::vector3df up) :
  5. m_center (center),
  6. m_eye (eye),
  7. m_up (up)
  8. {
  9. }
  10. irr::core::vector3df* CCamera::getCenter ()
  11. {
  12. return &this->m_center;
  13. }
  14. irr::core::vector3df* CCamera::getEye ()
  15. {
  16. return &this->m_eye;
  17. }
  18. irr::core::vector3df* CCamera::getUp ()
  19. {
  20. return &this->m_up;
  21. }
  22. CCamera* CCamera::fromJSON (json data)
  23. {
  24. json::const_iterator center_it = data.find ("center");
  25. json::const_iterator eye_it = data.find ("eye");
  26. json::const_iterator up_it = data.find ("up");
  27. if (center_it == data.end ())
  28. {
  29. throw std::runtime_error ("Camera must have a center position");
  30. }
  31. if (eye_it == data.end ())
  32. {
  33. throw std::runtime_error ("Camera must have an eye position");
  34. }
  35. if (up_it == data.end ())
  36. {
  37. throw std::runtime_error ("Camera must have a up position");
  38. }
  39. return new CCamera (
  40. wp::core::ato3vf (*center_it),
  41. wp::core::ato3vf (*eye_it),
  42. wp::core::ato3vf (*up_it)
  43. );
  44. }