Ejemplo n.º 1
0
        private static unsafe void SubmitUI()
        {
            #region test
            // Demo code adapted from the official Dear ImGui demo program:
            // https://github.com/ocornut/imgui/blob/master/examples/example_win32_directx11/main.cpp#L172

            //// 1. Show a simple window.
            //// Tip: if we don't call ImGui.BeginWindow()/ImGui.EndWindow() the widgets automatically appears in a window called "Debug".
            //{
            //    ImGui.Text("Hello, world!");                                        // Display some text (you can use a format string too)
            //    ImGui.SliderFloat("float", ref _f, 0, 1, _f.ToString("0.000"), 1);  // Edit 1 float using a slider from 0.0f to 1.0f
            //    //ImGui.ColorEdit3("clear color", ref _clearColor);                   // Edit 3 floats representing a color

            //    ImGui.Text($"Mouse position: {ImGui.GetMousePos()}");

            //    ImGui.Checkbox("Demo Window", ref _showDemoWindow);                 // Edit bools storing our windows open/close state
            //    ImGui.Checkbox("Another Window", ref _showAnotherWindow);
            //    ImGui.Checkbox("Memory Editor", ref _showMemoryEditor);
            //    if (ImGui.Button("Button"))                                         // Buttons return true when clicked (NB: most widgets return true when edited/activated)
            //        _counter++;
            //    ImGui.SameLine(0, -1);
            //    ImGui.Text($"counter = {_counter}");

            //    ImGui.DragInt("Draggable Int", ref _dragInt);

            //    float framerate = ImGui.GetIO().Framerate;
            //    ImGui.Text($"Application average {1000.0f / framerate:0.##} ms/frame ({framerate:0.#} FPS)");
            //}

            //// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
            //if (_showAnotherWindow)
            //{
            //    ImGui.Begin("Another Window", ref _showAnotherWindow);
            //    ImGui.Text("Hello from another window!");
            //    if (ImGui.Button("Close Me"))
            //        _showAnotherWindow = false;
            //    ImGui.End();
            //}

            //// 3. Show the ImGui demo window. Most of the sample code is in ImGui.ShowDemoWindow(). Read its code to learn more about Dear ImGui!
            //if (_showDemoWindow)
            //{
            //    // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway.
            //    // Here we just want to make the demo initial state a bit more friendly!
            //    ImGui.SetNextWindowPos(new Vector2(650, 20), ImGuiCond.FirstUseEver);
            //    ImGui.ShowDemoWindow(ref _showDemoWindow);
            //}

            //if (ImGui.TreeNode("Tabs"))
            //{
            //    if (ImGui.TreeNode("Basic"))
            //    {
            //        ImGuiTabBarFlags tab_bar_flags = ImGuiTabBarFlags.None;
            //        if (ImGui.BeginTabBar("MyTabBar", tab_bar_flags))
            //        {
            //            if (ImGui.BeginTabItem("Avocado"))
            //            {
            //                ImGui.Text("This is the Avocado tab!\nblah blah blah blah blah");
            //                ImGui.EndTabItem();
            //            }
            //            if (ImGui.BeginTabItem("Broccoli"))
            //            {
            //                ImGui.Text("This is the Broccoli tab!\nblah blah blah blah blah");
            //                ImGui.EndTabItem();
            //            }
            //            if (ImGui.BeginTabItem("Cucumber"))
            //            {
            //                ImGui.Text("This is the Cucumber tab!\nblah blah blah blah blah");
            //                ImGui.EndTabItem();
            //            }
            //            ImGui.EndTabBar();
            //        }
            //        ImGui.Separator();
            //        ImGui.TreePop();
            //    }

            //    if (ImGui.TreeNode("Advanced & Close Button"))
            //    {
            //        // Expose a couple of the available flags. In most cases you may just call BeginTabBar() with no flags (0).
            //        ImGui.CheckboxFlags("ImGuiTabBarFlags_Reorderable", ref s_tab_bar_flags, (uint)ImGuiTabBarFlags.Reorderable);
            //        ImGui.CheckboxFlags("ImGuiTabBarFlags_AutoSelectNewTabs", ref s_tab_bar_flags, (uint)ImGuiTabBarFlags.AutoSelectNewTabs);
            //        ImGui.CheckboxFlags("ImGuiTabBarFlags_NoCloseWithMiddleMouseButton", ref s_tab_bar_flags, (uint)ImGuiTabBarFlags.NoCloseWithMiddleMouseButton);
            //        if ((s_tab_bar_flags & (uint)ImGuiTabBarFlags.FittingPolicyMask) == 0)
            //            s_tab_bar_flags |= (uint)ImGuiTabBarFlags.FittingPolicyDefault;
            //        if (ImGui.CheckboxFlags("ImGuiTabBarFlags_FittingPolicyResizeDown", ref s_tab_bar_flags, (uint)ImGuiTabBarFlags.FittingPolicyResizeDown))
            //    s_tab_bar_flags &= ~((uint)ImGuiTabBarFlags.FittingPolicyMask ^ (uint)ImGuiTabBarFlags.FittingPolicyResizeDown);
            //        if (ImGui.CheckboxFlags("ImGuiTabBarFlags_FittingPolicyScroll", ref s_tab_bar_flags, (uint)ImGuiTabBarFlags.FittingPolicyScroll))
            //    s_tab_bar_flags &= ~((uint)ImGuiTabBarFlags.FittingPolicyMask ^ (uint)ImGuiTabBarFlags.FittingPolicyScroll);

            //        // Tab Bar
            //        string[] names = { "Artichoke", "Beetroot", "Celery", "Daikon" };

            //        for (int n = 0; n < s_opened.Length; n++)
            //        {
            //            if (n > 0) { ImGui.SameLine(); }
            //            ImGui.Checkbox(names[n], ref s_opened[n]);
            //        }

            //        // Passing a bool* to BeginTabItem() is similar to passing one to Begin(): the underlying bool will be set to false when the tab is closed.
            //        if (ImGui.BeginTabBar("MyTabBar", (ImGuiTabBarFlags)s_tab_bar_flags))
            //        {
            //            for (int n = 0; n < s_opened.Length; n++)
            //                if (s_opened[n] && ImGui.BeginTabItem(names[n], ref s_opened[n]))
            //                {
            //                    ImGui.Text($"This is the {names[n]} tab!");
            //                    if ((n & 1) != 0)
            //                        ImGui.Text("I am an odd tab.");
            //                    ImGui.EndTabItem();
            //                }
            //            ImGui.EndTabBar();
            //        }
            //        ImGui.Separator();
            //        ImGui.TreePop();
            //    }
            //    ImGui.TreePop();

            //  }
            #endregion

            ImGui.GetIO().ConfigFlags = ImGuiConfigFlags.DockingEnable | ImGuiConfigFlags.ViewportsEnable;

            ImGui.GetIO().ConfigDockingWithShift = true;

            ImGui.DockSpaceOverViewport();
            ImGui.Begin("TEST");
            ImGui.End();
            ImGui.Begin("TEST1");
            ImGui.End();
            ImGui.Begin("TEST3");
            ImGui.Text(ImGui.GetVersion());
            ImGui.End();

            ImGuiIOPtr io = ImGui.GetIO();
            SetThing(out io.DeltaTime, 2f);

            if (_showMemoryEditor)
            {
                _memoryEditor.Draw("Memory Editor", _memoryEditorData, _memoryEditorData.Length);
            }
        }