From c1fc1c3fd83e741bb9ce5600c94471cbb629ae48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sun, 7 Feb 2021 13:00:17 +0100 Subject: [PATCH] Added extension functions for ImGui --- GlitchyEngine/src/ImGui/ImGuiExtension.bf | 18 +++++++++++++ Sandbox/src/SandboxApp.bf | 33 ++++++++--------------- 2 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 GlitchyEngine/src/ImGui/ImGuiExtension.bf diff --git a/GlitchyEngine/src/ImGui/ImGuiExtension.bf b/GlitchyEngine/src/ImGui/ImGuiExtension.bf new file mode 100644 index 0000000..ed31a70 --- /dev/null +++ b/GlitchyEngine/src/ImGui/ImGuiExtension.bf @@ -0,0 +1,18 @@ +using GlitchyEngine.Math; +namespace ImGui +{ + extension ImGui + { + // TODO: Color-functions + + public static bool ColorEdit3(char* label, ref ColorRGB col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorEdit3Impl(label, *(float[3]*)&col, flags); + public static bool ColorEdit3(char* label, ref ColorRGBA col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorEdit3Impl(label, *(float[3]*)&col, flags); + + public static bool ColorEdit4(char* label, ref ColorRGBA col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorEdit4Impl(label, *(float[4]*)&col, flags); + + public static bool ColorPicker3(char* label, ref ColorRGB col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorPicker3Impl(label, *(float[3]*)&col, flags); + public static bool ColorPicker3(char* label, ref ColorRGBA col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorPicker3Impl(label, *(float[3]*)&col, flags); + + public static bool ColorPicker4(char* label, ref ColorRGBA col, ColorEditFlags flags = (ColorEditFlags) 0, float* ref_col = null) => ColorPicker4Impl(label, *(float[4]*)&col, flags, ref_col); + } +} diff --git a/Sandbox/src/SandboxApp.bf b/Sandbox/src/SandboxApp.bf index d07a9f2..da6a89d 100644 --- a/Sandbox/src/SandboxApp.bf +++ b/Sandbox/src/SandboxApp.bf @@ -53,7 +53,6 @@ namespace Sandbox Effect _effect ~ _?.ReleaseRef(); - //Buffer _cBuffer ~ _?.ReleaseRef(); ConstantBuffer _cBuffer ~ _?.ReleaseRef(); private Vector3 CircleCoord(float angle) @@ -82,24 +81,11 @@ namespace Sandbox VertexElement(.R32G32B32_Float, "POSITION"), VertexElement(.R8G8B8A8_UNorm, "COLOR"), ), _effect.VertexShader); - /* - _cBuffer = new Buffer(Application.Get().Window.Context, .(0, .Constant, .Dynamic, .Write)); - _cBuffer.Data = .White; - _cBuffer.Update(); - */ - //_effect.PixelShader.Buffers.ReplaceBuffer("Constants", _cBuffer); - Buffer buffer = _effect.PixelShader.Buffers["Constants"]; - _cBuffer = buffer as ConstantBuffer; + _cBuffer = _effect.PixelShader.Buffers["Constants"] as ConstantBuffer; _cBuffer.AddRef(); - if(_cBuffer != null) - { - _cBuffer["BaseColor"].SetData(ColorRGBA.Red); - _cBuffer.Update(); - } - // Create hexagon { _geometryBinding = new GeometryBinding(Application.Get().Window.Context); @@ -225,8 +211,7 @@ namespace Sandbox Application.Get().Window.Context.SetViewport(Application.Get().Window.Context.SwapChain.BackbufferViewport); Renderer.BeginScene(_camera); - - //_cBuffer.Data = .White; + _cBuffer["BaseColor"].SetData(ColorRGBA.White); _cBuffer.Update(); @@ -237,11 +222,9 @@ namespace Sandbox for(int y < 20) { if((x + y) % 2 == 0) - //_cBuffer.Data = .Red; - _cBuffer["BaseColor"].SetData(ColorRGBA.Red); + _cBuffer["BaseColor"].SetData(_squareColor0); else - _cBuffer["BaseColor"].SetData(ColorRGBA.Blue); - //_cBuffer.Data = .Blue; + _cBuffer["BaseColor"].SetData(_squareColor1); _cBuffer.Update(); @@ -250,9 +233,11 @@ namespace Sandbox } Renderer.EndScene(); - } + ColorRGBA _squareColor0 = ColorRGBA.CornflowerBlue; + ColorRGBA _squareColor1; + public override void OnEvent(Event event) { EventDispatcher dispatcher = scope EventDispatcher(event); @@ -264,6 +249,10 @@ namespace Sandbox { ImGui.Begin("Test"); + ImGui.ColorEdit3("Square Color", ref _squareColor0); + + _squareColor1 = ColorRGBA.White - _squareColor0; + ImGui.End(); return false;