EditorGui setup
This commit is contained in:
parent
b003ffbaec
commit
60b85960ff
@ -1,30 +1,71 @@
|
|||||||
namespace Nerfed.Editor.Editor
|
using ImGuiNET;
|
||||||
|
using Nerfed.Runtime;
|
||||||
|
using Nerfed.Runtime.Graphics;
|
||||||
|
using Nerfed.Runtime.Gui;
|
||||||
|
|
||||||
|
namespace Nerfed.Editor
|
||||||
{
|
{
|
||||||
internal static class EditorGui
|
internal static class EditorGui
|
||||||
{
|
{
|
||||||
|
private static GuiController guiController;
|
||||||
|
|
||||||
internal static void Initialize()
|
internal static void Initialize()
|
||||||
{
|
{
|
||||||
// Create GuiController.
|
// Create GuiController.
|
||||||
|
guiController = new GuiController(Engine.GraphicsDevice, Engine.MainWindow, Color.DimGray);
|
||||||
// Subscribe to GUI update.
|
// Subscribe to GUI update.
|
||||||
// GuiController.OnGui call => UpdateDock;
|
// GuiController.OnGui call => UpdateDock;
|
||||||
// GuiController.OnGui call => UpdateEditorWindows;
|
// GuiController.OnGui call => UpdateEditorWindows;
|
||||||
// GuiController.OnGui call => ...;
|
// GuiController.OnGui call => ...;
|
||||||
|
guiController.OnGui += HandleOnGui;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void Update()
|
internal static void Update()
|
||||||
{
|
{
|
||||||
// Update GuiController.
|
// Update GuiController.
|
||||||
|
guiController.Update(Engine.Timestep.TotalSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void Render()
|
internal static void Render()
|
||||||
{
|
{
|
||||||
// Reneder GuiController.
|
// Reneder GuiController.
|
||||||
|
guiController.Render();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void Quit()
|
||||||
|
{
|
||||||
|
guiController.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UpdateDock()
|
private static void UpdateDock()
|
||||||
{
|
{
|
||||||
// Setup default dockspace for the main window.
|
// Setup default dockspace for the main window.
|
||||||
|
uint id = ImGui.GetID("MainDockSpace");
|
||||||
|
ImGui.DockSpaceOverViewport(id, ImGui.GetMainViewport(), ImGuiDockNodeFlags.None);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateMainMenu()
|
||||||
|
{
|
||||||
|
if (ImGui.BeginMainMenuBar())
|
||||||
|
{
|
||||||
|
if (ImGui.BeginMenu("File"))
|
||||||
|
{
|
||||||
|
if (ImGui.MenuItem("Exit"))
|
||||||
|
{
|
||||||
|
Engine.Quit();
|
||||||
|
}
|
||||||
|
ImGui.EndMenu();
|
||||||
|
}
|
||||||
|
ImGui.EndMainMenuBar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void HandleOnGui()
|
||||||
|
{
|
||||||
|
UpdateMainMenu();
|
||||||
|
UpdateDock();
|
||||||
|
|
||||||
|
ImGui.ShowDemoWindow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,21 +18,25 @@ private static void HandleOnInitialize()
|
|||||||
{
|
{
|
||||||
// Open project.
|
// Open project.
|
||||||
// Setip EditorGui.
|
// Setip EditorGui.
|
||||||
|
EditorGui.Initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void HandleOnUpdate()
|
private static void HandleOnUpdate()
|
||||||
{
|
{
|
||||||
// Editor Update.
|
// Editor Update.
|
||||||
|
EditorGui.Update();
|
||||||
|
|
||||||
|
|
||||||
// Try Catch UserCode Update.
|
// Try Catch UserCode Update.
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void HandleOnRender()
|
private static void HandleOnRender()
|
||||||
{
|
{
|
||||||
// Editor GUI Render.
|
EditorGui.Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void HandleOnQuit()
|
private static void HandleOnQuit()
|
||||||
{
|
{
|
||||||
|
EditorGui.Quit();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
namespace Nerfed.Runtime.Gui;
|
namespace Nerfed.Runtime.Gui;
|
||||||
|
|
||||||
internal class GuiController : IDisposable
|
public class GuiController : IDisposable
|
||||||
{
|
{
|
||||||
public event Action OnGui;
|
public event Action OnGui;
|
||||||
|
|
||||||
@ -144,9 +144,13 @@ public GuiController(GraphicsDevice graphicsDevice, Window mainWindow, Color cle
|
|||||||
io.BackendFlags |= ImGuiBackendFlags.HasSetMousePos;
|
io.BackendFlags |= ImGuiBackendFlags.HasSetMousePos;
|
||||||
io.BackendFlags |= ImGuiBackendFlags.PlatformHasViewports;
|
io.BackendFlags |= ImGuiBackendFlags.PlatformHasViewports;
|
||||||
io.BackendFlags |= ImGuiBackendFlags.RendererHasViewports;
|
io.BackendFlags |= ImGuiBackendFlags.RendererHasViewports;
|
||||||
|
|
||||||
|
UpdatePerFrameImGuiData(1.0 / 60.0);
|
||||||
|
ImGui.NewFrame();
|
||||||
|
frameBegun = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(float deltaTime)
|
public void Update(double deltaTime)
|
||||||
{
|
{
|
||||||
if (frameBegun)
|
if (frameBegun)
|
||||||
{
|
{
|
||||||
@ -167,12 +171,12 @@ public void Update(float deltaTime)
|
|||||||
ImGui.EndFrame();
|
ImGui.EndFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdatePerFrameImGuiData(float deltaSeconds)
|
private void UpdatePerFrameImGuiData(double deltaSeconds)
|
||||||
{
|
{
|
||||||
ImGuiIOPtr io = ImGui.GetIO();
|
ImGuiIOPtr io = ImGui.GetIO();
|
||||||
io.DisplaySize = new Vector2(mainWindow.Width, mainWindow.Height);
|
io.DisplaySize = new Vector2(mainWindow.Width, mainWindow.Height);
|
||||||
io.DisplayFramebufferScale = new Vector2(1, 1);
|
io.DisplayFramebufferScale = new Vector2(1, 1);
|
||||||
io.DeltaTime = deltaSeconds; // DeltaTime is in seconds.
|
io.DeltaTime = (float)deltaSeconds; // DeltaTime is in seconds.
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateInput()
|
private void UpdateInput()
|
||||||
|
Loading…
Reference in New Issue
Block a user