00001
00002
00003
00004
00005 #ifndef __I_CAMERA_SCENE_NODE_H_INCLUDED__
00006 #define __I_CAMERA_SCENE_NODE_H_INCLUDED__
00007
00008 #include "ISceneNode.h"
00009 #include "IEventReceiver.h"
00010
00011 namespace irr
00012 {
00013 namespace scene
00014 {
00015 struct SViewFrustum;
00016
00018
00023 class ICameraSceneNode : public ISceneNode, public IEventReceiver
00024 {
00025 public:
00026
00028 ICameraSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id,
00029 const core::vector3df& position = core::vector3df(0,0,0),
00030 const core::vector3df& rotation = core::vector3df(0,0,0),
00031 const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f))
00032 : ISceneNode(parent, mgr, id, position, rotation, scale), IsOrthogonal(false) {}
00033
00035
00045 virtual void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal=false) =0;
00046
00048
00049 virtual const core::matrix4& getProjectionMatrix() const =0;
00050
00052
00053 virtual const core::matrix4& getViewMatrix() const =0;
00054
00056
00060 virtual void setViewMatrixAffector(const core::matrix4& affector) =0;
00061
00063
00064 virtual const core::matrix4& getViewMatrixAffector() const =0;
00065
00067
00073 virtual bool OnEvent(const SEvent& event) =0;
00074
00076
00080 virtual void setTarget(const core::vector3df& pos) =0;
00081
00083
00088 virtual void setRotation(const core::vector3df& rotation) =0;
00089
00091
00092 virtual const core::vector3df& getTarget() const =0;
00093
00095
00096 virtual void setUpVector(const core::vector3df& pos) =0;
00097
00099
00100 virtual const core::vector3df& getUpVector() const =0;
00101
00103
00104 virtual f32 getNearValue() const =0;
00105
00107
00108 virtual f32 getFarValue() const =0;
00109
00111
00112 virtual f32 getAspectRatio() const =0;
00113
00115
00116 virtual f32 getFOV() const =0;
00117
00119
00120 virtual void setNearValue(f32 zn) =0;
00121
00123
00124 virtual void setFarValue(f32 zf) =0;
00125
00127
00128 virtual void setAspectRatio(f32 aspect) =0;
00129
00131
00132 virtual void setFOV(f32 fovy) =0;
00133
00135
00137 virtual const SViewFrustum* getViewFrustum() const =0;
00138
00140
00142 virtual void setInputReceiverEnabled(bool enabled) =0;
00143
00145 virtual bool isInputReceiverEnabled() const =0;
00146
00148 virtual bool isOrthogonal() const
00149 {
00150 _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX;
00151 return IsOrthogonal;
00152 }
00153
00155
00163 virtual void bindTargetAndRotation(bool bound) =0;
00164
00166
00167 virtual bool getTargetAndRotationBinding(void) const =0;
00168
00169 protected:
00170
00171 bool IsOrthogonal;
00172 };
00173
00174 }
00175 }
00176
00177 #endif
00178