#pragma once #include "Core/Timestep.h" #include "Rendering/Buffers/Framebuffer.h" #include "Scene/Scene.h" #include "Core/Core.h" struct GLFWwindow; namespace Nuake { class Window { private: const std::string DEFAULT_TITLE = "Untitled Window"; static Ref s_Instance; std::string m_Title; int m_Width = 1280; int m_Height = 720; GLFWwindow* m_Window; Ref m_Framebuffer; Ref m_Scene; Vector2 m_FramebufferOffset; public: Window(); ~Window(); static Ref Get(); // Get the window instance GLFWwindow* GetHandle(); bool ShouldClose(); int Init(); void Update(Timestep ts); void FixedUpdate(Timestep ts); void Draw(); void EndDraw(); Ref GetFrameBuffer() const; Vector2 GetSize() const; void SetSize(const Vector2& size); void SetMonitor(int monitor); Ref GetScene(); bool SetScene(Ref scene); void SetTitle(const std::string& title); std::string GetTitle(); }; }