Unravel Engine C++ Reference
Loading...
Searching...
No Matches
ui_system.h
Go to the documentation of this file.
1#pragma once
2
3#include <engine/engine_export.h>
4#include <base/basetypes.hpp>
5#include <context/context.hpp>
6#include <ospp/event.h>
7#include <hpp/utility.hpp>
8
9#include <string>
10#include <entt/entt.hpp>
12
13// Forward declarations
14namespace Rml
15{
16 class Context;
17 class ElementDocument;
18 class Element;
19}
20
21namespace unravel
22{
23 struct ui_document_component;
24
34{
35 static void on_create_component(entt::registry& r, entt::entity e);
36 static void on_destroy_component(entt::registry& r, entt::entity e);
37
43 auto init(rtti::context& ctx) -> bool;
44
50 auto deinit(rtti::context& ctx) -> bool;
51
58
64 void on_frame_render(const gfx::frame_buffer::ptr& output, delta_t dt);
65
70 auto get_context() -> Rml::Context*;
71
72
78 void on_os_event(rtti::context& ctx, os::event& event);
79
83 void load_fonts();
84
90
91private:
96 void update_ui_document_components(rtti::context& ctx);
97
103 auto load_ui_document(ui_document_component& component) -> bool;
104
105
106
107 auto is_root_element(rtti::context& ctx, Rml::Element* element) -> bool;
108
109 Rml::Context* ui_context_ = nullptr;
110 Rml::ElementDocument* test_document_ = nullptr;
111 std::shared_ptr<int> sentinel_ = std::make_shared<int>();
112};
113
114} // namespace unravel
event_type event
std::chrono::duration< float > delta_t
Component that holds a reference to a UI document for RmlUi rendering.
System responsible for managing user interface components and rendering.
Definition ui_system.h:34
void on_os_event(rtti::context &ctx, os::event &event)
Handle OS events and forward to RmlUi.
auto init(rtti::context &ctx) -> bool
Initializes the UI system with the given context.
Definition ui_system.cpp:42
static void on_create_component(entt::registry &r, entt::entity e)
void on_frame_update(rtti::context &ctx, delta_t dt)
Update UI system (called every frame)
void on_frame_render(const gfx::frame_buffer::ptr &output, delta_t dt)
Render UI (called every frame after update)
auto get_context() -> Rml::Context *
Get the main RmlUi context.
static void on_destroy_component(entt::registry &r, entt::entity e)
auto deinit(rtti::context &ctx) -> bool
Deinitializes the UI system with the given context.
void register_component_callbacks(rtti::context &ctx)
Register component creation/destruction callbacks with ECS.
void load_fonts()
Load fonts.