Apparatus Version 1.23
ECS data-oriented workflow for Unreal Engine.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Friends | List of all members
ISolidSubjective Class Reference

A solid-state version of the subjective. More...

#include <Subjective.h>

Inheritance diagram for ISolidSubjective:
Inheritance graph
[legend]
Collaboration diagram for ISolidSubjective:
Collaboration graph
[legend]

Public Types

enum  { InvalidSlotIndex = ISubjective::InvalidSlotIndex }
 

Public Member Functions

AMechanismGetMechanism () const
 Get the mechanism this subjective is currently part of (if registered).
 
const FFingerprintGetFingerprint () const
 Get the active fingerprint of the subjective.
 
bool Matches (const FFilter &InFilter) const
 Check if the subjective matches a supplied filter.
 
bool Matches (const FTraitmark &InTraitmark) const
 Check if the subjective matches a supplied traitmark as a filter.
 
bool Matches (const FDetailmark &InDetailmark) const
 Check if the subjective matches a supplied detailmark as a filter.
 
UBeltGetPreferredBelt () const
 Get the preferred belt of the subjective (if any).
 
const struct FBeltSlotGetSlot () const
 Get the current belt slot of the subjective (if any).
 
bool IsRegistered () const
 Check if the subjective is registered within the machine.
 
int32 GetSlotIndex () const
 Get the current belt slot index of the subjective.
 
bool IsBooted () const
 Check if the subject is booted.
 
FSolidSubjectHandle GetHandle () const
 Get the subject handle of this subjective.
 
uint32 CalcHash () const
 Calculate the hash of the subjective.
 
AActor * GetActor () const
 Get an actor corresponding to the subjective (if any).
 
Flagmark
EFlagmark GetFlagmark () const
 Get the current flagmark of the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
auto SetFlagmark (const EFlagmark InFlagmark)
 Set the current flagmark for the subjective.
 
bool HasFlag (const EFlagmarkBit Flag) const
 Get the current state of a flag for the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
auto SetFlag (const EFlagmarkBit Flag, const bool bState=true)
 Set a flag for the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
auto ToggleFlag (const EFlagmarkBit Flag)
 Toggle a flag for the subjective.
 
Traits
bool HasTrait (UScriptStruct *const TraitType) const
 Check if the solid subjective has a certain trait.
 
template<typename T >
bool HasTrait () const
 Check if there is a trait of a specific type in the solid subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait from a subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, const void * > GetTraitPtr (UScriptStruct *const TraitType) const
 Get the trait data from a subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, void * > GetTraitPtr (UScriptStruct *const TraitType)
 Get the trait data from a subjective by its type.
 
template<EParadigm Paradigm, typename T >
TOutcomeIf< Paradigm, IsTraitType< T >(), const T * > GetTraitPtr () const
 Get the trait data from a subjective by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto GetTraitPtr () const
 Get the trait data from a subjective by its type.
 
template<EParadigm Paradigm, typename T >
TOutcomeIf< Paradigm, IsTraitType< T >(), T * > GetTraitPtr ()
 Get the trait data from a subjective by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto GetTraitPtr ()
 Get the trait data from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
auto GetTrait (T &OutTrait, const bool bTraitDataInitialized=true) const
 Get a trait from the subjective by its type.
 
template<EParadigm Paradigm, typename T >
auto GetTrait () const
 Get a copy of a trait from the subjective by its type.
 
template<typename T >
auto GetTrait () const
 Get a copy of a trait from the subjective by its type.
 
Details
UDetailFindDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 
template<class D >
DFindDetail (const bool bIncludeDisabled=false) const
 
