absence_thelab

annotate src/3deng/camera.h @ 0:1cffe3409164

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 23 Oct 2014 01:46:07 +0300
parents
children
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_