Files
BlitzNext/Runtime/blitz3d/camera.hpp
T

56 lines
1.3 KiB
C++
Raw Normal View History

2019-01-18 21:26:42 +01:00
#pragma once
2019-01-18 15:55:06 +01:00
#include "frustum.hpp"
#include "mirror.hpp"
2019-01-18 17:04:17 +01:00
#include "model.hpp"
2014-01-31 08:23:00 +13:00
2019-01-18 17:04:17 +01:00
class Camera : public Object {
public:
enum { PROJ_NONE = 0, PROJ_PERSP = 1, PROJ_ORTHO = 2 };
2014-01-31 08:23:00 +13:00
Camera();
2019-01-18 17:04:17 +01:00
Camera* getCamera()
{
return this;
}
2014-01-31 08:23:00 +13:00
//called by user
2019-01-18 17:04:17 +01:00
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);
2014-01-31 08:23:00 +13:00
//called by world
bool beginRenderFrame();
//Camera frustum...
2019-01-18 17:04:17 +01:00
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;
2014-01-31 08:23:00 +13:00
mutable Frustum local_frustum;
2019-01-18 17:04:17 +01:00
mutable bool local_valid;
2014-01-31 08:23:00 +13:00
};