|
Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
The conveyor belt consisting of subjects. More...
#include <Belt.h>


Public Types | |
| enum | { InvalidSlotIndex = FBeltSlot::InvalidIndex , InvalidDetailLineIndex = FBeltSlot::InvalidDetailIndex } |
| typedef uint32 | TagType |
| The belt's tag type. | |
Public Types inherited from IIterable | |
| enum | { InvalidSlotIndex = -1 } |
Public Member Functions | |
| constexpr bool | IsSparse () const |
| Is this a sparse belt allowing some empty detail spaces? | |
| const FDetailmark & | GetDetailmark () const |
| The current decomposed detailmark of the belt. | |
| int32 | DetailLineIndexOf (const TSubclassOf< UDetail > DetailClass) const |
| Get the line index for a detail class. | |
| template<class D > | |
| constexpr int32 | DetailLineIndexOf () const |
| Get the line index for a detail class. | |
| AMechanism * | GetOwner () const |
| Get the owning mechanism of the belt. | |
| TagType | GetTag () const |
| Get the preset tag of the belt. | |
| template<EParadigm Paradigm = EParadigm::Default> | |
| TOutcome< Paradigm > | Expand (const FDetailmark &InDetailmark) |
| Expand a belt to accommodate the new detailmark. | |
| const FBeltSlot & | SlotAt (const int32 SlotIndex) const |
| Get a belt slot by its index. | |
| FBeltSlot & | SlotAt (const int32 SlotIndex) |
| Get a belt slot by its index. | |
| const FBeltSlot & | operator[] (const int32 SlotIndex) const |
| Get a belt slot by its index. | |
| FBeltSlot & | operator[] (const int32 SlotIndex) |
| Get a belt slot by its index. | |
| template<typename BeltItT > | |
| BeltItT | Begin (const FFilter &Filter, const int32 Offset=0) |
| Begin iterating the belt under a certain filter. | |
| template<typename BeltItT > | |
| BeltItT | End () const |
| Get the ending iterator. | |
| template<EParadigm Paradigm = EParadigm::DefaultInternal> | |
| TOutcome< Paradigm > | Refresh (ISubjective *const Subjective) |
| Refresh a subjective within the belt. | |
| bool | Matches (const FFilter &Filter) const override |
| Check if the belt matches a filter. | |
Public Member Functions inherited from IIterable | |
| AMechanism * | GetOwner () const |
| Get the owning mechanism of the iterable. | |
| bool | IsLocked () const |
| Check if the sequence is currently locked. | |
| bool | IsLiquidLocked () const |
| Check if the iterable is currently locked in a liquid manner. | |
| bool | IsSolidLocked () const |
| Check if the iterable is currently locked in a solid manner. | |
| bool | IsSolid () const |
| Check if the iterable is currently solid. | |
| bool | HasQueuedForRemoval () const |
| Check if there are any slots marked for removal within the iterable. | |
| int32 | Num () const |
| Get the total number of slots currently in the iterable. | |
| int32 | IterableNum () const |
| Get the current number of elements valid for iterating. | |
| virtual bool | Matches (const FFilter &InFilter) const |
| Check whether the sequence matches a filter. | |
| template<bool bInSolid> | |
| EApparatusStatus | Lock () const |
| Lock the iterable, preparing it for the iterating process. | |
| EApparatusStatus | LockLiquid () const |
| Lock the iterable in a liquid manner. | |
| EApparatusStatus | LockSolid () const |
| Lock the iterable in a solid manner. | |
| template<bool bInSolid> | |
| EApparatusStatus | Unlock () const |
| Unlock the iterable, applying the pending changes. | |
Static Public Member Functions | |
| static UBelt * | New (UObject *const Owner, const FDetailmark &InDetailmark) |
| Create a new belt instance. | |
| static UBelt * | New (UObject *const Owner, const FName &Name, const FDetailmark &InDetailmark) |
| Create a new belt instance with a specific name. | |
Static Public Attributes | |
| static constexpr TagType | InvalidTag = (TagType)INDEX_NONE |
| An invalid belt tag constant. | |
Protected Member Functions | |
| EApparatusStatus | DoUnlock (const bool bWasSolid) const override |
| Unlock the iterable, applying the pending changes. | |
Protected Member Functions inherited from IIterable | |
| void | EnqueueForRemoval (const int32 SlotIndex) const |
| Enqueue a slot for removal. | |
| bool | DequeueFromRemoved (int32 &OutSlotIndex) const |
| Dequeue a slot from being removed. | |
| int32 | DequeueFromRemoved () const |
| Dequeue a slot from being removed. | |
| virtual EApparatusStatus | DoUnlock (const bool bWasSolid) const |
| Unlock the iterable, applying the pending changes. | |
Friends | |
| struct | FBeltSlot |
| template<typename SubjectHandleT > | |
| struct | TBeltIt |
| class | USubjectiveActorComponent |
| class | USubjectiveUserWidget |
| class | UDetail |
| class | AMechanism |
| class | UMachine |
| class | ISubjective |
Additional Inherited Members | |
Protected Attributes inherited from IIterable | |
| int32 | Count = 0 |
| The logical (un-buffered) number of slots in the belt that are actually candidates for being iterated once the iterable is locked. | |
| std::atomic< int32 > | IterableCount {-1} |
| A number of currently iterable slots, excluding those, that were added before the unlocking. | |
The conveyor belt consisting of subjects.
| typedef uint32 UBelt::TagType |
The belt's tag type.
This should be able to hold the UObject's Unique Id.
| anonymous enum |
|
inline |
Begin iterating the belt under a certain filter.
| BeltItT | The type of the belt iterator to use. |
| Filter | The filter to iterate under. |
| Offset | The offset for the slot to begin with. |
|
inlineconstexpr |
Get the line index for a detail class.
INDEX_NONE will be safely returned in that case.| D | The detail class to query for. |
|
inline |
Get the line index for a detail class.
| DetailClass | The detail class to query for. |
|
inlineoverrideprotectedvirtual |
Unlock the iterable, applying the pending changes.
Must be implemented in the descendants.
The procedure is guaranteed to be executed under a locked critical section for this chunk.
| bWasSolid | Should the iterable be unlocked from a solid state. |
Reimplemented from IIterable.
|
inline |
Get the ending iterator.
| BeltItT | The type of the belt iterator. |
| TOutcome< Paradigm > UBelt::Expand | ( | const FDetailmark & | InDetailmark | ) |
Expand a belt to accommodate the new detailmark.
| Paradigm | The paradigm to work under. |
| InDetailmark | The new detailmark to include. |
|
inline |
The current decomposed detailmark of the belt.
|
inline |
Get the owning mechanism of the belt.
|
inline |
Get the preset tag of the belt.
This one is set automatically when creating a belt from a preferred one.
|
inlineconstexpr |
Is this a sparse belt allowing some empty detail spaces?
Check if the belt matches a filter.
Reimplemented from IIterable.
|
inlinestatic |
Create a new belt instance.
|
inlinestatic |
Create a new belt instance with a specific name.
|
inline |
Get a belt slot by its index.
| SlotIndex | The index of the belt slot. |
|
inline |
Get a belt slot by its index.
Constant version.
| SlotIndex | The index of the belt slot. |
|
inline |
Refresh a subjective within the belt.
The subjective might actually be in a different belt before calling this method. In such case it will be moved to this belt.
| Paradigm | The paradigm to work under. |
| Subjective | A subjective to refresh. Must not be a nullptr. |
|
inline |
Get a belt slot by its index.
| SlotIndex | The index of the belt slot. |
|
inline |
Get a belt slot by its index.
Constant version.
| SlotIndex | The index of the belt slot. |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
An invalid belt tag constant.
Matches the Object's default internal index value.