#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: static Ref s_Instance; int m_Width = 1280; int m_Height = 720; GLFWwindow* m_Window; Ref m_Framebuffer; Ref m_GBuffer; Ref m_DeferredBuffer; 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; Ref GetGBuffer() const; Ref GetDeferredBuffer() const; Vector2 GetSize(); Ref GetScene(); bool SetScene(Ref scene); }; }