61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
|
|
#ifndef CAMERA_H
|
|
#define CAMERA_H
|
|
|
|
#include "frustum.hpp"
|
|
#include "mirror.hpp"
|
|
#include "model.hpp"
|
|
|
|
class Camera : public Object {
|
|
public:
|
|
enum { PROJ_NONE = 0, PROJ_PERSP = 1, PROJ_ORTHO = 2 };
|
|
|
|
Camera();
|
|
Camera* getCamera()
|
|
{
|
|
return this;
|
|
}
|
|
|
|
//called by user
|
|
void setZoom(float z);
|
|
void setRange(float nr, float fr);
|
|
void setViewport(int x, int y, int w, int h);
|
|
void setClsColor(const Vector& v);
|
|
void setClsMode(bool cls_argb, bool cls_z);
|
|
void setProjMode(int mode);
|
|
void setFogColor(const Vector& v);
|
|
void setFogRange(float nr, float fr);
|
|
void setFogMode(int mode);
|
|
|
|
//called by world
|
|
bool beginRenderFrame();
|
|
|
|
//Camera frustum...
|
|
float getFrustumNear() const;
|
|
float getFrustumFar() const;
|
|
float getFrustumWidth() const;
|
|
float getFrustumHeight() const;
|
|
const Frustum& getFrustum() const;
|
|
void getViewport(int* x, int* y, int* w, int* h) const;
|
|
int getProjMode() const
|
|
{
|
|
return proj_mode;
|
|
}
|
|
|
|
private:
|
|
float zoom;
|
|
int vp_x, vp_y, vp_w, vp_h;
|
|
Vector cls_color;
|
|
bool cls_argb, cls_z;
|
|
int proj_mode;
|
|
Vector fog_color;
|
|
float fog_nr, fog_fr;
|
|
int fog_mode;
|
|
float frustum_nr, frustum_fr;
|
|
mutable float frustum_w, frustum_h;
|
|
mutable Frustum local_frustum;
|
|
mutable bool local_valid;
|
|
};
|
|
|
|
#endif
|