123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
-
- #ifndef _CAMERA_H_
- #define _CAMERA_H_
-
- #include "math/math.h"
- #include "math/Matrix.h"
- #include "math/Quaternion.h"
-
-
- enum camera_command {
- CAMERA_MOVE_FORWARD = 1,
- CAMERA_MOVE_BACKWARD,
- CAMERA_MOVE_UP,
- CAMERA_MOVE_DOWN,
- CAMERA_ROTATE_RIGHT,
- CAMERA_ROTATE_LEFT,
- CAMERA_SPEED_UP,
- CAMERA_SPEED_DOWN,
- CAMERA_ROTATE_UP,
- CAMERA_ROTATE_DOWN,
- CAMERA_MOVE_LEFT,
- CAMERA_MOVE_RIGHT
- };
-
-
- enum CameraFlags {
- Camera_FlyMode = (1 << 0)
- };
-
-
- class Camera {
- public:
-
-
- Camera();
-
-
-
- void getPosition(vec3_t pos);
-
-
-
- void getUp(vec3_t up);
-
-
-
- void getTarget(vec3_t target);
-
-
-
- float getYaw();
-
-
-
- vec_t getRadianYaw();
-
-
-
- float getPitch();
-
-
-
- vec_t getRadianPitch();
-
-
-
- void rotate(float angle, float x, float y, float z);
-
-
-
- void translate(float x, float y, float z);
-
-
-
- void reset();
-
-
-
- void command(enum camera_command cmd);
-
-
-
- void setSpeed(float s);
-
-
-
- void update();
-
-
-
- void setPosition(vec3_t pos);
-
-
-
- void setUp(vec3_t up);
-
-
-
- void setTarget(vec3_t target);
-
- private:
- Quaternion mQ;
- unsigned int mFlags;
- vec_t mPos[4];
- vec_t mTarget[4];
- vec_t mUp[4];
- vec_t mSide[4];
- vec_t mViewDistance;
- vec_t mTranslateDelta;
- vec_t mTheta;
- vec_t mTheta2;
- };
-
- #endif
|