#pragma once class Camera; class Level { public: Level(); explicit Level(Camera* camera); virtual ~Level(); Level(const Level& other) = default; Level(Level&& other) = default; virtual void Update(float elapsedSec) = 0; virtual void Draw() const = 0; virtual void MouseMove(const Vector2f& mousePos) = 0; virtual void ProcessImGui() = 0; protected: Camera* m_pCamera; };