#ifndef CAMERA3D_H
#define CAMERA3D_H

#include "client/math/Ray.h"

class Camera final {
public:
    Camera(const Ray& ray);

    const Vector& getBack() const;
    const Vector& getRight() const;
    const Vector& getUp() const;

    const Vector& getFlatBack() const;
    const Vector& getFlatRight() const;
    const Vector& getFlatUp() const;

    const Vector& getPosition() const;

    void update(float lag);

private:
    const Ray& ray;

    Vector back;
    Vector right;
    Vector up;

    Vector flatBack;
    Vector flatRight;
    Vector flatUp;

    Vector position;
};

#endif