rev |
line source |
nuclear@0
|
1 #ifndef _CAMERA_H_
|
nuclear@0
|
2 #define _CAMERA_H_
|
nuclear@0
|
3
|
nuclear@0
|
4 #include <string>
|
nuclear@0
|
5 #include "switches.h"
|
nuclear@0
|
6 #include "n3dmath.h"
|
nuclear@0
|
7 #include "curves.h"
|
nuclear@0
|
8 #include "typedefs.h"
|
nuclear@0
|
9
|
nuclear@0
|
10 class Camera {
|
nuclear@0
|
11 private:
|
nuclear@0
|
12 Vector3 Pos, LookAt, Up;
|
nuclear@0
|
13 float FOV;
|
nuclear@0
|
14 float NearClip, FarClip;
|
nuclear@0
|
15 // transformation matrices for each vector
|
nuclear@0
|
16 Matrix4x4 PosTranslate, LookTranslate, UpTranslate;
|
nuclear@0
|
17 Matrix4x4 PosRotate, LookRotate, UpRotate;
|
nuclear@0
|
18 Matrix4x4 PosScale, LookScale, UpScale;
|
nuclear@0
|
19
|
nuclear@0
|
20 bool FlipRight;
|
nuclear@0
|
21
|
nuclear@0
|
22 const Curve *path, *targpath;
|
nuclear@0
|
23 dword StartTime, EndTime;
|
nuclear@0
|
24
|
nuclear@0
|
25 public:
|
nuclear@0
|
26 std::string name;
|
nuclear@0
|
27 Matrix4x4 CCSmat;
|
nuclear@0
|
28
|
nuclear@0
|
29 Camera();
|
nuclear@0
|
30 float GetFOV() const {return FOV;}
|
nuclear@0
|
31 void SetFOV(float FOV) {this->FOV = FOV;}
|
nuclear@0
|
32
|
nuclear@0
|
33 void SetClippingPlanes(float NearClip, float FarClip);
|
nuclear@0
|
34 void GetClippingPlanes(float *NearClip, float *FarClip) const;
|
nuclear@0
|
35
|
nuclear@0
|
36 void SetCamera(const Vector3 &pos, const Vector3 &lookat, const Vector3 &up);
|
nuclear@0
|
37 Matrix4x4 &GetCameraMatrix();
|
nuclear@0
|
38
|
nuclear@0
|
39 // camera controls
|
nuclear@0
|
40 void Move(float x, float y, float z);
|
nuclear@0
|
41 void MoveTo(float x, float y, float z);
|
nuclear@0
|
42 void Rotate(float x, float y, float z);
|
nuclear@0
|
43 void Zoom(float factor);
|
nuclear@0
|
44
|
nuclear@0
|
45 // haphazard additions
|
nuclear@0
|
46 void SetRightFlipping(bool enable);
|
nuclear@0
|
47 void SetPosition(const Vector3 &pos);
|
nuclear@0
|
48 void SetUpVector(const Vector3 &up);
|
nuclear@0
|
49 void SetTarget(const Vector3 &targ);
|
nuclear@0
|
50
|
nuclear@0
|
51 Vector3 GetViewVector() const;
|
nuclear@0
|
52 Vector3 GetPosition() const;
|
nuclear@0
|
53 Vector3 GetUpVector() const;
|
nuclear@0
|
54 Vector3 GetTargetPosition() const;
|
nuclear@0
|
55
|
nuclear@0
|
56 Base GetCameraBase() const;
|
nuclear@0
|
57
|
nuclear@0
|
58 inline void MoveTarget(float x, float y, float z);
|
nuclear@0
|
59 inline void MoveTargetTo(float x, float y, float z);
|
nuclear@0
|
60 inline void RotateTarget(float x, float y, float z);
|
nuclear@0
|
61
|
nuclear@0
|
62 void ResetRotation();
|
nuclear@0
|
63
|
nuclear@0
|
64 void CreateCameraMatrix();
|
nuclear@0
|
65 void CreateCameraMatrix(Matrix4x4 *matrix, const Vector3 &Pos, const Vector3 &LookAt, const Vector3 &Up) const;
|
nuclear@0
|
66
|
nuclear@0
|
67 void Spin(float rads);
|
nuclear@0
|
68
|
nuclear@0
|
69 void SetCameraPath(const Curve *path, const Curve *tpath, dword StartTime, dword EndTime);
|
nuclear@0
|
70 void FollowPath(dword time, bool Cycle = false);
|
nuclear@0
|
71 void FollowPath(float t);
|
nuclear@0
|
72
|
nuclear@0
|
73 dword GetStartTime() const;
|
nuclear@0
|
74 dword GetEndTime() const;
|
nuclear@0
|
75 };
|
nuclear@0
|
76
|
nuclear@0
|
77 #endif // _CAMERA_H_ |