public override void BuildUI(ImGuiRenderer renderer) { ImGuiViewportPtr viewport = ImGui.GetMainViewport(); ImGui.SetNextWindowPos(viewport.Pos); ImGui.SetNextWindowSize(viewport.Size); ImGui.SetNextWindowViewport(viewport.ID); ImGui.SetNextWindowBgAlpha(0.0f); ImGuiWindowFlags window_flags = ImGuiWindowFlags.MenuBar | ImGuiWindowFlags.NoDocking; window_flags |= ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove; window_flags |= ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus; ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowBorderSize, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, new Vector2(0.0f, 0.0f)); ImGui.Begin("DockSpace Demo", ref p_open, window_flags); ImGui.PopStyleVar(3); var dockspace_id = ImGui.GetID("RootDockspace"); ImGuiDockNodeFlags dockspace_flags = ImGuiDockNodeFlags.PassthruCentralNode; ImGui.DockSpace(dockspace_id, new Vector2(0.0f, 0.0f), dockspace_flags); ImGui.End(); }
public static void BeginGlobalDocking() { ImGuiViewportPtr viewport = ImGui.GetMainViewport(); ImGui.SetNextWindowPos(viewport.Pos); ImGui.SetNextWindowSize(viewport.Size); ImGui.SetNextWindowViewport(viewport.ID); ImGui.SetNextWindowBgAlpha(0.0f); ImGuiWindowFlags windowFlags = ImGuiWindowFlags.NoDocking | ImGuiWindowFlags.MenuBar; windowFlags |= ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse; windowFlags |= ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove; windowFlags |= ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus; ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowBorderSize, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, System.Numerics.Vector2.Zero); ImGui.Begin("imgui-docking", windowFlags); ImGui.PopStyleVar(3); uint dockspaceID = ImGui.GetID("default-dockspace"); ImGuiDockNodeFlags dockspaceFlags = ImGuiDockNodeFlags.PassthruCentralNode; ImGui.DockSpace(dockspaceID, System.Numerics.Vector2.Zero, dockspaceFlags); }
public override bool Show(uint dockSpaceId) { var windowFlags = ImGuiWindowFlags.NoDocking; if (_optFullscreen) { var viewport = ImGui.GetMainViewport(); ImGui.SetNextWindowPos(viewport.GetWorkPos()); ImGui.SetNextWindowSize(viewport.GetWorkSize()); ImGui.SetNextWindowViewport(viewport.ID); ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowBorderSize, 0.0f); windowFlags |= ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove; windowFlags |= ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus; } else { _dockspaceFlags &= ~ImGuiDockNodeFlags.PassthruCentralNode; } // When using ImGuiDockNodeFlags_PassthruCentralNode, DockSpace() will render our background // and handle the pass-thru hole, so we ask Begin() to not render a background. if ((_dockspaceFlags & ImGuiDockNodeFlags.PassthruCentralNode) == ImGuiDockNodeFlags.PassthruCentralNode) { windowFlags |= ImGuiWindowFlags.NoBackground; } // Important: note that we proceed even if Begin() returns false (aka window is collapsed). // This is because we want to keep our DockSpace() active. If a DockSpace() is inactive, // all active windows docked into it will lose their parent and become undocked. // We cannot preserve the docking relationship between an active window and an inactive docking, otherwise // any change of dockspace/settings would lead to windows being stuck in limbo and never being visible. if (!_optPadding) { ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, new Num.Vector2(0.0f, 0.0f)); } ImGui.Begin("DockSpace", ref _isVisible, windowFlags); if (!_optPadding) { ImGui.PopStyleVar(); } if (_optFullscreen) { ImGui.PopStyleVar(2); } // DockSpace var io = ImGui.GetIO(); if ((io.ConfigFlags & ImGuiConfigFlags.DockingEnable) == ImGuiConfigFlags.DockingEnable) { var dockspaceId = ImGui.GetID("MyDockSpace"); ImGui.DockSpace(dockspaceId, new Num.Vector2(0.0f, 0.0f), _dockspaceFlags); } return(true); }
/// <summary>Initializes a new instance of the <see cref="DockSpace" /> class.</summary> public DockSpace() { dockspaceFlags = ImGuiDockNodeFlags.None; windowFlags = ImGuiWindowFlags.MenuBar | ImGuiWindowFlags.NoDocking | ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus; viewportPtr = ImGui.GetMainViewport(); extraWindowPos = new Vector2(0.0f, 24.5f); extraWindowSize = new Vector2(0.0f, 50f); }
private void ReloadDockLayout(uint dockspaceId, int workspaceID) { ImGuiDockNodeFlags dockspace_flags = ImGuiDockNodeFlags.None; ImGui.DockBuilderRemoveNode(dockspaceId); // Clear out existing layout ImGui.DockBuilderAddNode(dockspaceId, dockspace_flags); // Add empty node // This variable will track the document node, however we are not using it here as we aren't docking anything into it. uint dock_main_id = dockspaceId; var dock_right = ImGui.DockBuilderSplitNode(dock_main_id, ImGuiDir.Right, 0.2f, out uint nullL, out dock_main_id); var dock_left = ImGui.DockBuilderSplitNode(dock_main_id, ImGuiDir.Left, 0.2f, out uint nullR, out dock_main_id); var dock_down_left = ImGui.DockBuilderSplitNode(dock_left, ImGuiDir.Down, 0.2f, out uint nullUL, out dock_left); var dock_down = ImGui.DockBuilderSplitNode(dock_main_id, ImGuiDir.Down, 0.3f, out uint nullU, out dock_main_id); ImGui.DockBuilderDockWindow(GetWindowName("Properties", workspaceID), dock_right); ImGui.DockBuilderDockWindow(GetWindowName("Outliner", workspaceID), dock_left); ImGui.DockBuilderDockWindow(GetWindowName("Viewport", workspaceID), dock_main_id); ImGui.DockBuilderDockWindow(GetWindowName("Timeline", workspaceID), dock_down); ImGui.DockBuilderFinish(dockspaceId); }
public static unsafe void BeginGlobalDocking(bool menuBar = true) { ImGuiViewportPtr viewport = ImGui.GetMainViewport(); if (viewport.NativePtr == null) { throw new InvalidOperationException(); } ImGui.SetNextWindowPos(viewport.Pos); ImGui.SetNextWindowSize(viewport.Size); ImGui.SetNextWindowViewport(viewport.ID); ImGui.SetNextWindowBgAlpha(0.0f); ImGuiWindowFlags windowFlags = ImGuiWindowFlags.NoDocking; if (menuBar) { windowFlags |= ImGuiWindowFlags.MenuBar; } windowFlags |= ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse; windowFlags |= ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove; windowFlags |= ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus; ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowBorderSize, 0.0f); ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, Vector2.Zero); ImGui.Begin("imgui-docking", windowFlags); ImGui.PopStyleVar(3); uint dockspaceID = ImGui.GetID("default-dockspace"); ImGuiDockNodeFlags dockspaceFlags = ImGuiDockNodeFlags.PassthruCentralNode; ImGui.DockSpace(dockspaceID, Vector2.Zero, dockspaceFlags); }