92 void setWindowSize(
int width,
int height) { _windowW = width; _windowH = height; }
98 const Color& color =
Color(0.94f, 0.96f, 0.98f, 0.95f));
102 const Color& panelColor =
Color(0.06f, 0.09f, 0.16f, 0.88f));
112 bool worldToScreen(
const Vector3& worldPos,
float& screenX,
float& screenY)
const;
115 SDL_Window* _window =
nullptr;
116 bool _initialized =
false;
void setViewProjection(const Matrix4 &vp)
Set the current frame's view-projection matrix (needed for worldToScreen).
ImGuiOverlay & operator=(const ImGuiOverlay &)=delete
bool isInitialized() const
Whether the overlay has been initialized.
bool wantCaptureKeyboard() const
True if ImGui wants exclusive keyboard input (an ImGui text field is active).
bool processEvent(const SDL_Event &event)
void label3D(const Vector3 &worldPos, const char *text, const Color &color=Color(0.94f, 0.96f, 0.98f, 0.95f))
void shutdown()
Shut down ImGui and release all resources.
void panelLabel3D(const Vector3 &worldPos, const char *title, const char *body, const Color &panelColor=Color(0.06f, 0.09f, 0.16f, 0.88f))
Render a text label with a background panel anchored to a 3D world position.
bool wantCaptureMouse() const
True if ImGui wants exclusive mouse input (cursor is over an ImGui window).
static void applyDigitalTwinTheme()
Apply the digital twin dark glassmorphism theme.
void beginFrame()
Begin a new ImGui frame. Call once per frame before building any UI.
void init(MetalGraphicsDevice *device, SDL_Window *window)
void setWindowSize(int width, int height)
Set the current window dimensions (needed for NDC→screen conversion).
ImGuiOverlay(const ImGuiOverlay &)=delete
RGBA color with floating-point components in [0, 1].
4x4 column-major transformation matrix with SIMD acceleration.
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.