From 16c3d7c44de17309bd77bfaa1a0f19fc4ecd5ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 28 Jul 2023 13:38:59 +0200 Subject: [PATCH] Updated ImGui --- .../src/Assets/MaterialAssetLoader.bf | 8 +-- GlitchyEditor/src/EditWindows/AssetViewer.bf | 64 +++++++++++++++++-- .../src/EditWindows/ContentBrowserWindow.bf | 4 +- GlitchyEditor/src/EditWindows/LogWindow.bf | 11 ++-- GlitchyEditor/src/EditorLayer.bf | 16 +++-- GlitchyEditor/src/TextureViewer.bf | 6 +- GlitchyEngine/src/ImGui/ImGuiExtension.bf | 12 ++-- .../src/Platform/DX11/ImGui/Dx11ImGui.bf | 8 +-- GlitchyEngine/vendor/imgui | 2 +- Sandbox/src/TextureViewer.bf | 6 +- 10 files changed, 97 insertions(+), 40 deletions(-) diff --git a/GlitchyEditor/src/Assets/MaterialAssetLoader.bf b/GlitchyEditor/src/Assets/MaterialAssetLoader.bf index 31583bc..77d410c 100644 --- a/GlitchyEditor/src/Assets/MaterialAssetLoader.bf +++ b/GlitchyEditor/src/Assets/MaterialAssetLoader.bf @@ -120,7 +120,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor value = (float3)ColorRGB.LinearToSRGB((ColorRGB)value); - if (ImGui.ColorEdit3(displayName.Ptr, *(float[3]*)&value)) + if (ImGui.ColorEdit3(displayName.Ptr, ref *(float[3]*)&value)) { value = (float3)ColorRGB.SRgbToLinear((ColorRGB)value); material.SetVariable(variable.Name, value); @@ -132,7 +132,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor value = (float4)ColorRGBA.LinearToSRGB((ColorRGBA)value); - if (ImGui.ColorEdit4(displayName.Ptr, *(float[4]*)&value)) + if (ImGui.ColorEdit4(displayName.Ptr, ref *(float[4]*)&value)) { value = (float4)ColorRGBA.SRgbToLinear((ColorRGBA)value); material.SetVariable(variable.Name, value); @@ -149,7 +149,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor value = (float3)ColorRGB.LinearToSRGB((ColorRGB)value); - if (ImGui.ColorEdit3(displayName.Ptr, *(float[3]*)&value, .HDR | .Float)) + if (ImGui.ColorEdit3(displayName.Ptr, ref *(float[3]*)&value, .HDR | .Float)) { value = (float3)ColorRGB.SRgbToLinear((ColorRGB)value); material.SetVariable(variable.Name, value); @@ -161,7 +161,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor value = (float4)ColorRGBA.LinearToSRGB((ColorRGBA)value); - if (ImGui.ColorEdit4(displayName.Ptr, *(float[4]*)&value, .HDR | .Float)) + if (ImGui.ColorEdit4(displayName.Ptr, ref *(float[4]*)&value, .HDR | .Float)) { value = (float4)ColorRGBA.SRgbToLinear((ColorRGBA)value); material.SetVariable(variable.Name, value); diff --git a/GlitchyEditor/src/EditWindows/AssetViewer.bf b/GlitchyEditor/src/EditWindows/AssetViewer.bf index a02e96a..0e109a9 100644 --- a/GlitchyEditor/src/EditWindows/AssetViewer.bf +++ b/GlitchyEditor/src/EditWindows/AssetViewer.bf @@ -31,7 +31,58 @@ class AssetViewer : EditorWindow ImGui.PushStyleVar(.CellPadding, .(0, 0)); - bool alt_pressed = ImGui.GetIO().KeyAlt; + ImGui.Columns(2); + + if (ImGui.BeginChild("Assets")) + { + DrawAssetList(); + + ImGui.EndChild(); + } + + ImGui.NextColumn(); + + if (ImGui.BeginChild("Files")) + { + DrawAssetViewer(); + + ImGui.EndChild(); + } + + ImGui.Columns(1); + + /*if (ImGui.BeginTable("AssetViewerTable", 2, .BordersInnerV | .Resizable | .Reorderable | .NoPadOuterX)) + { + if (alt_pressed) + { + // Header anzeigen, damit sie neu angeordnet werden können + ImGui.TableSetupColumn("Assets"); + ImGui.TableSetupColumn("Viewer"); + ImGui.TableHeadersRow(); + } + ImGui.TableNextRow(); + ImGui.TableSetColumnIndex(0); + + if (ImGui.BeginChild("Assets")) + { + //DrawAssetList(); + + ImGui.EndChild(); + } + + ImGui.TableNextColumn(); + + if (ImGui.BeginChild("Files")) + { + //DrawAssetViewer(); + + ImGui.EndChild(); + } + + ImGui.EndTable(); + }*/ + + /*bool alt_pressed = ImGui.GetIO().KeyAlt; if (ImGui.BeginTable("AssetViewerTable", 2, .BordersInnerV | .Resizable | .Reorderable | .NoPadOuterX)) { @@ -42,13 +93,12 @@ class AssetViewer : EditorWindow ImGui.TableSetupColumn("Viewer"); ImGui.TableHeadersRow(); } - ImGui.TableNextRow(); ImGui.TableSetColumnIndex(0); - + if (ImGui.BeginChild("Assets")) { - DrawAssetList(); + //DrawAssetList(); ImGui.EndChild(); } @@ -57,13 +107,13 @@ class AssetViewer : EditorWindow if (ImGui.BeginChild("Files")) { - DrawAssetViewer(); + //DrawAssetViewer(); ImGui.EndChild(); } ImGui.EndTable(); - } + }*/ ImGui.PopStyleVar(1); @@ -211,7 +261,7 @@ class TexturererViewerer float maxDimension = max(width, height); - ImGui.SliderFloat2("Position", *(float[2]*)&_position, 2 * -maxDimension * _zoom, 2 * maxDimension * _zoom); + ImGui.SliderFloat2("Position", ref *(float[2]*)&_position, 2 * -maxDimension * _zoom, 2 * maxDimension * _zoom); ImGui.Separator(); diff --git a/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf b/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf index 75c007d..869fc92 100644 --- a/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf +++ b/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf @@ -270,7 +270,7 @@ namespace GlitchyEditor.EditWindows SubTexture2D image = s_FolderTexture; - ImGui.ImageButton(image, (.)(DirectoryItemSize - padding)); + ImGui.ImageButton("", image, (.)(DirectoryItemSize - padding)); ImGui.PopStyleColor(); @@ -310,7 +310,7 @@ namespace GlitchyEditor.EditWindows // TODO: preview images SubTexture2D image = entry->IsDirectory ? s_FolderTexture : s_FileTexture; - ImGui.ImageButton(image, (.)(DirectoryItemSize - padding)); + ImGui.ImageButton("FileImage", image, (.)(DirectoryItemSize - padding)); ImGui.PopStyleColor(); diff --git a/GlitchyEditor/src/EditWindows/LogWindow.bf b/GlitchyEditor/src/EditWindows/LogWindow.bf index 3660ac2..85f86be 100644 --- a/GlitchyEditor/src/EditWindows/LogWindow.bf +++ b/GlitchyEditor/src/EditWindows/LogWindow.bf @@ -130,13 +130,14 @@ class LogWindow : EditorWindow ImGui.Vec2 buttonSize = .(maxSpace, maxSpace); var col = ImGui.GetStyleColorVec4(.Button); + ImGui.PushStyleVar(.FramePadding, ImGui.Vec2(2, 2)); if (_visibleMessageTypes.HasFlag(.Trace)) ImGui.PushStyleColor(.Button, *col); else ImGui.PushStyleColor(.Button, .(0, 0, 0, 0)); - if (ImGui.ImageButtonEx(1, s_TraceIcon, buttonSize, .Zero, .Ones, .(2, 2))) + if (ImGui.ImageButtonEx(1, s_TraceIcon, buttonSize, .Zero, .Ones)) _visibleMessageTypes ^= .Trace; ImGui.PopStyleColor(); @@ -146,7 +147,7 @@ class LogWindow : EditorWindow else ImGui.PushStyleColor(.Button, .(0, 0, 0, 0)); - if (ImGui.ImageButtonEx(2, s_InfoIcon, buttonSize, .Zero, .Ones, .(2, 2))) + if (ImGui.ImageButtonEx(2, s_InfoIcon, buttonSize, .Zero, .Ones)) _visibleMessageTypes ^= .Info; ImGui.PopStyleColor(); @@ -156,7 +157,7 @@ class LogWindow : EditorWindow else ImGui.PushStyleColor(.Button, .(0, 0, 0, 0)); - if (ImGui.ImageButtonEx(3, s_WarningIcon, buttonSize, .Zero, .Ones, .(2, 2))) + if (ImGui.ImageButtonEx(3, s_WarningIcon, buttonSize, .Zero, .Ones)) _visibleMessageTypes ^= .Warning; ImGui.PopStyleColor(); @@ -167,11 +168,13 @@ class LogWindow : EditorWindow ImGui.PushStyleColor(.Button, .(0, 0, 0, 0)); - if (ImGui.ImageButtonEx(4, s_ErrorIcon, buttonSize, .Zero, .Ones, .(2, 2))) + if (ImGui.ImageButtonEx(4, s_ErrorIcon, buttonSize, .Zero, .Ones)) _visibleMessageTypes ^= .Error; ImGui.PopStyleColor(); + ImGui.PopStyleVar(); + ImGui.EndMenuBar(); } } diff --git a/GlitchyEditor/src/EditorLayer.bf b/GlitchyEditor/src/EditorLayer.bf index b48497e..a29d35b 100644 --- a/GlitchyEditor/src/EditorLayer.bf +++ b/GlitchyEditor/src/EditorLayer.bf @@ -432,9 +432,13 @@ namespace GlitchyEditor ImGui.SameLine(); ImGui.SetCursorPosX(centerX - totalWidth / 2); + + ImGui.PushID(0); - if (ImGui.ImageButton(_editorIcons.Play, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("", _editorIcons.Play, .(size, size), .Zero, .Ones)) OnScenePlay(); + + ImGui.PopID(); ImGui.AttachTooltip("Play the game."); @@ -442,7 +446,7 @@ namespace GlitchyEditor ImGui.PushID(1); - if (ImGui.ImageButton(_editorIcons.Simulate, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("", _editorIcons.Simulate, .(size, size), .Zero, .Ones)) OnSceneSimulate(); ImGui.PopID(); @@ -461,7 +465,7 @@ namespace GlitchyEditor //ImGui.SameLine(penX += size + 2 * padding); ImGui.SameLine(); - if (ImGui.ImageButton(_editorIcons.Pause, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("", _editorIcons.Pause, .(size, size), .Zero, .Ones)) _isPaused = !_isPaused; ImGui.PopID(); @@ -485,7 +489,7 @@ namespace GlitchyEditor SubTexture2D pauseButtonIcon = _isPaused ? _editorIcons.Play : _editorIcons.Pause; - if (ImGui.ImageButton(pauseButtonIcon, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("PlayPause", pauseButtonIcon, .(size, size), .Zero, .Ones)) { if (_isPaused) OnSceneResume(); @@ -503,7 +507,7 @@ namespace GlitchyEditor SubTexture2D singleStepButtonIcon = _editorIcons.SingleStep; - if (ImGui.ImageButton(singleStepButtonIcon, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("Step", singleStepButtonIcon, .(size, size), .Zero, .Ones)) { DoSingleStep(); } @@ -534,7 +538,7 @@ namespace GlitchyEditor ImGui.SameLine(); ImGui.PushID(1); - if (ImGui.ImageButton(_editorIcons.Stop, .(size, size), .Zero, .Ones, 0)) + if (ImGui.ImageButton("Stop", _editorIcons.Stop, .(size, size), .Zero, .Ones)) OnSceneStop(); ImGui.PopID(); diff --git a/GlitchyEditor/src/TextureViewer.bf b/GlitchyEditor/src/TextureViewer.bf index efe6532..21ba6b5 100644 --- a/GlitchyEditor/src/TextureViewer.bf +++ b/GlitchyEditor/src/TextureViewer.bf @@ -87,10 +87,10 @@ namespace GlitchyEditor ImGui.Combo("Sampler", (.)&_sampleMode, items.Ptr, (.)items.Count); - ImGui.SliderFloat2("Color offset and scale", *(float[2]*)&_colorOffset, -1.0f, 1.0f); - ImGui.SliderFloat2("Alpha offset and scale", *(float[2]*)&_alphaOffset, -1.0f, 1.0f); + ImGui.SliderFloat2("Color offset and scale", ref *(float[2]*)&_colorOffset, -1.0f, 1.0f); + ImGui.SliderFloat2("Alpha offset and scale", ref *(float[2]*)&_alphaOffset, -1.0f, 1.0f); - ImGui.SliderFloat2("Position", *(float[2]*)&_position, 2 * -Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom, 2 * Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom); + ImGui.SliderFloat2("Position", ref *(float[2]*)&_position, 2 * -Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom, 2 * Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom); ImGui.BeginChild("imageChild"); diff --git a/GlitchyEngine/src/ImGui/ImGuiExtension.bf b/GlitchyEngine/src/ImGui/ImGuiExtension.bf index 758119b..266979e 100644 --- a/GlitchyEngine/src/ImGui/ImGuiExtension.bf +++ b/GlitchyEngine/src/ImGui/ImGuiExtension.bf @@ -87,29 +87,29 @@ namespace ImGui public static extern void Image(TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 tint_col = Vec4.Ones, Vec4 border_col = Vec4.Zero); - public static bool ImageButton(SubTexture2D subTexture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, int32 frame_padding = -1, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) + public static bool ImageButton(char8* id, SubTexture2D subTexture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) { if (uv0 != .Zero || uv1 != .Ones) Runtime.NotImplemented(); float2 v = (.)subTexture.TexCoords.XY + subTexture.TexCoords.ZW; - return ImageButton(subTexture.Texture.GetViewBinding(), size, (.)subTexture.TexCoords.XY, (.)v, frame_padding, bg_col, tint_col); + return ImageButton(id, subTexture.Texture.GetViewBinding(), size, (.)subTexture.TexCoords.XY, (.)v, bg_col, tint_col); } - public static extern bool ImageButton(TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, int32 frame_padding = -1, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones); + public static extern bool ImageButton(char8* id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones); - public static bool ImageButtonEx(uint32 id, SubTexture2D subTexture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec2 frame_padding = .Zero, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) + public static bool ImageButtonEx(uint32 id, SubTexture2D subTexture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) { if (uv0 != .Zero || uv1 != .Ones) Runtime.NotImplemented(); float2 v = (.)subTexture.TexCoords.XY + subTexture.TexCoords.ZW; - return ImageButtonEx(id, subTexture.Texture.GetViewBinding(), size, (.)subTexture.TexCoords.XY, (.)v, frame_padding, bg_col, tint_col); + return ImageButtonEx(id, subTexture.Texture.GetViewBinding(), size, (.)subTexture.TexCoords.XY, (.)v, bg_col, tint_col); } - public static extern bool ImageButtonEx(uint32 id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec2 frame_padding = .Zero, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones); + public static extern bool ImageButtonEx(uint32 id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones); public static void TextUnformatted(StringView text) => TextUnformattedImpl(text.Ptr, text.Ptr + text.Length); diff --git a/GlitchyEngine/src/Platform/DX11/ImGui/Dx11ImGui.bf b/GlitchyEngine/src/Platform/DX11/ImGui/Dx11ImGui.bf index 9e561b6..ab8b462 100644 --- a/GlitchyEngine/src/Platform/DX11/ImGui/Dx11ImGui.bf +++ b/GlitchyEngine/src/Platform/DX11/ImGui/Dx11ImGui.bf @@ -22,24 +22,24 @@ namespace ImGui textureViewBinding.Release(); } - public static override bool ImageButton(TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, int32 frame_padding = -1, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) + public static override bool ImageButton(char8* id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) { var view = textureViewBinding._nativeShaderResourceView..AddRef(); _resourceViews.Add(view); - bool pressed = ImGui.ImageButton(view, size, uv0, uv1, frame_padding, bg_col, tint_col); + bool pressed = ImGui.ImageButton(id, view, size, uv0, uv1, bg_col, tint_col); textureViewBinding.Release(); return pressed; } - public static override bool ImageButtonEx(uint32 id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec2 frame_padding = .Zero, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) + public static override bool ImageButtonEx(uint32 id, TextureViewBinding textureViewBinding, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 bg_col = Vec4.Zero, Vec4 tint_col = Vec4.Ones) { var view = textureViewBinding._nativeShaderResourceView..AddRef(); _resourceViews.Add(view); - bool pressed = ImGui.ImageButtonEx(id, view, size, uv0, uv1, frame_padding, bg_col, tint_col); + bool pressed = ImGui.ImageButtonEx(id, view, size, uv0, uv1, bg_col, tint_col); textureViewBinding.Release(); diff --git a/GlitchyEngine/vendor/imgui b/GlitchyEngine/vendor/imgui index 827764b..21c9c32 160000 --- a/GlitchyEngine/vendor/imgui +++ b/GlitchyEngine/vendor/imgui @@ -1 +1 @@ -Subproject commit 827764b98ca48d0aaab538a8ef73bae81798042f +Subproject commit 21c9c3225a5a2b125e67d51cc3ef31c0dcb654db diff --git a/Sandbox/src/TextureViewer.bf b/Sandbox/src/TextureViewer.bf index 0a4fcbc..c97b351 100644 --- a/Sandbox/src/TextureViewer.bf +++ b/Sandbox/src/TextureViewer.bf @@ -86,10 +86,10 @@ namespace Sandbox ImGui.Combo("Sampler", (.)&_sampleMode, items.Ptr, (.)items.Count); - ImGui.SliderFloat2("Color offset and scale", *(float[2]*)&_colorOffset, -1.0f, 1.0f); - ImGui.SliderFloat2("Alpha offset and scale", *(float[2]*)&_alphaOffset, -1.0f, 1.0f); + ImGui.SliderFloat2("Color offset and scale", ref *(float[2]*)&_colorOffset, -1.0f, 1.0f); + ImGui.SliderFloat2("Alpha offset and scale", ref *(float[2]*)&_alphaOffset, -1.0f, 1.0f); - ImGui.SliderFloat2("Position", *(float[2]*)&_position, 2 * -Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom, 2 * Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom); + ImGui.SliderFloat2("Position", ref *(float[2]*)&_position, 2 * -Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom, 2 * Math.Max(viewedTexture.Width, viewedTexture.Height) * _zoom); ImGui.BeginChild("imageChild");