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.