Skip to content

Instantly share code, notes, and snippets.

@Hexlord
Created April 1, 2022 04:56
Show Gist options
  • Save Hexlord/484f6938a0585e17c5583213a84799ca to your computer and use it in GitHub Desktop.
Save Hexlord/484f6938a0585e17c5583213a84799ca to your computer and use it in GitHub Desktop.
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