From 355b7f0c3d78d1b33142d64d806fc83d13e80096 Mon Sep 17 00:00:00 2001 From: 4sval Date: Sun, 4 Sep 2022 11:20:42 +0200 Subject: [PATCH] don't go faster than the underlying platform can manage --- FModel/Views/Snooper/SnimGui.cs | 13 +++++++++++++ FModel/Views/Snooper/Snooper.cs | 20 +++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/FModel/Views/Snooper/SnimGui.cs b/FModel/Views/Snooper/SnimGui.cs index 2d3888d6..9228447a 100644 --- a/FModel/Views/Snooper/SnimGui.cs +++ b/FModel/Views/Snooper/SnimGui.cs @@ -134,8 +134,19 @@ public class SnimGui : IDisposable var model = models[i]; vertices += model.Vertices.Length; indices += model.Indices.Length; + ImGui.PushID(i); if (ImGui.Selectable(model.Name, _selectedModel == i)) _selectedModel = i; + if (ImGui.BeginPopupContextItem()) + { + if (ImGui.Selectable("Delete")) + { + _selectedModel--; + models.RemoveAt(i); + } + ImGui.EndPopup(); + } + ImGui.PopID(); } ImGui.TreePop(); } @@ -163,6 +174,7 @@ public class SnimGui : IDisposable ImGui.SetNextWindowPos(_propertiesPosition, _firstUse); ImGui.Begin("Properties", _noResize | ImGuiWindowFlags.NoCollapse); + if (_selectedModel < 0) return; var model = models[_selectedModel]; ImGui.Text($"Entity: {model.Name}"); ImGui.BeginDisabled(!model.HasVertexColors); @@ -253,6 +265,7 @@ public class SnimGui : IDisposable ImGui.SetNextWindowPos(_texturePosition, _firstUse); ImGui.Begin("Textures", _noResize | ImGuiWindowFlags.NoCollapse); + if (_selectedModel < 0) return; var section = models[_selectedModel].Sections[_selectedSection]; ImGui.BeginGroup(); ImGui.Checkbox("Show", ref section.Show); diff --git a/FModel/Views/Snooper/Snooper.cs b/FModel/Views/Snooper/Snooper.cs index 6359f668..9ce2ce96 100644 --- a/FModel/Views/Snooper/Snooper.cs +++ b/FModel/Views/Snooper/Snooper.cs @@ -37,7 +37,6 @@ public class Snooper private Vector2D _size; private float _previousSpeed; - private bool _close; private bool _append; public Snooper() @@ -85,7 +84,6 @@ public class Snooper public void Run(UObject export) { - _close = false; _append = false; switch (export) { @@ -105,16 +103,7 @@ public class Snooper throw new ArgumentOutOfRangeException(nameof(export)); } - _window.Initialize(); - while (!_close && !_append) - { - _window.DoEvents(); - _window.DoUpdate(); - _window.DoRender(); - } - _window.DoEvents(); - if (!_append) _window.Close(); // dispose - else _window.Reset(); + _window.Run(); } private void SetupCamera(FBox box) @@ -220,13 +209,18 @@ public class Snooper _camera.Position -= moveSpeed * _camera.Up; if (_keyboard.IsKeyPressed(Key.H)) + { _append = true; + _window.Close(); + } if (_keyboard.IsKeyPressed(Key.Escape)) - _close = true; + _window.Close(); } private void OnClose() { + if (_append) // don't dispose anything, especially _models + return; _framebuffer.Dispose(); _grid.Dispose(); _skybox.Dispose();