#ifndef _MOOF_CAMERA_HH_
#define _MOOF_CAMERA_HH_
+#include <Moof/Event.hh>
+#include <Moof/Interpolator.hh>
+#include <Moof/Math.hh>
+
namespace Mf {
class Camera
{
+ void calculateSecondary();
+
public:
+ Camera() :
+ position_(0.0, 0.0, 0.0)
+ {
+ quaternion_rotation_world_y(rotation_, 0.0);
+ srcRotation_ = rotation_;
+ dstRotation_ = rotation_;
+ calculateSecondary();
+ }
+
+ void setPosition(const Vector3& point);
+ void setRotation(const Quaternion& rotation);
+
+ void lookAt(const Vector3& point);
+
+ const Matrix4& getTransformation() const
+ {
+ return transformation_;
+ }
+
+ void adjustFromInput(const Event& event);
+
+ void update(Scalar t, Scalar dt);
+
private:
+ Vector3 position_;
+ Quaternion rotation_;
+
+ Matrix4 transformation_;
+
+ Lerpv3 pInterp_;
+
+ Quaternion srcRotation_;
+ Quaternion dstRotation_;
+ Scalar tInterp_;
};