ImGui & UserInterface class
This commit is contained in:
		
							parent
							
								
									8841216238
								
							
						
					
					
						commit
						4621f86cb2
					
				
					 19 changed files with 192 additions and 28 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -7,3 +7,6 @@
 | 
				
			||||||
[submodule "Dependencies/glm"]
 | 
					[submodule "Dependencies/glm"]
 | 
				
			||||||
	path = Dependencies/glm
 | 
						path = Dependencies/glm
 | 
				
			||||||
	url = https://github.com/g-truc/glm
 | 
						url = https://github.com/g-truc/glm
 | 
				
			||||||
 | 
					[submodule "Dependencies/imgui"]
 | 
				
			||||||
 | 
						path = Dependencies/imgui
 | 
				
			||||||
 | 
						url = https://github.com/Light3039/imgui
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,3 +23,4 @@ include "../Engine/"
 | 
				
			||||||
group "Dependencies"
 | 
					group "Dependencies"
 | 
				
			||||||
include "../Dependencies/GLFW/"
 | 
					include "../Dependencies/GLFW/"
 | 
				
			||||||
include "../Dependencies/GLAD/"
 | 
					include "../Dependencies/GLAD/"
 | 
				
			||||||
 | 
					include "../Dependencies/imgui/"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								Dependencies/GLAD/premake5.lua
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								Dependencies/GLAD/premake5.lua
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -15,6 +15,8 @@ project "GLAD"
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"**.c",
 | 
							"**.c",
 | 
				
			||||||
		"**.h",
 | 
							"**.h",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							"premake5.lua"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	-- Dependencies --
 | 
						-- Dependencies --
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								Dependencies/imgui
									
										
									
									
										vendored
									
									
										Submodule
									
								
							
							
						
						
									
										1
									
								
								Dependencies/imgui
									
										
									
									
										vendored
									
									
										Submodule
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Subproject commit 04fd5072fbc635cc7a8814b8543d40836248d3a7
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,8 @@ project "Engine"
 | 
				
			||||||
		(dependenciesdir .. "spdlog/include/"),
 | 
							(dependenciesdir .. "spdlog/include/"),
 | 
				
			||||||
		(dependenciesdir .. "glfw/include/"),
 | 
							(dependenciesdir .. "glfw/include/"),
 | 
				
			||||||
		(dependenciesdir .. "glad/include"),
 | 
							(dependenciesdir .. "glad/include"),
 | 
				
			||||||
 | 
							(dependenciesdir .. "imgui/"),
 | 
				
			||||||
 | 
							(dependenciesdir .. "imgui/backends"),
 | 
				
			||||||
		(dependenciesdir .. "glm/"),
 | 
							(dependenciesdir .. "glm/"),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +44,7 @@ project "Engine"
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"GLFW",
 | 
							"GLFW",
 | 
				
			||||||
		"GLAD",
 | 
							"GLAD",
 | 
				
			||||||
 | 
							"ImGui",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	--- Filters ---
 | 
						--- Filters ---
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,10 @@ namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			m_Window->GetGfxContext()->GetRenderCommand()->SwapBuffers();
 | 
								m_Window->GetGfxContext()->GetRenderCommand()->SwapBuffers();
 | 
				
			||||||
			m_Window->GetGfxContext()->GetRenderCommand()->ClearBackBuffer();
 | 
								m_Window->GetGfxContext()->GetRenderCommand()->ClearBackBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								m_Window->GetGfxContext()->GetUserInterface()->Begin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								m_Window->GetGfxContext()->GetUserInterface()->End();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Light {
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GraphicsContext* GraphicsContext::s_Context;
 | 
						GraphicsContext* GraphicsContext::s_Context = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GraphicsContext* GraphicsContext::Create(GraphicsAPI api, GLFWwindow* windowHandle)
 | 
						GraphicsContext* GraphicsContext::Create(GraphicsAPI api, GLFWwindow* windowHandle)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ namespace Light {
 | 
				
			||||||
		case Light::GraphicsAPI::OpenGL:
 | 
							case Light::GraphicsAPI::OpenGL:
 | 
				
			||||||
			s_Context = new glGraphicsContext(windowHandle);
 | 
								s_Context = new glGraphicsContext(windowHandle);
 | 
				
			||||||
			s_Context->m_RenderCommand = std::unique_ptr<RenderCommand>(RenderCommand::Create(windowHandle));
 | 
								s_Context->m_RenderCommand = std::unique_ptr<RenderCommand>(RenderCommand::Create(windowHandle));
 | 
				
			||||||
 | 
								s_Context->m_UserInterface = std::unique_ptr<UserInterface>(UserInterface::Create(windowHandle));
 | 
				
			||||||
			// ...Renderer
 | 
								// ...Renderer
 | 
				
			||||||
			// ...UserInterface...
 | 
								// ...UserInterface...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "RenderCommand.h"
 | 
					#include "RenderCommand.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "UserInterface/UserInterface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct GLFWwindow {};
 | 
					struct GLFWwindow {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Light {
 | 
					namespace Light {
 | 
				
			||||||
| 
						 | 
					@ -19,6 +21,7 @@ namespace Light {
 | 
				
			||||||
		static GraphicsContext* s_Context;
 | 
							static GraphicsContext* s_Context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		std::unique_ptr<RenderCommand> m_RenderCommand;
 | 
							std::unique_ptr<RenderCommand> m_RenderCommand;
 | 
				
			||||||
 | 
							std::unique_ptr<UserInterface> m_UserInterface;
 | 
				
			||||||
	protected:
 | 
						protected:
 | 
				
			||||||
		GraphicsAPI m_GraphicsAPI;
 | 
							GraphicsAPI m_GraphicsAPI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +32,8 @@ namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		static inline GraphicsAPI GetGraphicsAPI() { return s_Context->m_GraphicsAPI; }
 | 
							static inline GraphicsAPI GetGraphicsAPI() { return s_Context->m_GraphicsAPI; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		virtual RenderCommand* GetRenderCommand() { return m_RenderCommand.get(); }
 | 
							inline RenderCommand* GetRenderCommand() { return m_RenderCommand.get(); }
 | 
				
			||||||
 | 
							inline UserInterface* GetUserInterface() { return m_UserInterface.get(); }
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -14,12 +14,17 @@ namespace Light {
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	private:
 | 
						private:
 | 
				
			||||||
		std::string m_Name;
 | 
							std::string m_Name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public:
 | 
						public:
 | 
				
			||||||
		Layer(const std::string& name): m_Name(name) {}
 | 
							Layer(const std::string& name): m_Name(name) {}
 | 
				
			||||||
		virtual ~Layer() = default;
 | 
							virtual ~Layer() = default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		inline const std::string& GetName() const { return m_Name; }
 | 
							inline const std::string& GetName() const { return m_Name; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Updates
 | 
				
			||||||
 | 
							virtual void OnUpdate(float deltaTime) {}
 | 
				
			||||||
 | 
							virtual void OnUserInterfaceUpdate() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Mouse events
 | 
							// Mouse events
 | 
				
			||||||
		virtual bool OnMouseMoved(const MouseMovedEvent& event) { return false; }
 | 
							virtual bool OnMouseMoved(const MouseMovedEvent& event) { return false; }
 | 
				
			||||||
		virtual bool OnButtonPressed(const ButtonPressedEvent& event) { return false; }
 | 
							virtual bool OnButtonPressed(const ButtonPressedEvent& event) { return false; }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,30 +2,32 @@
 | 
				
			||||||
#include "LayerStack.h"
 | 
					#include "LayerStack.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <functional>
 | 
					#include <functional>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Light {
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LayerStack* LayerStack::s_Context = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LayerStack::LayerStack()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							s_Context = this; // TODO: ASSERT
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	LayerStack::~LayerStack()
 | 
						LayerStack::~LayerStack()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		for (Layer* layer : m_Layers)
 | 
							for (Layer* layer : m_Layers)
 | 
				
			||||||
			delete layer;
 | 
								delete layer;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void LayerStack::PushLayer(Layer* layer)
 | 
						void LayerStack::OnUpdate(float deltaTime)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		m_Layers.push_back(layer);
 | 
							for (auto it = m_Begin; it != m_End; it++)
 | 
				
			||||||
		m_Begin = m_Layers.begin();
 | 
								(*it)->OnUpdate(deltaTime);
 | 
				
			||||||
		m_End = m_Layers.end();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		LT_ENGINE_TRACE("LayerStack::PushLayer: Attached [{}]", layer->GetName());
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void LayerStack::PopLayer(Layer* layer)
 | 
						void LayerStack::OnUserInterfaceUpdate()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		m_Layers.erase(std::find(m_Layers.begin(), m_Layers.end(), layer));
 | 
							for (auto it = m_Begin; it != m_End; it++)
 | 
				
			||||||
		m_Begin = m_Layers.begin();
 | 
								(*it)->OnUserInterfaceUpdate();
 | 
				
			||||||
		m_End = m_Layers.end();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		LT_ENGINE_TRACE("LayerStack::PushLayer: Detatched[{}]", layer->GetName());
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void LayerStack::OnEvent(const Event& event)
 | 
						void LayerStack::OnEvent(const Event& event)
 | 
				
			||||||
| 
						 | 
					@ -84,5 +86,22 @@ namespace Light {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void LayerStack::AttachLayerImpl(Layer* layer)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							m_Layers.push_back(layer);
 | 
				
			||||||
 | 
							m_Begin = m_Layers.begin();
 | 
				
			||||||
 | 
							m_End = m_Layers.end();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							LT_ENGINE_TRACE("LayerStack::PushLayer: Attached [{}]", layer->GetName());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void LayerStack::DetatchLayerImpl(Layer* layer)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							m_Layers.erase(std::find(m_Layers.begin(), m_Layers.end(), layer));
 | 
				
			||||||
 | 
							m_Begin = m_Layers.begin();
 | 
				
			||||||
 | 
							m_End = m_Layers.end();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							LT_ENGINE_TRACE("LayerStack::PushLayer: Detatched[{}]", layer->GetName());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -13,22 +13,32 @@ namespace Light {
 | 
				
			||||||
	class LayerStack
 | 
						class LayerStack
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	private:
 | 
						private:
 | 
				
			||||||
 | 
							static LayerStack* s_Context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		std::vector<Layer*> m_Layers;
 | 
							std::vector<Layer*> m_Layers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		std::vector<Layer*>::iterator m_Begin;
 | 
							std::vector<Layer*>::iterator m_Begin;
 | 
				
			||||||
		std::vector<Layer*>::iterator m_End;
 | 
							std::vector<Layer*>::iterator m_End;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
	public:
 | 
						public:
 | 
				
			||||||
 | 
							LayerStack();
 | 
				
			||||||
		~LayerStack();
 | 
							~LayerStack();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void PushLayer(Layer* layer);
 | 
							static inline void AttachLayer(Layer* layer) { s_Context->AttachLayerImpl(layer); }
 | 
				
			||||||
		void PopLayer(Layer* layer);
 | 
							static inline void DetatchLayer(Layer* layer) { s_Context->DetatchLayerImpl(layer); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							void OnUpdate(float deltaTime);
 | 
				
			||||||
 | 
							void OnUserInterfaceUpdate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void OnEvent(const Event& event);
 | 
							void OnEvent(const Event& event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		std::vector<Layer*>::iterator begin() { return m_Layers.begin(); }
 | 
							std::vector<Layer*>::iterator begin() { return m_Layers.begin(); }
 | 
				
			||||||
		std::vector<Layer*>::iterator end() { return m_Layers.end(); }
 | 
							std::vector<Layer*>::iterator end() { return m_Layers.end(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							void AttachLayerImpl(Layer* layer);
 | 
				
			||||||
 | 
							void DetatchLayerImpl(Layer* layer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,19 @@
 | 
				
			||||||
#include "ltpch.h"
 | 
					#include "ltpch.h"
 | 
				
			||||||
 | 
					#include "UserInterface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Graphics/GraphicsContext.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "OpenGL/glUserInterface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Light {
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	class UserInterface
 | 
						UserInterface* UserInterface::Create(GLFWwindow* windowHandle)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	private:
 | 
							switch (GraphicsContext::GetGraphicsAPI())
 | 
				
			||||||
	public:
 | 
							{
 | 
				
			||||||
	};
 | 
							case GraphicsAPI::OpenGL:
 | 
				
			||||||
 | 
								return new glUserInterface(windowHandle);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Base.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct GLFWwindow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						class UserInterface
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							static UserInterface* Create(GLFWwindow* windowHandle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							virtual void Begin() = 0;
 | 
				
			||||||
 | 
							virtual void End() = 0;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								Engine/src/Platform/GraphicsAPI/OpenGL/glUserInterface.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								Engine/src/Platform/GraphicsAPI/OpenGL/glUserInterface.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					#include "ltpch.h"
 | 
				
			||||||
 | 
					#include "glUserInterface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <imgui.h>
 | 
				
			||||||
 | 
					#include <imgui_impl_glfw.h>
 | 
				
			||||||
 | 
					#include <imgui_impl_opengl3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glUserInterface::glUserInterface(GLFWwindow* windowHandle)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							IMGUI_CHECKVERSION();
 | 
				
			||||||
 | 
							ImGui::CreateContext();
 | 
				
			||||||
 | 
							ImGuiIO& io = ImGui::GetIO();
 | 
				
			||||||
 | 
							io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ImGui::StyleColorsDark();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ImGui_ImplGlfw_InitForOpenGL(windowHandle, true);
 | 
				
			||||||
 | 
							ImGui_ImplOpenGL3_Init();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glUserInterface::~glUserInterface()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ImGui_ImplOpenGL3_Shutdown();
 | 
				
			||||||
 | 
							ImGui_ImplGlfw_Shutdown();
 | 
				
			||||||
 | 
							ImGui::DestroyContext();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void glUserInterface::Begin()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ImGui_ImplOpenGL3_NewFrame();
 | 
				
			||||||
 | 
							ImGui_ImplGlfw_NewFrame();
 | 
				
			||||||
 | 
							ImGui::NewFrame();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ImGui::ShowDemoWindow();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void glUserInterface::End()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ImGui::Render();
 | 
				
			||||||
 | 
							ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								Engine/src/Platform/GraphicsAPI/OpenGL/glUserInterface.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Engine/src/Platform/GraphicsAPI/OpenGL/glUserInterface.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Base.h"
 | 
				
			||||||
 | 
					#include "UserInterface/UserInterface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						class glUserInterface : public UserInterface
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							glUserInterface(GLFWwindow* windowHandle);
 | 
				
			||||||
 | 
							~glUserInterface();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							void Begin() override;
 | 
				
			||||||
 | 
							void End() override;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								Sandbox/imgui.ini
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Sandbox/imgui.ini
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					[Window][Debug##Default]
 | 
				
			||||||
 | 
					Pos=60,60
 | 
				
			||||||
 | 
					Size=400,400
 | 
				
			||||||
 | 
					Collapsed=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Window][Dear ImGui Demo]
 | 
				
			||||||
 | 
					Pos=219,40
 | 
				
			||||||
 | 
					Size=550,536
 | 
				
			||||||
 | 
					Collapsed=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,8 @@ project "Sandbox"
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"%{prj.location}/src/**.h",
 | 
							"%{prj.location}/src/**.h",
 | 
				
			||||||
		"%{prj.location}/src/**.cpp",
 | 
							"%{prj.location}/src/**.cpp",
 | 
				
			||||||
		"%{prj.location}/**.lua",
 | 
					
 | 
				
			||||||
 | 
							"%{prj.location}/premake5.lua",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- Dependencies --
 | 
						-- Dependencies --
 | 
				
			||||||
| 
						 | 
					@ -30,12 +31,17 @@ project "Sandbox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- 3rd party
 | 
							-- 3rd party
 | 
				
			||||||
		(dependenciesdir .. "spdlog/include/"),
 | 
							(dependenciesdir .. "spdlog/include/"),
 | 
				
			||||||
 | 
							(dependenciesdir .. "imgui/"),
 | 
				
			||||||
 | 
							(dependenciesdir .. "imgui/backends"),
 | 
				
			||||||
		(dependenciesdir .. "glm/"),
 | 
							(dependenciesdir .. "glm/"),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	links
 | 
						links
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"Engine",
 | 
							"Engine",
 | 
				
			||||||
 | 
							"GLFW",
 | 
				
			||||||
 | 
							"GLAD",
 | 
				
			||||||
 | 
							"ImGui",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	--- Filters ---
 | 
						--- Filters ---
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,15 @@
 | 
				
			||||||
#include <LightEngine.h>
 | 
					#include <LightEngine.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "SandboxLayer.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Sandbox : public Light::Application
 | 
					class Sandbox : public Light::Application
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	Sandbox()
 | 
						Sandbox()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		LT_CLIENT_TRACE("Sandbox::Sandbox");
 | 
							LT_CLIENT_TRACE("Sandbox::Sandbox");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Light::LayerStack::AttachLayer(new SandboxLayer("SandboxLayer"));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	~Sandbox()
 | 
						~Sandbox()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,9 @@
 | 
				
			||||||
#include <LightEngine.h>
 | 
					#include <LightEngine.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestLayer : public Light::Layer
 | 
					class SandboxLayer : public Light::Layer
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	TestLayer(const std::string& name) : Light::Layer(name) {}
 | 
						SandboxLayer(const std::string& name): Light::Layer(name) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Mouse events
 | 
						// Mouse events
 | 
				
			||||||
	virtual bool OnMouseMoved(const Light::MouseMovedEvent& event) override { LT_ENGINE_TRACE("{}", event.GetInfoLog()); return false; }
 | 
						virtual bool OnMouseMoved(const Light::MouseMovedEvent& event) override { LT_ENGINE_TRACE("{}", event.GetInfoLog()); return false; }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue