CCamera.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "CCamera.h"
  2. using namespace WallpaperEngine;
  3. using namespace WallpaperEngine::Render;
  4. CCamera::CCamera (CScene* scene, const Core::Scenes::CCamera* camera) :
  5. m_camera (camera),
  6. m_scene (scene)
  7. {
  8. this->m_sceneCamera = scene->getContext ()->getDevice ()->getSceneManager ()->addCameraSceneNode (
  9. scene, this->getEye (), this->getCenter (), scene->nextId ()
  10. );
  11. this->m_sceneCamera->setUpVector (this->getUp ());
  12. }
  13. CCamera::~CCamera ()
  14. {
  15. this->m_sceneCamera->remove ();
  16. }
  17. const irr::core::vector3df& CCamera::getCenter () const
  18. {
  19. return this->m_camera->getCenter ();
  20. }
  21. const irr::core::vector3df& CCamera::getEye () const
  22. {
  23. return this->m_camera->getEye ();
  24. }
  25. const irr::core::vector3df& CCamera::getUp () const
  26. {
  27. return this->m_camera->getUp ();
  28. }
  29. void CCamera::setOrthogonalProjection (irr::f32 width, irr::f32 height)
  30. {
  31. irr::core::matrix4 identity; identity.makeIdentity ();
  32. irr::core::matrix4 orthogonalProjection; orthogonalProjection.buildProjectionMatrixOrthoLH (
  33. width, height,
  34. this->getCenter ().Z,
  35. this->getEye ().Z
  36. );
  37. this->m_sceneCamera->setProjectionMatrix (orthogonalProjection);
  38. this->m_scene->getContext ()->getDevice ()->getVideoDriver ()->setTransform (irr::video::ETS_PROJECTION, orthogonalProjection);
  39. this->m_scene->getContext ()->getDevice ()->getVideoDriver ()->setTransform (irr::video::ETS_VIEW, identity);
  40. this->m_scene->getContext ()->getDevice ()->getVideoDriver ()->setTransform (irr::video::ETS_WORLD, identity);
  41. }