00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IENGINE_CAMERA_H__
00020 #define __CS_IENGINE_CAMERA_H__
00021
00029 #include "csutil/scf.h"
00030 #include "csgeom/transfrm.h"
00031
00032 #define CS_VEC_FORWARD csVector3(0,0,1)
00033 #define CS_VEC_BACKWARD csVector3(0,0,-1)
00034 #define CS_VEC_RIGHT csVector3(1,0,0)
00035 #define CS_VEC_LEFT csVector3(-1,0,0)
00036 #define CS_VEC_UP csVector3(0,1,0)
00037 #define CS_VEC_DOWN csVector3(0,-1,0)
00038
00039 #define CS_VEC_ROT_RIGHT csVector3(0,1,0)
00040 #define CS_VEC_ROT_LEFT csVector3(0,-1,0)
00041 #define CS_VEC_TILT_RIGHT (-csVector3(0,0,1))
00042 #define CS_VEC_TILT_LEFT (-csVector3(0,0,-1))
00043 #define CS_VEC_TILT_UP (-csVector3(1,0,0))
00044 #define CS_VEC_TILT_DOWN (-csVector3(-1,0,0))
00045
00046 class csCamera;
00047 class csVector3;
00048 class csVector2;
00049 struct iSector;
00050 struct iPolygon3D;
00051
00052 SCF_VERSION (iCamera, 0, 2, 0);
00053
00077 struct iCamera : public iBase
00078 {
00080 virtual iCamera *Clone () const = 0;
00081
00083 virtual int GetFOV () const = 0;
00085 virtual float GetInvFOV () const = 0;
00087 virtual float GetFOVAngle () const = 0;
00088
00093 virtual void SetFOV (int fov, int width) = 0;
00098 virtual void SetFOVAngle (float fov, int width) = 0;
00099
00104 virtual float GetShiftX () const = 0;
00109 virtual float GetShiftY () const = 0;
00114 virtual void SetPerspectiveCenter (float x, float y) = 0;
00115
00124 virtual csOrthoTransform& GetTransform () = 0;
00125
00127 virtual const csOrthoTransform& GetTransform () const = 0;
00128
00133 virtual void SetTransform (const csOrthoTransform& tr) = 0;
00134
00141 virtual void MoveWorld (const csVector3& v, bool cd = true) = 0;
00145 virtual void Move (const csVector3& v, bool cd = true) = 0;
00153 virtual void MoveWorldUnrestricted (const csVector3& v) = 0;
00161 virtual void MoveUnrestricted (const csVector3& v) = 0;
00162
00164 virtual iSector* GetSector () const = 0;
00166 virtual void SetSector (iSector*) = 0;
00167
00172 virtual void Correct (int n) = 0;
00173
00175 virtual bool IsMirrored () const = 0;
00177 virtual void SetMirrored (bool m) = 0;
00178
00179 #ifndef CS_USE_NEW_RENDERER
00180
00186 virtual iPolygon3D* GetHit (csVector3& v) = 0;
00187 #endif // CS_USE_NEW_RENDERER
00188
00195 virtual csPlane3* GetFarPlane () const = 0;
00196
00205 virtual void SetFarPlane (csPlane3* fp) = 0;
00206
00213 virtual long GetCameraNumber () const = 0;
00214
00216 virtual void Perspective (const csVector3& v, csVector2& p) const = 0;
00218 virtual void InvPerspective (const csVector2& p, float z,
00219 csVector3& v) const = 0;
00220
00228 virtual void OnlyPortals (bool hop) = 0;
00229
00231 virtual bool GetOnlyPortals () = 0;
00232 };
00233
00236 #endif // __CS_IENGINE_CAMERA_H__
00237