template<EParadigm Paradigm = EParadigm::Default>
UDetailGetDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm, D * > GetDetail (const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<class D , EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, D * > GetDetail (const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<class D >
std::enable_if< IsDetailClass< D >(), void >::type GetDetails (TArray< D * > &OutDetails, const bool bIncludeDisabled=false) const
 Get the details of the subjective.
 
void GetDetails (const bool bIncludeDisabled, TArray< UDetail * > &OutDetails) const
 Get the details of the subjective.
 
void GetDetails (TArray< UDetail * > &OutDetails) const
 Get all the enabled details of the subjective.
 
void FindDetails (TSubclassOf< UDetail > DetailClass, TArray< UDetail * > &OutDetails, const bool bIncludeDisabled=false) const
 
void GetDetails (TSubclassOf< UDetail > DetailClass, TArray< UDetail * > &OutDetails, const bool bIncludeDisabled=false) const
 Get the details of a certain class.
 
bool HasDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 Check if there is a detail of a specific class in the subjective.
 
template<class T >
bool HasDetail (const bool bIncludeDisabled=false) const
 Check if there is a detail of a specific class in the subjective.
 
Networking
bool IsNetworkCapable () const
 Check if the subjective class is capable of networking.
 
uint32 GetNetworkId () const
 Get the unique cross-peer network identifier of the subjective (if any).
 
bool IsServerSide () const
 Check if the subjective is a server-side one.
 
bool IsClientSide () const
 Check if the subjective is a client-side one.
 
const FTraitmarkGetTraitmarkPermit () const
 Get the server-side list of traits allowed to be received from clients.
 
const FTraitmarkGetTraitmarkPass () const
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmarkPermit (const FTraitmark &InTraitmarkPermit)
 Set the server-side list of traits allowed to be received from clients.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmarkPass (const FTraitmark &InTraitmarkPermit)
 
template<EParadigm Paradigm = EParadigm::Default>
auto PushTrait (UScriptStruct *const TraitType, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an existing trait to a remote peer.
 
template<EParadigm Paradigm, typename T >
auto PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to a remote peer.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to a remote peer.
 

Friends

class ISubjective
 

Additional Inherited Members

- Protected Types inherited from ISubjective
typedef int32 SlotIndexType
 The type of the slot index.
 
- Protected Member Functions inherited from ISubjective
bool MarkBooted ()
 Set the subjective as booted.
 
void TakeBeltSlot (UBelt *const InBelt, const int32 InSlotIndex)
 Set or reset the current belt slot of the subjective.
 
virtual FStandardSubjectivePropertyBlockDoGetStandardPropertyBlock ()
 
virtual FStandardSubjectivePropertyBlockDoGetStandardPropertyBlock () const
 
FStandardSubjectivePropertyBlockGetStandardPropertyBlock ()
 
const FStandardSubjectivePropertyBlockGetStandardPropertyBlock () const
 
virtual FStandardSubjectiveNetworkPropertyBlockDoGetStandardNetworkPropertyBlock ()
 
virtual FStandardSubjectiveNetworkPropertyBlockDoGetStandardNetworkPropertyBlock () const
 
FStandardSubjectiveNetworkPropertyBlockGetStandardNetworkPropertyBlock ()
 
const FStandardSubjectiveNetworkPropertyBlockGetStandardNetworkPropertyBlock () const
 
const EFlagmarkGetFlagmarkPropRef () const
 Get the internal flagmark property reference.
 
EFlagmarkGetFlagmarkPropRef ()
 Get the internal flagmark property reference.
 
auto & GetMechanismOverridePropRef () const
 Get the mechanism override property of the subjective.
 
auto & GetMechanismOverridePropRef ()
 Get the mechanism override property of the subjective.
 
TArray< FTraitRecord > & GetTraitRecordsRef ()
 Direct access for the internal traits array.
 
TArray< UDetail * > & GetDetailsRef ()
 Direct access for the internal details array.
 
void TakeBeltSlot (TYPE_OF_NULLPTR)
 Reset the belt slot.
 
void ClientReceiveNetworkId_Implementation (const uint32 NetworkId)
 Assign a unique network identifier to the subject of the subjective.
 
void ServerRequestNetworkId_Implementation ()
 Request a unique network identifier for the subject of the subjective.
 
void PeerReceiveTrait_Implementation (EPeerRole PeerRole, UScriptStruct *const TraitType, const TArray< uint8 > &TraitData)
 Receive a trait on the server or the client.
 
bool PeerReceiveTrait_Validate (EPeerRole PeerRole, UScriptStruct *const TraitType, const TArray< uint8 > &TraitData)
 Validate receiving a trait on the server or the client.
 
virtual TPortableOutcome DoPushTrait (const EParadigm Paradigm, UScriptStruct *const TraitType, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 
virtual TPortableOutcome DoPushTrait (const EParadigm Paradigm, UScriptStruct *const TraitType, const void *const TraitData, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 
virtual void AssignNetworkIdOnClient (const uint32 NetworkId)
 Assign a network identifier on a client.
 
virtual void ObtainNetworkIdFromServer ()
 Obtain a networking subject identifier from the server.
 
void TakeBeltSlot (const int32 InSlotIndex)
 Change the current slot of the subjective, while preserving the belt.
 
UBeltGetBelt () const
 Get the active belt of the subjective (if any).
 
FFingerprintGetFingerprintRef ()
 Get the internal fingerprint of the subjective.
 
const FFingerprintGetFingerprintRef () const
 Get the internal fingerprint of the subjective.
 
struct FBeltSlotGetSlotPtr ()
 Get the current belt slot of the subjective (if any).
 
void DoRegister ()
 Perform an actual registration of the subjective.
 
template<EParadigm Paradigm = EParadigm::DefaultInternal>
TOutcome< Paradigm > DoUnregister ()
 Perform an actual de-registration procedure on the subjective.
 
void DoStartSerialization (FArchive &Archive)
 Begin the serialization routine.
 
void DoFinishSerialization (FArchive &Archive)
 End the serialization routine.
 
bool DoesHaveTraitRecord (UScriptStruct *const TraitType) const
 
FTraitmark DoGetTraitRecordsTraitmark () const
 Get the traitmark based on the existing trait records.
 
const FTraitRecord * DoFindTraitRecord (UScriptStruct *const TraitType) const
 
EApparatusStatus DoGetTraitRecord (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 
template<typename T >
EApparatusStatus DoGetTraitRecord (T *const OutTraitData, const bool bTraitDataInitialized=true) const
 
template<typename T >
EApparatusStatus DoGetTraitRecord (T &OutTraitData, const bool bTraitDataInitialized=true) const
 
EApparatusStatus DoSetTraitRecord (UScriptStruct *TraitType, const void *TraitData)
 
template<typename T >
EApparatusStatus DoSetTraitRecord (const T &InTrait)
 
template<typename T >
EApparatusStatus DoSetTraitRecord (const T *const InTrait)
 
const FTraitRecord & DoObtainTraitRecord (UScriptStruct *const TraitType)
 
EApparatusStatus DoObtainTraitRecord (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true)
 
EApparatusStatus DoRemoveTraitRecord (UScriptStruct *const TraitType)
 
EApparatusStatus DoRemoveAllTraitRecords ()
 
virtual bool ShouldBeReplicated () const
 Check if the entity be replicated.
 
AMechanismGetMechanism () const
 Get the mechanism this subjective is currently part of (if registered).
 
template<EParadigm Paradigm = EParadigm::Safe>
TOutcome< Paradigm > SetMechanism (AMechanism *const Mechanism)
 Set the mechanism of the subjective.
 
const TArray< FTraitRecord > & GetTraitRecordsRef () const
 Direct access for the internal traits array.
 
virtual const TArray< UDetail * > & GetDetailsRef () const
 Direct access for the internal details array.
 
const FFingerprintGetFingerprint () const
 Get the active fingerprint of the subjective.
 
bool Matches (const FFilter &InFilter) const
 Check if the subjective matches a supplied filter.
 
bool Matches (const FTraitmark &InTraitmark) const
 Check if the subjective matches a supplied traitmark as a filter.
 
bool Matches (const FDetailmark &InDetailmark) const
 Check if the subjective matches a supplied detailmark as a filter.
 
UBeltGetPreferredBelt () const
 Get the preferred belt of the subjective (if any).
 
const struct FBeltSlotGetSlot () const
 Get the current belt slot of the subjective (if any).
 
bool IsRegistered () const
 Check if the subjective is registered within the machine.
 
int32 GetSlotIndex () const
 Get the current slot index of the subjective.
 
bool IsBooted () const
 Check if the subject is booted.
 
FSubjectHandle GetHandle ()
 Get the subject handle of this subjective.
 
FConstSubjectHandle GetHandle () const
 Get the subject handle of this subjective.
 
template<EParadigm Paradigm = EParadigm::DefaultPortable>
TOutcome< Paradigm > Unregister ()
 Unregister the subjective from its mechanism in a manual fashion.
 
virtual uint32 CalcHash () const
 Calculate the hash of the subjective.
 
void ReceiveHandleDespawned ()
 Called when the subject handle is despawned.
 
virtual void NotifyHandleDespawned ()
 Called when the subject handle is despawned.
 
virtual AActor * GetActor () const
 Get an actor corresponding to the subjective (if any).
 
EFlagmark GetFlagmark () const
 Get the current flagmark of the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkSetFlagmark (const EFlagmark InFlagmark)
 Set the current flagmark for the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkSetFlagmarkMasked (const EFlagmark InFlagmark, const EFlagmark InMask=FM_AllUserLevel)
 Set the current flagmark for the subjective in a masked fashion.
 
bool HasFlag (const EFlagmarkBit Flag) const
 Get the current state of a flag for the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, boolSetFlag (const EFlagmarkBit Flag, const bool bState=true)
 Set a flag for the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, boolToggleFlag (const EFlagmarkBit Flag)
 Toggle a flag for the subjective.
 
bool HasTrait (UScriptStruct *const TraitType) const
 Check if the subjective has a certain trait.
 
template<typename T , TTraitTypeSecurity< T > = true>
bool HasTrait () const
 Check if there is a trait of a specific type in the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTrait (UScriptStruct *const TraitType, const void *const TraitData)
 Set a trait of the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >()> SetTrait (const T &Trait)
 Set a trait of the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait from the subjective by its type.
 
template<EParadigm Paradigm, typename T , TTraitTypeSecurity< T > = true>
TOutcome< Paradigm > GetTrait (T *const OutTrait, const bool bTraitDataInitialized=true) const
 Get a trait from the subjective by its type.
 
template<EParadigm Paradigm, typename T , TTraitTypeSecurity< T > = true>
TOutcome< Paradigm > GetTrait (T &OutTrait, const bool bTraitDataInitialized=true) const
 Get a trait from the subjective by its type.
 
template<EParadigm Paradigm, typename T , TTraitTypeSecurity< T > = true>
TOutcome< Paradigm, TGetTrait () const
 Get a copy of a trait from the subjective by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitTypeSecurity< T > = true>
TOutcome< Paradigm, TGetTrait () const
 Get a copy of a trait from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafe< Paradigm, const void * > GetTraitPtr (UScriptStruct *const TraitType) const
 Get the trait data from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafe< Paradigm, void * > GetTraitPtr (UScriptStruct *const TraitType)
 Get the trait data from a subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >() &&IsUnsafe(Paradigm), const T * > GetTraitPtr () const
 Get the trait data from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >() &&IsUnsafe(Paradigm), T * > GetTraitPtr ()
 Get the trait data from the subjective by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto GetTraitPtr () const
 Get the trait data from the subjective by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto GetTraitPtr ()
 Get the trait data from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > ObtainTrait (UScriptStruct *TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true)
 Obtain a trait from the subjective by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >()> ObtainTrait (T *const OutTrait, const bool bTraitDataInitialized=true)
 Obtain a trait from the subjective.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, TTraitTypeSecurity< T > = true>
TOutcome< Paradigm > ObtainTrait (T &OutTrait, const bool bTraitDataInitialized=true)
 Obtain a trait from the subjective.
 
template<EParadigm Paradigm, typename T , TTraitTypeSecurity< T > = true>
TOutcome< Paradigm, TObtainTrait ()
 Get a copy of an obtained trait from the subjective.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitTypeSecurity< T > = true>
TOutcome< Paradigm, TObtainTrait ()
 Get a copy of an obtained trait from the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveTrait (UScriptStruct *const TraitType)
 Remove a trait from the subjective.
 
template<EParadigm Paradigm, typename T , TTraitTypeSecurity< T > = true>
TOutcome< Paradigm > RemoveTrait ()
 Remove a trait from the subjective.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitTypeSecurity< T > = true>
TOutcome< Paradigm > RemoveTrait ()
 Remove a trait from the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveAllTraits ()
 Remove all of the traits from the subjective.
 
void GetDetails (const bool bIncludeDisabled, TArray< UDetail * > &OutDetails) const
 Get all of the details of the subjective.
 
void GetDetails (TArray< UDetail * > &OutDetails, const bool bIncludeDisabled=false) const
 Get all the enabled details of the subjective.
 
UDetailFindDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 
template<class D >
std::enable_if< IsDetailClass< D >(), D * >::type FindDetail (const bool bIncludeDisabled=false) const
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, UDetail * > GetDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<EParadigm Paradigm, class D >
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > GetDetail (const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<class D , EParadigm Paradigm = EParadigm::Default>
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > GetDetail (const bool bIncludeDisabled=false) const
 Get a detail by its class.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > CollectDetails (TSubclassOf< UDetail > DetailClass, TArray< UDetail *, AllocatorT > &OutDetails, const bool bIncludeDisabled=false) const
 Collect all of the details of a certain class.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > GetDetails (TSubclassOf< UDetail > DetailClass, TArray< UDetail *, AllocatorT > &OutDetails, const bool bIncludeDisabled=false) const
 Get all of the details of a certain class.
 
template<class D , typename AllocatorT >
std::enable_if< IsDetailClass< D >(), void >::type GetDetails (TArray< D *, AllocatorT > &OutDetails, const bool bIncludeDisabled=false) const
 Get all of the details of a certain class.
 
void FindDetails (TSubclassOf< UDetail > DetailClass, TArray< UDetail * > &OutDetails, const bool bIncludeDisabled=false) const
 
bool HasDetail (TSubclassOf< UDetail > DetailClass, const bool bIncludeDisabled=false) const
 Check if there is a detail of a specific class in the subjective.
 
template<class D >
std::enable_if< IsDetailClass< D >(), bool >::type HasDetail (const bool bIncludeDisabled=false) const
 Check if there is a detail of a specific class in the subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, UDetail * > EnableDetail (const TSubclassOf< UDetail > DetailClass)
 Enable a detail of a certain type.
 
template<EParadigm Paradigm, class D >
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > EnableDetail ()
 Enable a detail of a certain type.
 
template<class D , EParadigm Paradigm = EParadigm::Default>
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > EnableDetail ()
 Enable a detail of a certain type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, UDetail * > AddDetail (const TSubclassOf< UDetail > DetailClass, const bool bReuseDisabled=false)
 Add a new active detail or reuse an inactive one.
 
template<EParadigm Paradigm, class D >
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > AddDetail (const bool bReuseDisabled=false)
 Add a new active detail or reuse an inactive one.
 
template<class D , EParadigm Paradigm = EParadigm::Default>
TOutcomeIf< Paradigm, IsDetailClass< D >(), D * > AddDetail (const bool bReuseDisabled=false)
 Add a new active detail or reuse an inactive one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > DisableDetail (const TSubclassOf< UDetail > DetailClass, const bool bDisableMultiple=false)
 Disable detail(s) by class.
 
template<EParadigm Paradigm, class D >
TOutcomeIf< Paradigm, IsDetailClass< D >()> DisableDetail (const bool bDisableMultiple=false)
 Disable detail(s) by class.
 
template<class D >
auto DisableDetail (const bool bDisableMultiple=false)
 Disable detail(s) by class.
 
uint32 GetNetworkId () const
 Get the unique cross-peer network identifier of the subjective (if any).
 
bool IsServerSide () const
 Check if the subjective is a server-side one.
 
bool IsClientSide () const
 Check if the subjective is a client-side one.
 
UNetConnection * GetConnectionPermit () const
 Get the server-side connection to a client from which it is allowed to push traits to this subjective.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetConnectionPermit (UNetConnection *const Connection)
 Set the server-side connection to a client from which it is allowed to push traits to this subjective.
 
const FTraitmarkGetTraitmarkPermit () const
 Get the server-side list of traits allowed to be received from clients.
 
const FTraitmarkGetTraitmarkPass () const
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmarkPermit (const FTraitmark &InTraitmarkPermit)
 Set the server-side list of traits allowed to be received from clients.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmarkPass (const FTraitmark &InTraitmarkPermit)
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > PushTrait (UScriptStruct *const TraitType, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an existing trait to a remote peer.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > PushTrait (UScriptStruct *const TraitType, const void *const TraitData, const bool bSetForLocal, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an additional trait to a remote peer.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > PushTrait (UScriptStruct *const TraitType, const void *const TraitData, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an additional trait to a remote peer.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >()> PushTrait (const T &Trait, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an extra trait to a remote peer.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIf< Paradigm, IsTraitType< T >()> PushTrait (const T &Trait, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an extra trait to a remote peer.
 
template<EParadigm Paradigm, typename T >
TOutcomeIf< Paradigm, IsTraitType< T >()> PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an extra trait to a remote peer.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true)
 Send an extra trait to a remote peer.
 
- Static Protected Member Functions inherited from ISubjective
template<EParadigm Paradigm = EParadigm::DefaultInternal, class S = void>
static TOutcome< Paradigm > DoPushTrait (const S *const Subjective, UScriptStruct *const TraitType, EPeerRole PeerRole, const bool bReliable, void(S::*ServerReceiveTraitRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ClientReceiveTraitRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ServerReceiveTraitUnreliableRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ClientReceiveTraitUnreliableRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData))
 Push a trait to the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::DefaultInternal, class S = void>
static TOutcome< Paradigm > DoPushTrait (S *const Subjective, UScriptStruct *const TraitType, const void *const TraitData, bool bSetForLocal, EPeerRole PeerRole, const bool bReliable, void(S::*ServerReceiveTraitRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ClientReceiveTraitRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ServerReceiveTraitUnreliableRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData), void(S::*ClientReceiveTraitUnreliableRPC)(UScriptStruct *TraitType, const TArray< uint8 > &TraitData))
 Push a trait to the remote version of the subject.
 
static bool IsValidSubjective (const ISubjective *const InSubjective)
 
- Protected Attributes inherited from ISubjective
UBeltBelt = nullptr
 A reference to a current subjective's belt (if any).
 
SlotIndexType SlotIndex = InvalidSlotIndex
 The index of the belt slot, this subject currently resides in.
 
FSubjectHandle Handle
 The subject handle which points to a global subjects registry.
 
bool bUnregistered = false
 Was the subjective already unregistered via the normal DoUnregister() means.
 
FStandardSubjectivePropertyBlockStandardPropertyBlockCache = nullptr
 
FStandardSubjectiveNetworkPropertyBlockStandardNetworkPropertyBlockCache = nullptr
 
- Static Protected Attributes inherited from ISubjective
static constexpr SlotIndexType InvalidSlotIndex = -1
 Invalid belt slot index.
 

Detailed Description

A solid-state version of the subjective.

This is a semantic wrapping for the same subjective interface class, with some manual casts provided.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
InvalidSlotIndex 

Invalid belt slot index.

Member Function Documentation

◆ CalcHash()

uint32 ISolidSubjective::CalcHash ( ) const
inlinevirtual

Calculate the hash of the subjective.

Reimplemented from ISubjective.

◆ FindDetail() [1/2]

template<class D >
D * ISolidSubjective::FindDetail ( const bool  bIncludeDisabled = false) const
inline
Deprecated:
Find a detail by its class. Templated version.

Supports searching by a base class.

Template Parameters
DThe class of the detail to search for.
Parameters
bIncludeDisabledShould disabled details be included?
Returns
A detail of the specified class if found, nullptr otherwise.

◆ FindDetail() [2/2]

UDetail * ISolidSubjective::FindDetail ( TSubclassOf< UDetail DetailClass,
const bool  bIncludeDisabled = false 
) const
inline
Deprecated:
Find a detail by its class.

Supports searching by a base class.

Parameters
DetailClassThe class of the detail to search for.
bIncludeDisabledShould disabled details be included?
Returns
A detail of the specified class if found, nullptr otherwise.

◆ FindDetails()

void ISolidSubjective::FindDetails ( TSubclassOf< UDetail DetailClass,
TArray< UDetail * > &  OutDetails,
const bool  bIncludeDisabled = false 
) const
inline
Deprecated:
Find the details by their class.

Supports searching by a base class.

◆ GetActor()

AActor * ISolidSubjective::GetActor ( ) const
inlinevirtual

Get an actor corresponding to the subjective (if any).

Must be overridden in the descendants if they can derive an actor from itselves.

The default implementation just returns nullptr.

Returns
An actor this subjective belongs to.
nullptr if the subject doesn't belong to any actor.

Reimplemented from ISubjective.

◆ GetDetail() [1/3]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm, D * > ISolidSubjective::GetDetail ( const bool  bIncludeDisabled = false) const
inline

Get a detail by its class.

Templated version.

Asserts success. Supports searching by a base class.

Template Parameters
DThe type of the detail to get.
Parameters
bIncludeDisabledShould disabled details be included?
Returns
A detail of the specified type.

◆ GetDetail() [2/3]

template<class D , EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, D * > ISolidSubjective::GetDetail ( const bool  bIncludeDisabled = false) const
inline

Get a detail by its class.

Templated version.

Asserts success. Supports searching by a base class.

Template Parameters
DThe type of the detail to get.
Parameters
bIncludeDisabledShould disabled details be included?
Returns
A detail of the specified type.

◆ GetDetail() [3/3]

template<EParadigm Paradigm = EParadigm::Default>
UDetail * ISolidSubjective::GetDetail ( TSubclassOf< UDetail DetailClass,
const bool  bIncludeDisabled = false 
) const
inline

Get a detail by its class.

Asserts success. Supports searching by a base class.

Parameters
DetailClassThe class of the detail to search for.
bIncludeDisabledShould disabled details be considered?
Returns
A detail of the specified class.

◆ GetDetails() [1/4]

void ISolidSubjective::GetDetails ( const bool  bIncludeDisabled,
TArray< UDetail * > &  OutDetails 
) const
inline

Get the details of the subjective.

Parameters
bIncludeDisabledShould disabled details be included?
OutDetailsAn array to store the details in.

◆ GetDetails() [2/4]

template<class D >
std::enable_if< IsDetailClass< D >(), void >::type ISolidSubjective::GetDetails ( TArray< D * > &  OutDetails,
const bool  bIncludeDisabled = false 
) const
inline

Get the details of the subjective.

Template Parameters
DThe type of details to get.
Parameters
OutDetailsAn array to store the details in.
bIncludeDisabledShould disabled details be included?

◆ GetDetails() [3/4]

void ISolidSubjective::GetDetails ( TArray< UDetail * > &  OutDetails) const
inline

Get all the enabled details of the subjective.

Parameters
OutDetailsAn array to store the details in.

◆ GetDetails() [4/4]

void ISolidSubjective::GetDetails ( TSubclassOf< UDetail DetailClass,
TArray< UDetail * > &  OutDetails,
const bool  bIncludeDisabled = false 
) const
inline

Get the details of a certain class.

Supports searching by a base class.

◆ GetFingerprint()

const FFingerprint & ISolidSubjective::GetFingerprint ( ) const
inline

Get the active fingerprint of the subjective.

Constant version.

◆ GetFlagmark()

EFlagmark ISolidSubjective::GetFlagmark ( ) const
inline

Get the current flagmark of the subjective.

◆ GetHandle()

FSolidSubjectHandle ISolidSubjective::GetHandle ( ) const
inline

Get the subject handle of this subjective.

◆ GetMechanism()

AMechanism * ISolidSubjective::GetMechanism ( ) const
inline

Get the mechanism this subjective is currently part of (if registered).

◆ GetNetworkId()

uint32 ISolidSubjective::GetNetworkId ( ) const
inline

Get the unique cross-peer network identifier of the subjective (if any).

◆ GetPreferredBelt()

UBelt * ISolidSubjective::GetPreferredBelt ( ) const
inline

Get the preferred belt of the subjective (if any).

◆ GetSlot()

const struct FBeltSlot * ISolidSubjective::GetSlot ( ) const
inline

Get the current belt slot of the subjective (if any).

Constant version.

Returns
The active belt slot of the subject or nullptr, if the subject is not (yet) part of any belt.

◆ GetSlotIndex()

int32 ISolidSubjective::GetSlotIndex ( ) const
inline

Get the current belt slot index of the subjective.

◆ GetTrait() [1/4]

template<EParadigm Paradigm, typename T >
auto ISolidSubjective::GetTrait ( ) const
inline

Get a copy of a trait from the subjective by its type.

Statically typed returning version within a paradigm.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to get. Must be a trait type.
Returns
The copy of the trait.

◆ GetTrait() [2/4]

template<typename T >
auto ISolidSubjective::GetTrait ( ) const
inline

Get a copy of a trait from the subjective by its type.

Statically typed returning version.

Template Parameters
TThe type of the trait to get. Must be a trait type.
Returns
The copy of the trait.

◆ GetTrait() [3/4]

template<EParadigm Paradigm = EParadigm::Default, typename T = void>
auto ISolidSubjective::GetTrait ( T OutTrait,
const bool  bTraitDataInitialized = true 
) const
inline

Get a trait from the subjective by its type.

Statically typed outputting version.

If the trait is missing within the subject, the output data is unchanged and EApparatusStatus::Missing is returned.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to get.
Parameters
[out]OutTraitThe trait receiver.
[in]bTraitDataInitializedIs the OutTrait actually initialized?
Returns
The status of the operation.

◆ GetTrait() [4/4]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > ISolidSubjective::GetTrait ( UScriptStruct *const  TraitType,
void *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get a trait from a subjective by its type.

If the trait is missing within the subject, the behavior is undefined and an assertion may be raised.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to get.
OutTraitDataThe trait data receiver.
bTraitDataInitializedIs the OutTraitData buffer actually initialized?
Returns
The status of the operation.

◆ GetTraitmarkPass()

const FTraitmark & ISolidSubjective::GetTraitmarkPass ( ) const
inline

◆ GetTraitmarkPermit()

const FTraitmark & ISolidSubjective::GetTraitmarkPermit ( ) const
inline

Get the server-side list of traits allowed to be received from clients.

Can only be queried on a server-side subjective version.

Returns
The current traitmark permit whitelist.

◆ GetTraitPtr() [1/6]

template<EParadigm Paradigm, typename T >
TOutcomeIf< Paradigm, IsTraitType< T >(), T * > ISolidSubjective::GetTraitPtr ( )
inline

Get the trait data from a subjective by its type.

Statically typed paradigm version.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to get.
Returns
A pointer to the trait's data.

◆ GetTraitPtr() [2/6]

template<typename T , EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::GetTraitPtr ( )
inline

Get the trait data from the subjective by its type.

Statically typed default paradigm version.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
TThe type of the trait to get.
Theparadigm to work under.
Returns
A pointer to the trait's data.

◆ GetTraitPtr() [3/6]

template<EParadigm Paradigm, typename T >
TOutcomeIf< Paradigm, IsTraitType< T >(), const T * > ISolidSubjective::GetTraitPtr ( ) const
inline

Get the trait data from a subjective by its type.

Statically typed constant paradigm version.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
Theparadigm to work under.
TThe type of the trait to get.
Returns
A pointer to the trait's data.

◆ GetTraitPtr() [4/6]

template<typename T , EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::GetTraitPtr ( ) const
inline

Get the trait data from a subjective by its type.

Statically typed constant version.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
TThe type of the trait to get.
Theparadigm to work under.
Returns
A pointer to the trait's data.

◆ GetTraitPtr() [5/6]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, void * > ISolidSubjective::GetTraitPtr ( UScriptStruct *const  TraitType)
inline

Get the trait data from a subjective by its type.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to get. Must not be a nullptr.
Returns
A pointer to the trait's data.
nullptr If there is no such trait in the subjective.

◆ GetTraitPtr() [6/6]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, const void * > ISolidSubjective::GetTraitPtr ( UScriptStruct *const  TraitType) const
inline

Get the trait data from a subjective by its type.

Constant version.

If the trait is missing within the subject, a nullptr is returned.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to get. Must not be a nullptr.
Returns
A pointer to the trait's data.
nullptr If there is no such trait in the subjective.

◆ HasDetail() [1/2]

template<class T >
bool ISolidSubjective::HasDetail ( const bool  bIncludeDisabled = false) const
inline

Check if there is a detail of a specific class in the subjective.

Templated version.

Supports examining by a base class.

Template Parameters
TThe class of the detail to test for.
Parameters
bIncludeDisabledShould disabled details be considered?
Returns
The state of examination.

◆ HasDetail() [2/2]

bool ISolidSubjective::HasDetail ( TSubclassOf< UDetail DetailClass,
const bool  bIncludeDisabled = false 
) const
inline

Check if there is a detail of a specific class in the subjective.

Supports examining by a base class.

Parameters
DetailClassThe class of the detail to test for.
bIncludeDisabledShould disabled details be considered?
Returns
The state of examination.

◆ HasFlag()

bool ISolidSubjective::HasFlag ( const EFlagmarkBit  Flag) const
inline

Get the current state of a flag for the subjective.

Parameters
FlagThe flag to get the state of.
Returns
The state of the flag.

◆ HasTrait() [1/2]

template<typename T >
bool ISolidSubjective::HasTrait ( ) const
inline

Check if there is a trait of a specific type in the solid subjective.

Statically-typed version.

Template Parameters
TThe type of the trait to check for.
Returns
The state of examination.

◆ HasTrait() [2/2]

bool ISolidSubjective::HasTrait ( UScriptStruct *const  TraitType) const
inline

Check if the solid subjective has a certain trait.

Parameters
TraitTypeThe type of the trait to check for.
Returns
The state of examination.

◆ IsBooted()

bool ISolidSubjective::IsBooted ( ) const
inline

Check if the subject is booted.

The subject must be booted (initialized) by the booting mechanics prior to being processed by the ticking mechanics.

◆ IsClientSide()

bool ISolidSubjective::IsClientSide ( ) const
inline

Check if the subjective is a client-side one.

◆ IsNetworkCapable()

bool ISolidSubjective::IsNetworkCapable ( ) const
inlinevirtual

Check if the subjective class is capable of networking.

This method should be overriden by the interface implementors to explicitly indicate that they have some mandatory properties for the functionality.

Reimplemented from ISubjective.

◆ IsRegistered()

bool ISolidSubjective::IsRegistered ( ) const
inline

Check if the subjective is registered within the machine.

◆ IsServerSide()

bool ISolidSubjective::IsServerSide ( ) const
inline

Check if the subjective is a server-side one.

◆ Matches() [1/3]

bool ISolidSubjective::Matches ( const FDetailmark InDetailmark) const
inline

Check if the subjective matches a supplied detailmark as a filter.

◆ Matches() [2/3]

bool ISolidSubjective::Matches ( const FFilter InFilter) const
inline

Check if the subjective matches a supplied filter.

◆ Matches() [3/3]

bool ISolidSubjective::Matches ( const FTraitmark InTraitmark) const
inline

Check if the subjective matches a supplied traitmark as a filter.

◆ PushTrait() [1/3]

template<EParadigm Paradigm, typename T >
auto ISolidSubjective::PushTrait ( const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to a remote peer.

Statically typed version.

On a client the trait can only be send from a current connection's owned actor, i.e. a pawn or a player controller.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to send.
Parameters
PeerRoleThe peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly.
bReliableShould a reliable channel be used for the transaction.
Returns
The outcome of the operation.

◆ PushTrait() [2/3]

template<typename T , EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::PushTrait ( const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to a remote peer.

Statically typed default paradigm version.

On a client the trait can only be send from a current connection's owned actor, i.e. a pawn or a player controller.

Template Parameters
TThe type of the trait to send.
ParadigmThe paradigm to work under.
Parameters
PeerRoleThe peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly.
bReliableShould a reliable channel be used for transaction.
Returns
The outcome of the operation.

◆ PushTrait() [3/3]

template<EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::PushTrait ( UScriptStruct *const  TraitType,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an existing trait to a remote peer.

On a client the trait can only be send from a current connection's owned actor, i.e. a pawn or a player controller.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to send. Must not be a nullptr.
PeerRoleThe peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly.
bReliableShould a reliable channel be used for the transaction.
Returns
The outcome of the operation.

◆ SetFlag()

template<EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::SetFlag ( const EFlagmarkBit  Flag,
const bool  bState = true 
)
inline

Set a flag for the subjective.

Parameters
FlagThe flag to set. Must not be a system-level one.
bStateThe state of the flag to set.
Returns
The previous state of the flag.

◆ SetFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::SetFlagmark ( const EFlagmark  InFlagmark)
inline

Set the current flagmark for the subjective.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to set.
Returns
The previous flagmark value.

◆ SetTraitmarkPass()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > ISolidSubjective::SetTraitmarkPass ( const FTraitmark InTraitmarkPermit)
inline

◆ SetTraitmarkPermit()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > ISolidSubjective::SetTraitmarkPermit ( const FTraitmark InTraitmarkPermit)
inline

Set the server-side list of traits allowed to be received from clients.

Can only be set for a server-side subjective version.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitmarkPermitThe new traitmark to be used as a whitelist.
Returns
The status of the operation.

◆ ToggleFlag()

template<EParadigm Paradigm = EParadigm::Default>
auto ISolidSubjective::ToggleFlag ( const EFlagmarkBit  Flag)
inline

Toggle a flag for the subjective.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagThe flag to toggle. Must not be a system-level one.
Returns
The new state of the flag.

Friends And Related Function Documentation

◆ ISubjective

friend class ISubjective
friend

The documentation for this class was generated from the following file: