3#include "IXUIElement.hpp"
5#include <UnityEngine/Transform.hpp>
11 template<
class t_Base>
18 std::vector<std::shared_ptr<IXUIElement>> m_Childs;
26 IXUIElementWithChilds(std::u16string_view p_Name, ETypeID p_TypeID,
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
40 for (
auto l_I = 0; l_I < m_Childs.size(); ++l_I)
41 m_Childs[l_I]->
BuildUI(p_Parent);
48 template<
class t_ChildType>
51 for (
auto l_I = 0; l_I < m_Childs.size(); ++l_I)
53 if (m_Childs[l_I]->m_TypeID != t_ChildType::TypeID)
56 p_Functor(
reinterpret_cast<t_ChildType*
>(m_Childs[l_I].get()));
59 return reinterpret_cast<t_Base*
>(
this);
virtual void BuildUI(_u::Transform *p_Parent)=0
BuildUI for this element into p_Parent transform.
IXUIElement with children abstract class.
virtual ~IXUIElementWithChilds()=default
Destructor.
void BuildUIChilds(_u::Transform *p_Parent)
BuildUI for children into p_Parent transform.
IXUIElementWithChilds(std::u16string_view p_Name, ETypeID p_TypeID, const std::vector< std::shared_ptr< IXUIElement > > &p_Childs)
Constructor.
t_Base * ForEachDirect(_v::CActionRef< t_ChildType * > p_Functor)
For each direct XUIElement child of type t_ChildType.
Tree like syntax CP_SDK::UI builder.