#pragma once
#include <memory>

namespace glm {
    struct vec2;
}

class Camera {
public:
    using Vector2f = glm::vec2;

private:
    std::unique_ptr<Vector2f> m_pos;
    float m_zoom = 1.0f;
    float m_zPos = 0.0f;
    bool m_enabled = true;

public:
    explicit Camera();
    explicit Camera(float x, float y);
    Camera(const Camera& other);
    ~Camera();
    void setPosition(float x, float y);
    void setPosition(Vector2f);
    Vector2f getPosition() const;
    void setZoom(float);
    void zoom(float);
    float getZoom() const;
    void setZPosition(float);
    float getZPosition() const;

    void move(float x, float y);
    void reset();
    bool isEnabled() const;
    void setEnabled(bool);

};
