mirror of
https://github.com/kevinporetti/UnrealImGui.git
synced 2025-01-18 16:30:32 +00:00
d4ffe9443f
- Removed explicit PCH. - Fixed includes to compile for all supported engine versions, including non-unity builds. - Configured build.cs to treat ImGui as an engine module and added stricter compilation rules.
84 lines
2.8 KiB
C++
84 lines
2.8 KiB
C++
// Distributed under the MIT License (MIT) (see accompanying LICENSE file)
|
|
|
|
#include "ImGuiDemo.h"
|
|
|
|
#include "ImGuiModuleProperties.h"
|
|
|
|
#include <CoreGlobals.h>
|
|
|
|
|
|
// Demo copied (with minor modifications) from ImGui examples. See https://github.com/ocornut/imgui.
|
|
void FImGuiDemo::DrawControls(int32 ContextIndex)
|
|
{
|
|
if (Properties.ShowDemo())
|
|
{
|
|
const int32 ContextBit = ContextIndex < 0 ? 0 : 1 << ContextIndex;
|
|
|
|
// 1. Show a simple window
|
|
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
|
|
{
|
|
static float f = 0.0f;
|
|
ImGui::Text("Hello, world!");
|
|
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
|
|
ImGui::ColorEdit3("clear color", (float*)&ClearColor);
|
|
|
|
if (ContextBit)
|
|
{
|
|
if (ImGui::Button("Demo Window")) ShowDemoWindowMask ^= ContextBit;
|
|
if (ImGui::Button("Another Window")) ShowAnotherWindowMask ^= ContextBit;
|
|
}
|
|
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
|
|
}
|
|
|
|
// 2. Show another simple window, this time using an explicit Begin/End pair
|
|
if (ShowAnotherWindowMask & ContextBit)
|
|
{
|
|
ImGui::SetNextWindowSize(ImVec2(200, 100), ImGuiCond_FirstUseEver);
|
|
ImGui::Begin("Another Window");
|
|
ImGui::Text("Hello");
|
|
ImGui::End();
|
|
}
|
|
|
|
// 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow()
|
|
if (ShowDemoWindowMask & ContextBit)
|
|
{
|
|
// If more than one demo window is opened display warning about running ImGui examples in multiple contexts.
|
|
|
|
// For everything, but the first windows in this frame we assume warning.
|
|
bool bWarning = true;
|
|
if (GFrameNumber > LastDemoWindowFrameNumber)
|
|
{
|
|
// If this is the first window in this frame, then we need to look at the last frame to see whether
|
|
// there were more than one windows. Higher frame distance automatically means that there were not.
|
|
bWarning = ((GFrameNumber - LastDemoWindowFrameNumber) == 1) && (DemoWindowCounter > 1);
|
|
|
|
LastDemoWindowFrameNumber = GFrameNumber;
|
|
DemoWindowCounter = 0;
|
|
}
|
|
|
|
DemoWindowCounter++;
|
|
|
|
if (bWarning)
|
|
{
|
|
ImGui::Spacing();
|
|
|
|
ImGui::PushStyleColor(ImGuiCol_Text, { 1.f, 1.f, 0.5f, 1.f });
|
|
ImGui::TextWrapped("Demo Window is opened in more than one context, some of the ImGui examples may not work correctly.");
|
|
ImGui::PopStyleColor();
|
|
|
|
if (ImGui::IsItemHovered())
|
|
{
|
|
ImGui::SetTooltip(
|
|
"Some of the ImGui examples that use static variables may not work correctly\n"
|
|
"when run concurrently in multiple contexts.\n"
|
|
"If you have a problem with an example try to run it in one context only.");
|
|
}
|
|
}
|
|
|
|
// Draw demo window.
|
|
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver);
|
|
ImGui::ShowDemoWindow();
|
|
}
|
|
}
|
|
}
|