00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_U_CAMERA_H
00027 #define NL_U_CAMERA_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/3d/u_transform.h"
00031 #include "nel/3d/frustum.h"
00032
00033
00034 namespace NL3D
00035 {
00036
00037
00038
00045 class UCamera : virtual public UTransform
00046 {
00047 protected:
00048
00050
00051 UCamera() {}
00052 virtual ~UCamera() {}
00053
00054
00055 public:
00057
00058 static const float DefLx;
00059 static const float DefLy;
00060 static const float DefLzNear;
00061 static const float DefLzFar;
00063
00064
00065 public:
00066
00067
00069
00071 virtual void setFrustum(const CFrustum &f)=0;
00073 virtual const CFrustum& getFrustum() const =0;
00075 virtual void setFrustum(float left, float right, float bottom, float top, float znear, float zfar, bool perspective= true)=0;
00077 virtual void setFrustum(float width, float height, float znear, float zfar, bool perspective= true)=0;
00079 virtual void getFrustum(float &left, float &right, float &bottom, float &top, float &znear, float &zfar) const =0;
00081 virtual bool isOrtho() const =0;
00083 virtual bool isPerspective() const =0;
00090 virtual void setPerspective(float fov, float aspectRatio, float znear, float zfar) =0;
00091
00092
00094
00095 virtual void buildCameraPyramid(std::vector<NLMISC::CPlane> &pyramid, bool useWorldMatrix) =0;
00096
00097
00098
00099 };
00100
00101
00102 }
00103
00104
00105 #endif // NL_U_CAMERA_H
00106
00107