11#pragma once
2- #include < Events/UIComponentEvent.h>
32#include < ImguiLayer.h>
43#include < ZEngine/Core/IRenderable.h>
54#include < ZEngine/Core/IUpdatable.h>
65#include < ZEngine/Helpers/IntrusivePtr.h>
76#include < string>
8- #include < vector>
97
108namespace Tetragrama ::Layers
119{
@@ -14,33 +12,17 @@ namespace Tetragrama::Layers
1412
1513namespace Tetragrama ::Components
1614{
17- class UIComponent : public ZEngine ::Core::IRenderable, public ZEngine::Core::IUpdatable, public ZEngine::Helpers::RefCounted
15+ struct UIComponent : public ZEngine ::Core::IRenderable, public ZEngine::Core::IUpdatable, public ZEngine::Helpers::RefCounted
1816 {
19-
20- public:
2117 UIComponent () = default ;
22- UIComponent (std::string_view name, bool visibility, bool can_be_closed);
23- UIComponent (const ZEngine::Helpers::Ref<Tetragrama::Layers::ImguiLayer>& layer, std::string_view name, bool visibility, bool can_be_closed);
24- virtual ~UIComponent () = default ;
25-
26- void SetName (std::string_view name);
27- void SetVisibility (bool visibility);
28-
29- std::string_view GetName () const ;
30- bool GetVisibility () const ;
31-
32- void SetParentLayer (const ZEngine::Helpers::Ref<Tetragrama::Layers::ImguiLayer>& layer);
33- void SetParentUI (const ZEngine::Helpers::Ref<UIComponent>& item);
34-
35- bool HasParentLayer () const ;
36- bool HasParentUI () const ;
37-
38- protected:
39- bool m_visibility{false };
40- bool m_can_be_closed{false };
41- bool m_is_allowed_to_render{true };
42- std::string m_name;
43- ZEngine::Helpers::WeakRef<Tetragrama::Layers::ImguiLayer> m_parent_layer;
44- ZEngine::Helpers::WeakRef<UIComponent> m_parent_ui;
18+ UIComponent (std::string_view name, bool visibility, bool can_be_closed) : Name(name.data()), IsVisible(visibility), CanBeClosed(can_be_closed) {}
19+ virtual ~UIComponent () = default ;
20+
21+ bool IsVisible = true ;
22+ bool CanBeClosed = false ;
23+ uint32_t ChildrenCount = 0 ;
24+ Tetragrama::Layers::ImguiLayer* ParentLayer = nullptr ;
25+ std::string Name = " " ;
26+ std::vector<UIComponent*> Children = {};
4527 };
4628} // namespace Tetragrama::Components
0 commit comments