X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FMoof%2FCamera.hh;h=b5927f438e0d3e27f376f8e5a559da6e5d9190f5;hb=d50942708db230dc5c43b8df89ede45525e1c394;hp=8800e3baf1fbf0b9f925d893459805df547988e0;hpb=c2321281bf12a7efaedde930422c7ddbc92080d4;p=chaz%2Fyoink diff --git a/src/Moof/Camera.hh b/src/Moof/Camera.hh index 8800e3b..b5927f4 100644 --- a/src/Moof/Camera.hh +++ b/src/Moof/Camera.hh @@ -29,14 +29,59 @@ #ifndef _MOOF_CAMERA_HH_ #define _MOOF_CAMERA_HH_ +#include +#include +#include +#include + namespace Mf { class Camera { + void calculateSecondary(); + public: + Camera() : + position_(0.0, 0.0, 0.0) + { + cml::quaternion_rotation_world_y(rotation_, 0.0f); + calculateSecondary(); + } + + void setPosition(const Vector3& point); + void setRotation(const Quaternion& rotation); + + void setProjection(const Matrix4& projection); + void setProjection(Scalar fovy, Scalar aspect, Scalar near, Scalar far); + + void uploadProjectionToGL() const; + + void lookAt(const Vector3& point); + + const Matrix4& getModelviewMatrix() const + { + return modelview_; + } + + const Frustum& getFrustum() const + { + return frustum_; + } + + void handleEvent(const Event& event); + void update(Scalar t, Scalar dt); + private: + Vector3 position_; + Quaternion rotation_; + Matrix4 projection_; + + Matrix4 modelview_; + Frustum frustum_; + + Lerp3 pInterp_; };