57 lines
1.0 KiB
C++
57 lines
1.0 KiB
C++
#pragma once
|
|
#ifndef CAMERA
|
|
#define CAMERA
|
|
|
|
#include "matrix.h"
|
|
#include "vector.h"
|
|
#include "box.h"
|
|
|
|
class Xr_Camera
|
|
{
|
|
public:
|
|
Xr_Camera();
|
|
~Xr_Camera();
|
|
|
|
void configModelview(Xr_MATRIX_4X4*);
|
|
void computeProjection();
|
|
|
|
void setPos(float, float, float);
|
|
void relPos(float, float, float);
|
|
void setAngle(float, float);
|
|
void relAngle(float, float);
|
|
void setFov(float);
|
|
void relFov(float);
|
|
void setFar(float);
|
|
void setNear(float);
|
|
|
|
void moveForward(float);
|
|
void moveBackward(float);
|
|
void moveRight(float);
|
|
void moveLeft(float);
|
|
void moveUpDown(float);
|
|
|
|
Xr_Vector3D getPos() const;
|
|
float getFov() const;
|
|
float* const getAngle() const;
|
|
Xr_MATRIX_4X4* const getProjection() const;
|
|
Xr_FrustumBox* const getFrustumBox() const;
|
|
|
|
private:
|
|
Xr_MATRIX_4X4 *C_projection;
|
|
Xr_FrustumBox *C_box;
|
|
Xr_Vector3D C_eye;
|
|
Xr_Vector3D C_pos;
|
|
float C_fov;
|
|
float C_far;
|
|
float C_near;
|
|
float C_angle[2];
|
|
|
|
Xr_Vector3D C_dir;
|
|
Xr_Vector3D C_right;
|
|
Xr_Vector3D C_left;
|
|
Xr_Vector3D C_up;
|
|
Xr_Vector3D C_down;
|
|
};
|
|
|
|
#endif
|