You.i Engine
YiAbstractCameraSceneNode.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ABSTRACT_CAMERA_SCENE_NODE_H_
3 #define _YI_ABSTRACT_CAMERA_SCENE_NODE_H_
4 
6 #include "renderer/YiViewport.h"
8 #include "utility/YiRtti.h"
9 
31 {
32 public:
38  void SetUpVector(const glm::vec3 &fCamUp);
39 
45  const glm::vec3 &GetUpVector() const;
46 
65  void SetTarget(CYISceneNode *pTargetNode);
66 
70  CYISceneNode *GetTarget() const;
71 
81  void RemoveTarget();
82 
91  const glm::mat4 &GetCameraMatrix() const;
92 
104  void SetViewport(const CYIViewport &viewport);
105 
109  const CYIViewport &GetViewport() const;
110 
115  const glm::mat4 &GetViewMatrix() const;
116 
121  const glm::mat4 &GetProjectionMatrix() const;
122 
123 protected:
125 
129  void DirtyProjectionMatrix();
130 
135  virtual glm::mat4 CalculateProjectionMatrix() const = 0;
136 
141  glm::mat4 CalculateViewMatrix() const;
142 
150  glm::mat4 CalculateViewportMatrix() const;
151 
157  const glm::mat4 &GetViewportWorldMatrix() const;
158 
159  virtual void UpdateEnd() override;
160 
161  virtual CYIString GetDumpTreeString() const override;
162 
163 private:
164  bool IsViewMatrixDirty() const;
165  bool IsViewportMatrixDirty() const;
166 
167  CYISceneNode *m_pTargetNode;
168  glm::mat4 m_fCameraMatrix;
169  glm::mat4 m_fProjectionMatrix;
170  glm::mat4 m_fViewMatrix;
171  CYIViewport m_Viewport;
172  glm::mat4 m_fViewportTransform;
173  bool m_bViewportDirty;
174  bool m_bProjectionMatrixDirty;
175  bool m_bTargetChanged;
176  glm::vec3 m_fUpVector;
177 
179 };
180 
185 #ifdef YI_FUNCTION_SPECIALIZATION_FULLY_SUPPORTED
186 template<>
187 inline const CYIAbstractCameraSceneNode *YiDynamicCast<CYIAbstractCameraSceneNode>(const CYISceneNode *pObject)
188 {
189  return pObject ? (pObject->CanCastTo<CYIAbstractCameraSceneNode>() ? static_cast<const CYIAbstractCameraSceneNode *>(pObject) : nullptr) : nullptr;
190 }
191 #endif
192 
193 #endif // _YI_ABSTRACT_CAMERA_SCENE_NODE_H_
194 
const glm::mat4 & GetViewMatrix() const
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
void SetUpVector(const glm::vec3 &fCamUp)
Provides a base for the definition of camera objects.
Definition: YiAbstractCameraSceneNode.h:30
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
const glm::mat4 & GetViewportWorldMatrix() const
void SetViewport(const CYIViewport &viewport)
Definition: YiViewport.h:12
virtual glm::mat4 CalculateProjectionMatrix() const =0
A scene node is the base type for all nodes which are used by the scene manager; it is an integral pa...
Definition: YiSceneNode.h:114
glm::mat4 CalculateViewMatrix() const
virtual void UpdateEnd() override
const glm::vec3 & GetUpVector() const
CYISceneNode * GetTarget() const
const CYIViewport & GetViewport() const
const glm::mat4 & GetCameraMatrix() const
This file contains the classes and macros used to implement RTTI in You.i Engine. ...
const glm::mat4 & GetProjectionMatrix() const
void SetTarget(CYISceneNode *pTargetNode)
glm::mat4 CalculateViewportMatrix() const
virtual CYIString GetDumpTreeString() const override