Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
The detail-only fingerprint part. More...
#include <Detailmark.h>
Public Types | |
typedef TArray< TSubclassOf< UDetail > > | DetailsType |
The type of the details array container. | |
Public Member Functions | |
const DetailsType & | GetDetails () const |
Get the details of the detailmark. | |
operator const DetailsType & () const | |
Convert to an array of detail classes. | |
bool | IsEmpty () const |
Check if the detailmark is empty. | |
int32 | DetailsNum () const |
The number of details in the detailmark. | |
const FBitMask & | GetDetailsMask () const |
Get the details mask of the detailmark. | |
TSubclassOf< UDetail > | DetailAt (const int32 Index) const |
Get a detail type by its index. | |
TSubclassOf< UDetail > | operator[] (const int32 Index) const |
Get a detail type by its index. | |
operator bool () const | |
Check if a detailmark is viable and has any actual effect. | |
bool | operator== (const FDetailmark &Other) const |
Compare two detailmarks for equality. | |
bool | operator!= (const FDetailmark &Other) const |
Compare two detailmarks for inequality. | |
bool | Identical (const FDetailmark *Other, uint32 PortFlags) const |
Compare two detailmarks for equality. | |
FString | ToString () const |
Convert a detailmark to a string. | |
Search | |
int32 | IndexOf (const TSubclassOf< UDetail > DetailClass) const |
Get the index of a specific detail class. | |
template<class D > | |
constexpr int32 | IndexOf () const |
Get the index of a specific detail class. | |
template<typename AllocatorT > | |
EApparatusStatus | IndicesOf (const TSubclassOf< UDetail > DetailClass, TArray< int32, AllocatorT > &OutIndices) const |
Find all of the indices of a detail class. | |
bool | Contains (const TSubclassOf< UDetail > DetailClass) const |
Check if the detailmark includes a detail class. | |
template<class D > | |
bool | Contains () const |
Check if the detailmark includes a detail class. | |
Mapping | |
template<typename TAllocatorA , typename TAllocatorB > | |
EApparatusStatus | FindMappingFrom (const TArray< TSubclassOf< UDetail >, TAllocatorA > &InDetailsClasses, TArray< int32, TAllocatorB > &OutMapping) const |
Find an indexing mapping from another detailmark defined by an array of details. | |
template<typename TAllocator , int32 Size> | |
EApparatusStatus | FindMappingFrom (const TArray< TSubclassOf< UDetail >, TAllocator > &InDetailsClasses, std::array< int32, Size > &OutMapping) const |
Find an indexing mapping from another detailmark defined by an array of details. | |
template<typename AllocatorT > | |
EApparatusStatus | FindMappingFrom (const FDetailmark &InDetailmark, TArray< int32, AllocatorT > &OutMapping) const |
Get an indexing mapping from another detailmark's details. | |
template<int32 Size> | |
EApparatusStatus | FindMappingFrom (const FDetailmark &InDetailmark, std::array< int32, Size > &OutMapping) const |
Get an indexing mapping from another detailmark's details. | |
template<typename TAllocatorA , typename TAllocatorB , typename TAllocatorC > | |
EApparatusStatus | FindMappingFrom (const TArray< TSubclassOf< UDetail >, TAllocatorA > &InDetailsClasses, TArray< TArray< int32, TAllocatorC >, TAllocatorB > &OutMapping) const |
Get an indexing multi-mapping from another detailmark defined by an array of details. | |
template<typename TAllocatorA , typename TAllocatorB > | |
EApparatusStatus | FindMappingFrom (const FDetailmark &InDetailmark, TArray< TArray< int32, TAllocatorB >, TAllocatorA > &OutMapping) const |
Get an indexing multi-mapping from another detailmark. | |
template<typename AllocatorT > | |
EApparatusStatus | FindMappingTo (const FDetailmark &InDetailmark, TArray< int32, AllocatorT > &OutMapping) const |
Find an indexing details mapping to another detailmark. | |
template<int32 Size> | |
EApparatusStatus | FindMappingTo (const FDetailmark &InDetailmark, std::array< int32, Size > &OutMapping) const |
Find an indexing details mapping to another detailmark. | |
template<typename TAllocatorA , typename TAllocatorB > | |
EApparatusStatus | FindMappingTo (const FDetailmark &InDetailmark, TArray< TArray< int32, TAllocatorB >, TAllocatorA > &OutMapping) const |
Find a multi-indexing details mapping to another detailmark. | |
Matching | |
bool | Matches (const FFilter &Filter) const |
Check if the detailmark matches a filter. | |
bool | Matches (const FDetailmark &InDetailmark) const |
Check if the detailmark matches another detailmark acting as a filter. | |
Assignment | |
template<EParadigm Paradigm, typename AllocatorT > | |
TOutcome< Paradigm > | Set (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailsClasses) |
Set a detailmark to an array of detail classes. | |
template<EParadigm Paradigm, typename AllocatorT > | |
TOutcome< Paradigm > | Set (const TArray< UDetail *, AllocatorT > &InDetails) |
Set a detailmark to an array of active details. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Set (FDetailmark &&InDetailmark) |
Move an another detailmark to the detailmark. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Set (const FDetailmark &InDetailmark) |
Set the detailmark equal to another detailmark. | |
FDetailmark & | operator= (FDetailmark &&InDetailmark) |
Move a detailmark. | |
FDetailmark & | operator= (const FDetailmark &InDetailmark) |
Set a detailmark equal to another detailmark. | |
Static Public Member Functions | |
static int32 | GetDetailId (const TSubclassOf< UDetail > DetailClass) |
Get a detail's unique identifier. | |
static int32 | RegisteredDetailsNum () |
Get the total number of registered details so far. | |
static const FBitMask & | GetDetailMask (const TSubclassOf< UDetail > DetailClass) |
Get the cached mask of a detail type. | |
static const FBitMask & | GetExcludedDetailMask (const TSubclassOf< UDetail > DetailClass) |
Get the excluded mask of a detail type. | |
static const FBitMask & | GetDetailMask (const UDetail *Detail) |
Get the mask of a detail's class. | |
static const FBitMask & | GetExcludedDetailMask (const UDetail *const Detail) |
Get the excluded mask of a details's class. | |
template<class D > | |
static const FBitMask & | GetDetailMask () |
Get the mask of a detail. | |
Static Public Attributes | |
static constexpr int32 | InvalidDetailId = -1 |
Invalid detail identifier. | |
static const FDetailmark | Zero |
An empty detailmark constant. | |
Friends | |
struct | FFilter |
class | UChunk |
struct | FSubjectHandle |
class | UBelt |
class | AMechanism |
class | UApparatusFunctionLibrary |
Serialization | |
FArchive & | operator<< (FArchive &Ar, FDetailmark &Detailmark) |
Serialization operator. | |
bool | Serialize (FArchive &Archive) |
Serialize the traitmark to the archive. | |
void | PostSerialize (const FArchive &Archive) |
Post-serialize the traitmark updating the mask. | |
Addition | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Add (const TSubclassOf< UDetail > DetailClass) |
Add a detail class. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Add (std::initializer_list< TSubclassOf< UDetail > > DetailClasses) |
Add detail classes to the detailmark. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Add (const FDetailmark &InDetailmark) |
Add a detailmark. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | AddDecomposed (const TSubclassOf< UDetail > DetailClass) |
Add a detail class while decomposing it with its base classes. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | AddDecomposed (const FDetailmark &InDetailmark) |
Add a detailmark while decomposing its details to their base classes. | |
template<EParadigm Paradigm, typename AllocatorT > | |
TOutcome< Paradigm > | Add (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailsClasses) |
Add an array of detail classes. | |
template<typename AllocatorT > | |
auto | Add (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailsClasses) |
Add an array of detail classes. | |
template<EParadigm Paradigm, typename AllocatorT > | |
TOutcome< Paradigm > | Add (const TArray< UDetail *, AllocatorT > &InDetails) |
Add an array of details. | |
template<typename AllocatorT > | |
auto | Add (const TArray< UDetail *, AllocatorT > &InDetails) |
Add an array of details. | |
template<EParadigm Paradigm, class... Ds> | |
TOutcome< Paradigm > | Add () |
Add detail(s) to the detailmark. | |
template<class... Ds, EParadigm Paradigm = EParadigm::Default> | |
auto | Add () |
Add detail(s) to the detailmark. | |
FDetailmark & | operator+= (std::initializer_list< TSubclassOf< UDetail > > DetailClasses) |
Add variadic detail classes to the detailmark. | |
FDetailmark & | operator+= (const TArray< TSubclassOf< UDetail > > &DetailClasses) |
Add an array of detail classes to the detailmark. | |
FDetailmark & | operator+= (const TSubclassOf< UDetail > DetailClass) |
Add a single detail class to the detailmark. | |
Removal | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Remove (const TSubclassOf< UDetail > DetailClass) |
Remove a detail class from the detailmark. | |
template<EParadigm Paradigm, class... Ds> | |
TOutcome< Paradigm > | Remove () |
Remove a detail class from the detailmark. | |
template<class... Ds, EParadigm Paradigm = EParadigm::Default> | |
auto | Remove () |
Remove a detail class from the detailmark. | |
FDetailmark & | operator-= (const TSubclassOf< UDetail > DetailClass) |
Remove a detail type from the detailmark. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | Reset () |
Clear the detailmark without any deallocations. | |
Initialization | |
template<typename... Ds> | |
static FDetailmark | Make () |
Make a new detailmark with a list of details classes. | |
FDetailmark () | |
Initialize a new detailmark. | |
FDetailmark (FDetailmark &&Detailmark) | |
Move-initialize a detailmark. | |
FDetailmark (const FDetailmark &Detailmark) | |
Initialize a new detailmark by moving an another one. | |
FDetailmark (TSubclassOf< UDetail > DetailClass) | |
Initialize a new detailmark with a single detail class. | |
FDetailmark (std::initializer_list< TSubclassOf< UDetail > > InDetailClasses) | |
Initialize a new detailmark with an initializer list of detail classes and an optional boot state. | |
template<typename AllocatorT > | |
FDetailmark (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses) | |
Initialize a new detailmark with an array of detail classes and an optional boot state. | |
template<typename AllocatorT > | |
FDetailmark (const TArray< UDetail *, AllocatorT > &InDetails) | |
Construct a new detailmark with an array of details and an optional boot state. | |
The detail-only fingerprint part.
typedef TArray<TSubclassOf<UDetail> > FDetailmark::DetailsType |
The type of the details array container.
|
inline |
Initialize a new detailmark.
|
inline |
Move-initialize a detailmark.
Detailmark | The detailmark to copy. |
|
inline |
Initialize a new detailmark by moving an another one.
Detailmark | The detailmark to move. |
|
inline |
Initialize a new detailmark with a single detail class.
DetailClass | A detail class to initialize with. |
|
inline |
Initialize a new detailmark with an initializer list of detail classes and an optional boot state.
|
inline |
Initialize a new detailmark with an array of detail classes and an optional boot state.
|
inline |
Construct a new detailmark with an array of details and an optional boot state.
Add detail(s) to the detailmark.
Templated paradigm version.
Paradigm | The paradigm to work under. |
Ds | The detail(s) to add. |
|
inline |
Add detail(s) to the detailmark.
Templated version.
Ds | The detail(s) to add. |
Paradigm | The paradigm to work under. |
|
inline |
Add a detailmark.
Paradigm | The paradigm to work under. |
InDetailmark | The detailmark to add. |
|
inline |
Add an array of detail classes.
Paradigm | The paradigm to work under. |
AllocatorT | The type of the array allocator. |
InDetailsClasses | The detail classes to add. |
|
inline |
Add an array of detail classes.
AllocatorT | The type of the array allocator. |
InDetailsClasses | The detail classes to add. |
|
inline |
Add an array of details.
Only active details' classes get added.
Paradigm | The paradigm to work under. |
AllocatorT | The type of the array allocator. |
InDetails | The details to add. |
|
inline |
Add an array of details.
Only active details' classes get added.
AllocatorT | The type of the array allocator. |
InDetails | The details to add. |
|
inline |
Add a detail class.
Paradigm | The paradigm to work under. |
DetailClass | The class of the detail to add. May be a nullptr and will ignore it silently in this case. |
|
inline |
Add detail classes to the detailmark.
Paradigm | The paradigm to work under. |
DetailClasses | The detail classes to add. |
|
inline |
Add a detailmark while decomposing its details to their base classes.
Paradigm | The paradigm to work under. |
InDetailmark | The detailmark to add. |
|
inline |
Add a detail class while decomposing it with its base classes.
Paradigm | The paradigm to work under. |
DetailClass | A class of the detail to add. |
Check if the detailmark includes a detail class.
Templated version.
Check if the detailmark includes a detail class.
|
inline |
Get a detail type by its index.
Index | The index of the detail to get. |
|
inline |
The number of details in the detailmark.
|
inline |
Get an indexing mapping from another detailmark's details.
InDetailmark | A detailmark to get a mapping from. |
OutMapping | The resulting details mapping. |
|
inline |
Get an indexing mapping from another detailmark's details.
InDetailmark | A detailmark to get a mapping from. |
OutMapping | The resulting details mapping. |
|
inline |
Get an indexing multi-mapping from another detailmark.
InDetailmark | A detailmark to get a mapping from. |
OutMapping | The resulting two-dimensional multi-mapping. |
|
inline |
Find an indexing mapping from another detailmark defined by an array of details.
Standard array version.
InDetailsClasses | A detailmark to get a mapping from. |
OutMapping | The resulting mapping to output to. |
|
inline |
Find an indexing mapping from another detailmark defined by an array of details.
InDetailsClasses | A detailmark to get a mapping from. |
OutMapping | The resulting mapping. |
|
inline |
Get an indexing multi-mapping from another detailmark defined by an array of details.
InDetailsClasses | A detailmark to get a mapping from. |
OutMapping | The resulting two-dimensional multi-mapping. |
|
inline |
Find an indexing details mapping to another detailmark.
Standard array output version.
Size | The size of output mapping buffer. |
InDetailmark | A detailmark to get the details mapping to. |
OutMapping | The resulting mapping. |
|
inline |
Find an indexing details mapping to another detailmark.
InDetailmark | A detailmark to get the details mapping to. |
OutMapping | The resulting mapping. |
|
inline |
Find a multi-indexing details mapping to another detailmark.
InDetailmark | A detailmark to get the details mapping to. |
OutMapping | The resulting multi-mapping. |
|
inlinestatic |
Get a detail's unique identifier.
Get the mask of a detail.
|
inlinestatic |
Get the cached mask of a detail type.
Get the mask of a detail's class.
Cached internally.
|
inline |
Get the details of the detailmark.
|
inline |
Get the details mask of the detailmark.
Constant version.
|
inlinestatic |
Get the excluded mask of a detail type.
|
inlinestatic |
Get the excluded mask of a details's class.
Cached internally.
|
inline |
Compare two detailmarks for equality.
Editor-friendly method.
This compares the details arrays during the editing mode, since it is used for the changes detection.
Other | The other detailmark to compare to. |
PortFlags | The contextual port flags. |
|
inlineconstexpr |
Get the index of a specific detail class.
Templated version.
Searches for an exact class first, by parental class information second.
INDEX_NONE
will be safely returned in that case.D | The detail to search for. |
INDEX_NONE
, if there is no such detail within the mark.
|
inline |
Get the index of a specific detail class.
Searches for an exact class first, by parental class information second.
DetailClass | The detail to search for. |
INDEX_NONE
, if there is no such detail within or DetailClass
is nullptr
.
|
inline |
Find all of the indices of a detail class.
DetailClass | A detail class to find the indices of. |
OutIndices | The resulting indices storage. |
|
inline |
Check if the detailmark is empty.
The detailmark is empty if it has no details in it.
|
inlinestatic |
Make a new detailmark with a list of details classes.
Ds | The classes of details to fill with. |
|
inline |
Check if the detailmark matches another detailmark acting as a filter.
Check if the detailmark matches a filter.
|
inline |
Check if a detailmark is viable and has any actual effect.
|
inlineexplicit |
Convert to an array of detail classes.
|
inline |
Compare two detailmarks for inequality.
Two detailmarks are considered to be inequal if their details composition is different (regardless of the ordering).
|
inline |
Add an array of detail classes to the detailmark.
|
inline |
Add a single detail class to the detailmark.
|
inline |
Add variadic detail classes to the detailmark.
|
inline |
Remove a detail type from the detailmark.
|
inline |
Set a detailmark equal to another detailmark.
|
inline |
Move a detailmark.
|
inline |
Compare two detailmarks for equality.
Two detailmarks are considered to be equal if their details composition is equal (regardless of the ordering).
|
inline |
Get a detail type by its index.
Index | The index of the detail to get. |
void FDetailmark::PostSerialize | ( | const FArchive & | Archive | ) |
Post-serialize the traitmark updating the mask.
|
inlinestatic |
Get the total number of registered details so far.
Remove a detail class from the detailmark.
Templated paradigm version.
Paradigm | The paradigm to work under. |
Ds | The classes of the details to remove. |
|
inline |
Remove a detail class from the detailmark.
Templated paradigm version.
Paradigm | The paradigm to work under. |
Ds | The classes of the details to remove. |
|
inline |
Remove a detail class from the detailmark.
'
Paradigm | The paradigm to work under. May be a nullptr and will ignore be ignored silently in that case. |
DetailClass | A detail class to remove. |
|
inline |
Clear the detailmark without any deallocations.
Paradigm | The paradigm to work under. |
|
inline |
Serialize the traitmark to the archive.
|
inline |
Set the detailmark equal to another detailmark.
Paradigm | The paradigm to work under. |
InDetailmark | The detailmark to set to. |
|
inline |
Set a detailmark to an array of detail classes.
Paradigm | The paradigm to work under. |
AllocatorT | The allocator for the array. |
InDetailsClasses | The classes of the details to set to. |
|
inline |
Set a detailmark to an array of active details.
Only active details get actually added.
Paradigm | The paradigm to work under. |
InDetails | The details to set to. |
|
inline |
Move an another detailmark to the detailmark.
Paradigm | The paradigm to work under. |
InDetailmark | The detailmark to move. |
FString FDetailmark::ToString | ( | ) | const |
Convert a detailmark to a string.
|
friend |
|
friend |
|
friend |
|
friend |
Serialization operator.
|
friend |
|
friend |
|
friend |
|
staticconstexpr |
Invalid detail identifier.
|
static |
An empty detailmark constant.