Irrlicht 3D Engine
ICameraSceneNode.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
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 
00083         virtual void setTarget(const core::vector3df& pos) =0;
00084 
00086 
00091         virtual void setRotation(const core::vector3df& rotation) =0;
00092 
00094 
00095         virtual const core::vector3df& getTarget() const =0;
00096 
00098 
00099         virtual void setUpVector(const core::vector3df& pos) =0;
00100 
00102 
00103         virtual const core::vector3df& getUpVector() const =0;
00104 
00106 
00107         virtual f32 getNearValue() const =0;
00108 
00110 
00111         virtual f32 getFarValue() const =0;
00112 
00114 
00115         virtual f32 getAspectRatio() const =0;
00116 
00118 
00119         virtual f32 getFOV() const =0;
00120 
00122 
00123         virtual void setNearValue(f32 zn) =0;
00124 
00126 
00127         virtual void setFarValue(f32 zf) =0;
00128 
00130 
00131         virtual void setAspectRatio(f32 aspect) =0;
00132 
00134 
00135         virtual void setFOV(f32 fovy) =0;
00136 
00138 
00140         virtual const SViewFrustum* getViewFrustum() const =0;
00141 
00143 
00145         virtual void setInputReceiverEnabled(bool enabled) =0;
00146 
00148         virtual bool isInputReceiverEnabled() const =0;
00149 
00151         virtual bool isOrthogonal() const
00152         {
00153             _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX;
00154             return IsOrthogonal;
00155         }
00156 
00158 
00166         virtual void bindTargetAndRotation(bool bound) =0;
00167 
00169 
00170         virtual bool getTargetAndRotationBinding(void) const =0;
00171 
00173         virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const
00174         {
00175             ISceneNode::serializeAttributes(out, options);
00176 
00177             if (!out)
00178                 return;
00179             out->addBool    ("IsOrthogonal", IsOrthogonal );
00180         }
00181 
00183         virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0)
00184         {
00185             ISceneNode::deserializeAttributes(in, options);
00186             if (!in)
00187                 return;
00188 
00189             if ( in->findAttribute("IsOrthogonal") )
00190                 IsOrthogonal = in->getAttributeAsBool("IsOrthogonal");
00191         }
00192 
00193     protected:
00194 
00195         void cloneMembers(ICameraSceneNode* toCopyFrom)
00196         {
00197             IsOrthogonal = toCopyFrom->IsOrthogonal;
00198         }
00199 
00200         bool IsOrthogonal;
00201     };
00202 
00203 } // end namespace scene
00204 } // end namespace irr
00205 
00206 #endif
00207