3#include "../UI/Components/CGLayout.hpp"
4#include "Generics/IXUIElementWithChilds.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
15 public std::enable_shared_from_this<XUIGLayout>
26 std::shared_ptr<XUIGLayout> AsShared() {
return std::enable_shared_from_this<XUIGLayout>::shared_from_this(); }
38 static constexpr ETypeID TypeID = ETypeID::GLayout;
39 using Ptr = std::shared_ptr<XUIGLayout>;
41 XUIGLayout(CP_SDK_PRIV_TAG_ARG(),
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
42 :
XUIGLayout(CP_SDK_PRIV_TAG_FWD(), u
"XUIGLayout", p_Childs)
44 XUIGLayout(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name,
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
52 static std::vector<std::shared_ptr<IXUIElement>> s_Empty(0);
53 return std::make_shared<XUIGLayout>(CP_SDK_PRIV_TAG_VAL(), s_Empty);
57 static Ptr
Make(
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
59 return std::make_shared<XUIGLayout>(CP_SDK_PRIV_TAG_VAL(), p_Childs);
64 static Ptr
Make(std::u16string_view p_Name,
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
66 return std::make_shared<XUIGLayout>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Childs);
72 virtual void BuildUI(_u::Transform* p_Parent)
override
78 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
79 catch (
const std::exception& l_Exception)
91 if (m_Element) p_Functor(m_Element.Ptr());
92 else m_OnReady += p_Functor;
99 *p_Target = std::enable_shared_from_this<XUIGLayout>::shared_from_this();
static Logging::ILogger * Logger()
Logger instance.
CGLayout * SetConstraint(_u::GridLayoutGroup::Constraint p_Constraint)
Set layout constraint.
CGLayout * SetHeight(float p_Height)
Set preferred height.
CGLayout * SetMinHeight(float p_Height)
Set min height.
CGLayout * SetChildAlign(_u::TextAnchor p_ChildAlign)
Set child alignment.
CGLayout * SetSpacing(_u::Vector2 p_Spacing)
Set spacing between elements.
CGLayout * SetConstraintCount(int p_ConstraintCount)
Set layout constraint count.
IXUIElement Bind interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
IXUIElement with children abstract class.
void BuildUIChilds(_u::Transform *p_Parent)
BuildUI for children into p_Parent transform.
static Ptr Make()
Constructor.
XUIGLayout * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
XUIGLayout * SetWidth(float p_Width) XUI_PROXY_IMPL(_v
Set preferred width.
XUIGLayout * SetSpacing(_u::Vector2 p_Spacing) XUI_PROXY_IMPL(_v
Set spacing between elements.
XUIGLayout * SetHeight(float p_Height) XUI_PROXY_IMPL(_v
Set preferred height.
static Ptr Make(std::u16string_view p_Name, const std::vector< std::shared_ptr< IXUIElement > > &p_Childs)
Constructor.
XUIGLayout * SetCellSize(_u::Vector2 p_CellSize) XUI_PROXY_IMPL(_v
Set cell size.
virtual XUIGLayout * OnReady(_v::CActionRef< _v::CGLayout * > p_Functor) override
IXUIElement OnReady functor interface.
XUIGLayout * SetConstraint(_u::GridLayoutGroup::Constraint p_Constraint) XUI_PROXY_IMPL(_v
Set layout constraint.
XUIGLayout * SetMinWidth(float p_Width) XUI_PROXY_IMPL(_v
Set min width.
XUIGLayout * SetMinHeight(float p_Height) XUI_PROXY_IMPL(_v
Set min height.
virtual XUIGLayout * Bind(std::shared_ptr< XUIGLayout > *p_Target) override
On ready, bind.
XUIGLayout * SetChildAlign(_u::TextAnchor p_ChildAlign) XUI_PROXY_IMPL(_v
Set child alignment.
XUIGLayout * SetConstraintCount(int p_ConstraintCount) XUI_PROXY_IMPL(_v
Set layout constraint count.
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
static Ptr Make(const std::vector< std::shared_ptr< IXUIElement > > &p_Childs)
Constructor.
Tree like syntax CP_SDK::UI builder.