Browse Source

add a docking example

Jeffery Myers 1 year ago
parent
commit
bd69c9bec0
2 changed files with 121 additions and 0 deletions
  1. 102 0
      examples/docking_example.cpp
  2. 19 0
      premake5.lua

+ 102 - 0
examples/docking_example.cpp

@@ -0,0 +1,102 @@
+/*******************************************************************************************
+*
+*   raylib-extras [ImGui] example - Docking example
+*
+*	This is an example of using the ImGui docking features that are part of docking branch
+*	You must replace the default imgui with the code from the docking branch for this to work
+*	https://github.com/ocornut/imgui/tree/docking
+*
+*   Copyright (c) 2024 Jeffery Myers
+*
+********************************************************************************************/
+
+#include "raylib.h"
+#include "raymath.h"
+
+#include "imgui.h"
+#include "rlImGui.h"
+
+
+int main(int argc, char* argv[])
+{
+	// Initialization
+	//--------------------------------------------------------------------------------------
+	int screenWidth = 1280;
+	int screenHeight = 800;
+
+	SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE);
+	InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - Docking");
+	SetTargetFPS(144);
+	rlImGuiSetup(true);
+
+	bool run = true;
+
+	bool showDemoWindow = true;
+
+	// if the linked ImGui has docking, enable it.
+	// this will only be true if you use the docking branch of ImGui.
+#ifdef IMGUI_HAS_DOCK
+	ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_DockingEnable;
+#endif
+
+	// Main game loop
+	while (!WindowShouldClose() && run)    // Detect window close button or ESC key, or a quit from the menu
+	{
+		BeginDrawing();
+		ClearBackground(DARKGRAY);
+
+		// start ImGui content
+		rlImGuiBegin();
+
+		// if you want windows to dock to the viewport, call this.
+#ifdef IMGUI_HAS_DOCK
+		ImGui::DockSpaceOverViewport();
+#endif
+
+		// show a simple menu bar
+		if (ImGui::BeginMainMenuBar())
+		{
+			if (ImGui::BeginMenu("File"))
+			{
+				if (ImGui::MenuItem("Quit"))
+					run = false;
+
+				ImGui::EndMenu();
+            }
+
+			if (ImGui::BeginMenu("Window"))
+            {
+                if (ImGui::MenuItem("Demo Window", nullptr, showDemoWindow))
+					showDemoWindow = !showDemoWindow;
+
+                ImGui::EndMenu();
+            }
+			ImGui::EndMainMenuBar();
+		}
+
+		// show some windows
+	
+		if (showDemoWindow)
+			ImGui::ShowDemoWindow(&showDemoWindow);
+
+		if (ImGui::Begin("Test Window"))
+		{
+			ImGui::TextUnformatted("Another window");
+		}
+		ImGui::End();
+
+		// end ImGui Content
+		rlImGuiEnd();
+
+		EndDrawing();
+		//----------------------------------------------------------------------------------
+	}
+	rlImGuiShutdown();
+
+	// De-Initialization
+	//--------------------------------------------------------------------------------------   
+	CloseWindow();        // Close window and OpenGL context
+	//--------------------------------------------------------------------------------------
+
+	return 0;
+}

+ 19 - 0
premake5.lua

@@ -174,4 +174,23 @@ project "imgui_style_example"
 		
 		
     filter "action:vs*"
     filter "action:vs*"
 		debugdir "$(SolutionDir)"
 		debugdir "$(SolutionDir)"
+	
+project "docking_example"
+	kind "ConsoleApp"
+	language "C++"
+	location "build"
+	targetdir "bin/%{cfg.buildcfg}"
+	
+	vpaths 
+	{
+		["Header Files"] = { "examples/**.h"},
+		["Source Files"] = {"examples/**.cpp", "examples/**.c"},
+	}
+	files {"examples/docking_example.cpp"}
+	link_raylib()
+	links {"rlImGui"}
+	includedirs {"./", "imgui", "imgui-master" }
+		
+    filter "action:vs*"
+		debugdir "$(SolutionDir)"