#pragma once

#include <utils.hpp>
#include <mutex>

namespace Game::Object {
    class Camera {
        public:
            Camera() = default;
            DISABLE_COPY_AND_MOVE(Camera)
            ~Camera() = default;

            static Camera& getInstance();

            void setPosition(float x, float y);
            void getPosition(float& x, float& y) const;
            void move(float deltaX, float deltaY);
        
        private:
            mutable std::mutex mMutex;
            float mX = 0.0f;
            float mY = 0.0f;
    };
}