Created
April 1, 2022 04:56
-
-
Save Hexlord/484f6938a0585e17c5583213a84799ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct FUpdateHierarchyStaticState{ | |
static constexpr uint32 MaxSize = 100; | |
FUpdateHierarchyStaticState() { | |
Entities.Resize(MaxSize); | |
Views.Resize(MaxSize); | |
Positions.Resize(MaxSize); | |
Alignments.Resize(MaxSize, {0.5f, 0.0f}); | |
Colors.Resize(MaxSize, {Color::ToFloatColor(0xbfbfbfff)}); | |
Fonts.Resize(MaxSize, {EFont::Small}); | |
SetTransientTexts.Resize(MaxSize); | |
UIHierarchyItemTargets.Resize(MaxSize); | |
InputInteractables.Resize(MaxSize, {Input::RectHover, {Layout::HierarchyItemInteraction}}); | |
memset(&Desc, 0, sizeof(Desc)); | |
Data = {nullptr, *Views, nullptr, *Positions, *Alignments, *Colors, *Fonts, *SetTransientTexts, *UIHierarchyItemTargets, *InputInteractables}; | |
Desc.data = (void **)*Data; | |
Desc.entities = *Entities; | |
} | |
void Setup(ecs &ECS, entity_view Parent, const CView &InView) { | |
Desc.ids[0] = ecs_pair(CChildOfObject::Relation, Parent); | |
Desc.ids[1] = Component<CView>(ECS); | |
Desc.ids[2] = Component<CIgnoreCamera>(ECS); | |
Desc.ids[3] = Component<CPosition>(ECS); | |
Desc.ids[4] = Component<CAlignment>(ECS); | |
Desc.ids[5] = Component<CColor>(ECS); | |
Desc.ids[6] = Component<CTextFont>(ECS); | |
Desc.ids[7] = Component<CSetTransientText>(ECS); | |
Desc.ids[8] = Component<CUIHierarchyItemTarget>(ECS); | |
Desc.ids[9] = Component<CInputInteractable>(ECS); | |
Desc.count = 0; | |
View = InView; | |
} | |
void Add(entity_index Entity, const CPosition &Position, FStringView Text, entity_view Target) { | |
Entities[Desc.count] = Entity; | |
Positions[Desc.count] = Position; | |
SetTransientTexts[Desc.count] = {Text}; | |
UIHierarchyItemTargets[Desc.count] = {Target}; | |
++Desc.count; | |
} | |
void Submit(ecs &ECS) { | |
for(int32 Index = 0; Index < Desc.count; ++Index) { | |
Views[Index] = View; | |
} | |
ecs_bulk_init(ECS.c_ptr(), &Desc); | |
} | |
ecs_bulk_desc_t Desc; | |
THeapArray<entity_index> Entities; | |
CView View; | |
THeapArray<CView> Views; | |
THeapArray<CPosition> Positions; | |
THeapArray<CAlignment> Alignments; | |
THeapArray<CColor> Colors; | |
THeapArray<CTextFont> Fonts; | |
THeapArray<CSetTransientText> SetTransientTexts; | |
THeapArray<CUIHierarchyItemTarget> UIHierarchyItemTargets; | |
THeapArray<CInputInteractable> InputInteractables; | |
TStaticArray<void const *, 10> Data; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment