Irrlicht 3D Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ICameraSceneNode.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_CAMERA_SCENE_NODE_H_INCLUDED__
6 #define __I_CAMERA_SCENE_NODE_H_INCLUDED__
7 
8 #include "ISceneNode.h"
9 #include "IEventReceiver.h"
10 
11 namespace irr
12 {
13 namespace scene
14 {
15  struct SViewFrustum;
16 
18 
24  {
25  public:
26 
29  const core::vector3df& position = core::vector3df(0,0,0),
30  const core::vector3df& rotation = core::vector3df(0,0,0),
31  const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f))
32  : ISceneNode(parent, mgr, id, position, rotation, scale), IsOrthogonal(false) {}
33 
35 
45  virtual void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal=false) =0;
46 
48 
49  virtual const core::matrix4& getProjectionMatrix() const =0;
50 
52 
53  virtual const core::matrix4& getViewMatrix() const =0;
54 
56 
60  virtual void setViewMatrixAffector(const core::matrix4& affector) =0;
61 
63 
64  virtual const core::matrix4& getViewMatrixAffector() const =0;
65 
67 
73  virtual bool OnEvent(const SEvent& event) =0;
74 
76 
83  virtual void setTarget(const core::vector3df& pos) =0;
84 
86 
91  virtual void setRotation(const core::vector3df& rotation) =0;
92 
94 
95  virtual const core::vector3df& getTarget() const =0;
96 
98 
99  virtual void setUpVector(const core::vector3df& pos) =0;
100 
102 
103  virtual const core::vector3df& getUpVector() const =0;
104 
106 
107  virtual f32 getNearValue() const =0;
108 
110 
111  virtual f32 getFarValue() const =0;
112 
114 
115  virtual f32 getAspectRatio() const =0;
116 
118 
119  virtual f32 getFOV() const =0;
120 
122 
123  virtual void setNearValue(f32 zn) =0;
124 
126 
127  virtual void setFarValue(f32 zf) =0;
128 
130 
131  virtual void setAspectRatio(f32 aspect) =0;
132 
134 
135  virtual void setFOV(f32 fovy) =0;
136 
138 
140  virtual const SViewFrustum* getViewFrustum() const =0;
141 
143 
145  virtual void setInputReceiverEnabled(bool enabled) =0;
146 
148  virtual bool isInputReceiverEnabled() const =0;
149 
151  virtual bool isOrthogonal() const
152  {
154  return IsOrthogonal;
155  }
156 
158 
166  virtual void bindTargetAndRotation(bool bound) =0;
167 
169 
170  virtual bool getTargetAndRotationBinding(void) const =0;
171 
174  {
175  ISceneNode::serializeAttributes(out, options);
176 
177  if (!out)
178  return;
179  out->addBool ("IsOrthogonal", IsOrthogonal );
180  }
181 
184  {
186  if (!in)
187  return;
188 
189  if ( in->findAttribute("IsOrthogonal") )
190  IsOrthogonal = in->getAttributeAsBool("IsOrthogonal");
191  }
192 
193  protected:
194 
195  void cloneMembers(ICameraSceneNode* toCopyFrom)
196  {
197  IsOrthogonal = toCopyFrom->IsOrthogonal;
198  }
199 
201  };
202 
203 } // end namespace scene
204 } // end namespace irr
205 
206 #endif
207