diff options
Diffstat (limited to 'libraries/irrlicht-1.8.1/include/ICameraSceneNode.h')
-rw-r--r-- | libraries/irrlicht-1.8.1/include/ICameraSceneNode.h | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/libraries/irrlicht-1.8.1/include/ICameraSceneNode.h b/libraries/irrlicht-1.8.1/include/ICameraSceneNode.h deleted file mode 100644 index a71eb95..0000000 --- a/libraries/irrlicht-1.8.1/include/ICameraSceneNode.h +++ /dev/null | |||
@@ -1,207 +0,0 @@ | |||
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 | |||
17 | //! Scene Node which is a (controlable) camera. | ||
18 | /** The whole scene will be rendered from the cameras point of view. | ||
19 | Because the ICameraScenNode is a SceneNode, it can be attached to any | ||
20 | other scene node, and will follow its parents movement, rotation and so | ||
21 | on. | ||
22 | */ | ||
23 | class ICameraSceneNode : public ISceneNode, public IEventReceiver | ||
24 | { | ||
25 | public: | ||
26 | |||
27 | //! Constructor | ||
28 | ICameraSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id, | ||
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 | |||
34 | //! Sets the projection matrix of the camera. | ||
35 | /** The core::matrix4 class has some methods to build a | ||
36 | projection matrix. e.g: | ||
37 | core::matrix4::buildProjectionMatrixPerspectiveFovLH. | ||
38 | Note that the matrix will only stay as set by this method until | ||
39 | one of the following Methods are called: setNearValue, | ||
40 | setFarValue, setAspectRatio, setFOV. | ||
41 | \param projection The new projection matrix of the camera. | ||
42 | \param isOrthogonal Set this to true if the matrix is an | ||
43 | orthogonal one (e.g. from matrix4::buildProjectionMatrixOrtho). | ||
44 | */ | ||
45 | virtual void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal=false) =0; | ||
46 | |||
47 | //! Gets the current projection matrix of the camera. | ||
48 | /** \return The current projection matrix of the camera. */ | ||
49 | virtual const core::matrix4& getProjectionMatrix() const =0; | ||
50 | |||
51 | //! Gets the current view matrix of the camera. | ||
52 | /** \return The current view matrix of the camera. */ | ||
53 | virtual const core::matrix4& getViewMatrix() const =0; | ||
54 | |||
55 | //! Sets a custom view matrix affector. | ||
56 | /** The matrix passed here, will be multiplied with the view | ||
57 | matrix when it gets updated. This allows for custom camera | ||
58 | setups like, for example, a reflection camera. | ||
59 | \param affector The affector matrix. */ | ||
60 | virtual void setViewMatrixAffector(const core::matrix4& affector) =0; | ||
61 | |||
62 | //! Get the custom view matrix affector. | ||
63 | /** \return The affector matrix. */ | ||
64 | virtual const core::matrix4& getViewMatrixAffector() const =0; | ||
65 | |||
66 | //! It is possible to send mouse and key events to the camera. | ||
67 | /** Most cameras may ignore this input, but camera scene nodes | ||
68 | which are created for example with | ||
69 | ISceneManager::addCameraSceneNodeMaya or | ||
70 | ISceneManager::addCameraSceneNodeFPS, may want to get | ||
71 | this input for changing their position, look at target or | ||
72 | whatever. */ | ||
73 | virtual bool OnEvent(const SEvent& event) =0; | ||
74 | |||
75 | //! Sets the look at target of the camera | ||
76 | /** If the camera's target and rotation are bound ( @see | ||
77 | bindTargetAndRotation() ) then calling this will also change | ||
78 | the camera's scene node rotation to match the target. | ||
79 | Note that setTarget uses the current absolute position | ||
80 | internally, so if you changed setPosition since last rendering you must | ||
81 | call updateAbsolutePosition before using this function. | ||
82 | \param pos Look at target of the camera, in world co-ordinates. */ | ||
83 | virtual void setTarget(const core::vector3df& pos) =0; | ||
84 | |||
85 | //! Sets the rotation of the node. | ||
86 | /** This only modifies the relative rotation of the node. | ||
87 | If the camera's target and rotation are bound ( @see | ||
88 | bindTargetAndRotation() ) then calling this will also change | ||
89 | the camera's target to match the rotation. | ||
90 | \param rotation New rotation of the node in degrees. */ | ||
91 | virtual void setRotation(const core::vector3df& rotation) =0; | ||
92 | |||
93 | //! Gets the current look at target of the camera | ||
94 | /** \return The current look at target of the camera, in world co-ordinates */ | ||
95 | virtual const core::vector3df& getTarget() const =0; | ||
96 | |||
97 | //! Sets the up vector of the camera. | ||
98 | /** \param pos: New upvector of the camera. */ | ||
99 | virtual void setUpVector(const core::vector3df& pos) =0; | ||
100 | |||
101 | //! Gets the up vector of the camera. | ||
102 | /** \return The up vector of the camera, in world space. */ | ||
103 | virtual const core::vector3df& getUpVector() const =0; | ||
104 | |||
105 | //! Gets the value of the near plane of the camera. | ||
106 | /** \return The value of the near plane of the camera. */ | ||
107 | virtual f32 getNearValue() const =0; | ||
108 | |||
109 | //! Gets the value of the far plane of the camera. | ||
110 | /** \return The value of the far plane of the camera. */ | ||
111 | virtual f32 getFarValue() const =0; | ||
112 | |||
113 | //! Gets the aspect ratio of the camera. | ||
114 | /** \return The aspect ratio of the camera. */ | ||
115 | virtual f32 getAspectRatio() const =0; | ||
116 | |||
117 | //! Gets the field of view of the camera. | ||
118 | /** \return The field of view of the camera in radians. */ | ||
119 | virtual f32 getFOV() const =0; | ||
120 | |||
121 | //! Sets the value of the near clipping plane. (default: 1.0f) | ||
122 | /** \param zn: New z near value. */ | ||
123 | virtual void setNearValue(f32 zn) =0; | ||
124 | |||
125 | //! Sets the value of the far clipping plane (default: 2000.0f) | ||
126 | /** \param zf: New z far value. */ | ||
127 | virtual void setFarValue(f32 zf) =0; | ||
128 | |||
129 | //! Sets the aspect ratio (default: 4.0f / 3.0f) | ||
130 | /** \param aspect: New aspect ratio. */ | ||
131 | virtual void setAspectRatio(f32 aspect) =0; | ||
132 | |||
133 | //! Sets the field of view (Default: PI / 2.5f) | ||
134 | /** \param fovy: New field of view in radians. */ | ||
135 | virtual void setFOV(f32 fovy) =0; | ||
136 | |||
137 | //! Get the view frustum. | ||
138 | /** Needed sometimes by bspTree or LOD render nodes. | ||
139 | \return The current view frustum. */ | ||
140 | virtual const SViewFrustum* getViewFrustum() const =0; | ||
141 | |||
142 | //! Disables or enables the camera to get key or mouse inputs. | ||
143 | /** If this is set to true, the camera will respond to key | ||
144 | inputs otherwise not. */ | ||
145 | virtual void setInputReceiverEnabled(bool enabled) =0; | ||
146 | |||
147 | //! Checks if the input receiver of the camera is currently enabled. | ||
148 | virtual bool isInputReceiverEnabled() const =0; | ||
149 | |||
150 | //! Checks if a camera is orthogonal. | ||
151 | virtual bool isOrthogonal() const | ||
152 | { | ||
153 | _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX; | ||
154 | return IsOrthogonal; | ||
155 | } | ||
156 | |||
157 | //! Binds the camera scene node's rotation to its target position and vice vera, or unbinds them. | ||
158 | /** When bound, calling setRotation() will update the camera's | ||
159 | target position to be along its +Z axis, and likewise calling | ||
160 | setTarget() will update its rotation so that its +Z axis will | ||
161 | point at the target point. FPS camera use this binding by | ||
162 | default; other cameras do not. | ||
163 | \param bound True to bind the camera's scene node rotation | ||
164 | and targetting, false to unbind them. | ||
165 | @see getTargetAndRotationBinding() */ | ||
166 | virtual void bindTargetAndRotation(bool bound) =0; | ||
167 | |||
168 | //! Queries if the camera scene node's rotation and its target position are bound together. | ||
169 | /** @see bindTargetAndRotation() */ | ||
170 | virtual bool getTargetAndRotationBinding(void) const =0; | ||
171 | |||
172 | //! Writes attributes of the camera node | ||
173 | virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const | ||
174 | { | ||
175 | ISceneNode::serializeAttributes(out, options); | ||
176 | |||
177 | if (!out) | ||
178 | return; | ||
179 | out->addBool ("IsOrthogonal", IsOrthogonal ); | ||
180 | } | ||
181 | |||
182 | //! Reads attributes of the camera node | ||
183 | virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) | ||
184 | { | ||
185 | ISceneNode::deserializeAttributes(in, options); | ||
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 | |||
200 | bool IsOrthogonal; | ||
201 | }; | ||
202 | |||
203 | } // end namespace scene | ||
204 | } // end namespace irr | ||
205 | |||
206 | #endif | ||
207 | |||