Unravel Engine C++ Reference
Loading...
Searching...
No Matches
ui_document_component.h
Go to the documentation of this file.
1#pragma once
2
3#include "base/basetypes.hpp"
6#include <engine/ui/ui_tree.h>
8#include <math/math.h>
9#include <string>
10#include <memory>
11
13
14// Forward declarations
15namespace Rml
16{
17 class Context;
18 class ElementDocument;
19}
20
21namespace unravel
22{
23
25constexpr float UI_DEFAULT_PIXELS_PER_WORLD_UNIT = 100.0f;
26
33
41struct ui_document_component : public component_crtp<ui_document_component, owned_component>
42{
45
47 Rml::Context* context = nullptr;
48
50 Rml::ElementDocument* document = nullptr;
51
52 uint64_t version = 0;
53
56
58 usize32_t size = {512, 512};
61
64
66 uint32_t last_render_frame = 0;
67
69 std::shared_ptr<RmlUi_RenderLayerStack> render_layer_stack;
70
71 auto get_world_space_scale() const -> math::vec2;
72
77 auto get_bounds() const -> math::bbox;
82 [[nodiscard]] auto is_loaded() const -> bool;
83
88 [[nodiscard]] auto is_enabled() const -> bool;
89
90
95 void set_enabled(bool enabled);
96
97private:
98
99 bool enabled_ = true;
100
101};
102
103} // namespace unravel
Definition bbox.cpp:5
constexpr float UI_DEFAULT_PIXELS_PER_WORLD_UNIT
Default pixels per world unit (Unity-style). 100 px = 1 world unit.
ui_render_mode
Render mode for the UI document.
@ screen_space_overlay
Screen-space overlay (viewport-sized or positioned)
@ world_space
World-space (rendered on 3D quad, uses transform)
Thread-safe handle to an asset.
CRTP (Curiously Recurring Template Pattern) base structure for components.
Component that holds a reference to a UI document for RmlUi rendering.
asset_handle< ui_tree > asset
Path to the UI document file (HTML/RML)
void set_enabled(bool enabled)
Set the enabled state of the document.
auto get_world_space_scale() const -> math::vec2
Rml::ElementDocument * document
Loaded RmlUi document (owned by context)
auto is_enabled() const -> bool
Check if document is currently enabled.
gfx::frame_buffer::ptr framebuffer
Framebuffer for world-space render-to-texture (owned by component)
Rml::Context * context
Per-document RmlUi context (owned by this component)
std::shared_ptr< RmlUi_RenderLayerStack > render_layer_stack
Render layer stack for this document (owned by component, used during render pass)
float pixels_per_world_unit
Pixels per world unit for world-space rendering (default: 100, Unity-style)
auto get_bounds() const -> math::bbox
Gets the bounding box of the document.
auto is_loaded() const -> bool
Check if document is currently loaded.
ui_render_mode render_mode
Rendering mode: screen or world.
uint32_t last_render_frame
Last frame this world-space document was rendered (for render-once-per-frame)
bool enabled