Apparatus Version 1.23
ECS data-oriented workflow for Unreal Engine.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges > Struct Template Reference

The main entity in the mechanism, consisting of traits. More...

#include <CommonSubjectHandle.h>

Inheritance diagram for TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >:
Inheritance graph
[legend]
Collaboration diagram for TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >:
Collaboration graph
[legend]

Public Types

using Super = FCommonSubjectHandle
 The base handle type.
 
template<EParadigm Paradigm>
using TTraitVoidPtrResultSecurity = typename std::enable_if< bAllowDirectTraitAccess||IsUnsafe(Paradigm), bool >::type
 The type of a trait void pointer returned by the methods.
 
template<EParadigm Paradigm>
using TTraitVoidPtrResult = typename std::conditional< AllowsChanges, void *, const void * >::type
 The type of a trait void pointer returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitPtrResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess||IsUnsafe(Paradigm)) &&IsTraitType< std::remove_cv_t< T > >(), bool >::type
 Assess the availability of a trait pointer result.
 
template<EParadigm Paradigm, typename T >
using TTraitPtrResult = typename std::conditional< AllowsChanges, std::add_pointer_t< T >, std::add_pointer_t< std::add_const_t< T > > >::type
 The type of a trait pointer returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitRefResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess||IsUnsafe(Paradigm)) &&IsTraitType< std::remove_cv_t< T > >(), bool >::type
 Check the type of a trait reference returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitRefResult = typename std::conditional< bAllowChanges, std::add_lvalue_reference_t< T >, std::add_lvalue_reference_t< std::add_const_t< T > > >::type
 The type of a trait reference returned by the methods.
 
template<class D >
using TDetailPtrResultSecurity = typename std::enable_if< IsDetailClass< std::remove_cv_t< D > >(), bool >::type
 Check the class of a detail.
 
template<class D >
using TDetailPtrResult = typename std::conditional< bAllowChanges, std::add_pointer_t< D >, std::add_pointer_t< std::add_const_t< D > > >::type
 The type of a detail pointer returned by the methods.
 
- Public Types inherited from FCommonSubjectHandle
typedef FSubjectInfo::MechanismIdType MechanismIdType
 The type of the unique mechanism identifier.
 
typedef FSubjectInfo::IdType IdType
 The type of the unique subject identifier.
 
typedef FSubjectInfo::GenerationType GenerationType
 The type of the subject generation counter.
 
using NetworkIdType = FSubjectNetworkState::IdType
 The type of the network identifier.
 

Public Member Functions

TSubjectHandleoperator= (TYPE_OF_NULLPTR)
 Clear the subject handle, essentially making it invalid.
 
A Pointer-Like Interface
auto operator-> () const
 Use the handle as a pointer.
 
auto & operator* () const
 Dereference itself.
 
Validity
bool operator== (TYPE_OF_NULLPTR) const
 Check if the subject handle is invalid and is pointing to a non-existent subject.
 
bool operator!= (TYPE_OF_NULLPTR) const
 Check if the subject handle is valid and is pointing to an existent subject.
 
Context
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetMechanism (AMechanism *const Mechanism)
 Set the mechanism of the subjective.
 
Despawning
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesDespawn () const
 Destroy the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesDespawnDeferred (const bool bHard=true) const
 Destroy the subject.
 
Flagmark
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmarkSetFlagmark (const EFlagmark Flagmark) const
 Set the flagmark of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||IsUnsafe(Paradigm), EApparatusStatus >::type SetFlagmark_Status (const EFlagmark Flagmark) const
 Set the flagmark of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmarkSetFlagmarkMasked (const EFlagmark Flagmark, const EFlagmark Mask) const
 Set the flagmark of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type SetFlagmarkMasked_Status (const EFlagmark Flagmark, const EFlagmark Mask) const
 Set the flagmark of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, boolSetFlag (const EFlagmarkBit Flag, const bool bState=true) const
 Set a single flag for the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type SetFlag_Status (const EFlagmarkBit Flag, const bool bState=true) const
 Set a single flag for the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmarkAddToFlagmark (const EFlagmark Flagmark) const
 Add flags to the flagmark of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, boolToggleFlag (const EFlagmarkBit Flag) const
 Toggle a single flag for the subject.
 
Equality
bool operator== (const FCommonSubjectHandle &InSubjectHandle) const
 Check if the subject handle points to the same subject as the other one.
 
bool operator!= (const FCommonSubjectHandle &InSubjectHandle) const
 Check if the subject handle points to a different subject than the other one.
 
Traits Data Access
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > GetTraitPtr (UScriptStruct *const TraitType) const
 Get a pointer to a trait of the subject of a certain type.
 
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtr () const
 Get a pointer to a trait of a certain type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtr () const
 Get a pointer to a trait of a certain type.
 
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRef () const
 Get a trait from a subject by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRef () const
 Get a trait from a subject by its type.
 
Traits Setting
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTrait (UScriptStruct *const TraitType, const void *const TraitData) const
 Set a trait of the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTrait (const T *const TraitData) const
 Set a trait of the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTrait (const FTraitRecord &TraitRecord) const
 Set a trait of the subject to a trait record.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsTraitType< T >(), bool >::type = true>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTrait (const T &Trait) const
 Set a trait of the subject.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsFlagmarkType< T >(), bool >::type = true>
auto SetTrait (const T &Flagmark) const
 Add a flagmark to the subject.
 
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTraits (const TArray< UScriptStruct *, A1 > &TraitsTypes, const TArray< const T *, A2 > &TraitsData, const bool bLeaveRedundant=true) const
 Set multiple subject traits equal to the supplied list.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesSetTraits (const FSubjectRecord &SubjectRecord, const bool bLeaveRedundant=true) const
 Set multiple subject traits from a subject record.
 
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void>
TOutcome< Paradigm > OverwriteTraits (const TArray< UScriptStruct *, A1 > &TraitsTypes, const TArray< const T *, A2 > &TraitsData) const
 Overwrite existing subject traits from the array.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesOverwriteTraits (const FSubjectRecord &SubjectRecord) const
 Overwrite existing traits from a subject record.
 
template<EParadigm Paradigm = EParadigm::Default, bool AnyDirectAccess = false>
TOutcome< Paradigm > CopyTraitsTo (const TSubjectHandle< true, AnyDirectAccess, true > &DestinationSubjectHandle) const
 Copy all of the traits of the subject to some other subject.
 
Trait Obtainment
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > ObtainTrait (UScriptStruct *const TraitType, T *const OutTraitData, const bool bTraitDataInitialized=true) const
 Obtain a trait from the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > ObtainTrait (UScriptStruct *const TraitType) const
 Obtain a trait for the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > ObtainTrait (T &OutTrait, const bool bTraitDataInitialized=true) const
 Obtain a trait from the subject.
 
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TObtainTrait () const
 Obtain a trait copy from the subject.
 
template<typename T >
auto ObtainTrait () const
 Obtain a trait copy from the subject.
 
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > ObtainTraitPtr (UScriptStruct *const TraitType) const
 Obtain a trait data pointer from the subject by its type.
 
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > ObtainTraitPtr () const
 Obtain a trait pointer from the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto ObtainTraitPtr () const
 Obtain a trait pointer from the subject.
 
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > ObtainTraitRef () const
 Obtain a trait reference from the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > ObtainTraitRef () const
 Obtain a trait reference from the subject.
 
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > ObtainTraitDeferred (UScriptStruct *const TraitType) const
 Obtain a trait for the subject by its type.
 
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TObtainTraitDeferred () const
 Obtain a trait copy from the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto ObtainTraitDeferred () const
 Obtain a trait copy from the subject.
 
Deferred Trait Settings
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > SetTraitDeferred (UScriptStruct *const TraitType, const void *const TraitData) const
 Set a trait of the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > SetTraitDeferred (const T *Trait) const
 Set a trait of the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > SetTraitDeferred (const T &Trait) const
 Set a trait of the subject by its type.
 
Trait Removal
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > RemoveTrait (UScriptStruct *const TraitType) const
 Remove a trait from the subject.
 
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > RemoveTrait () const
 Remove a trait from the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto RemoveTrait () const
 Remove a trait from the subject.
 
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > RemoveAllTraits () const
 Remove all of the traits from the subject (if any).
 
Deferred Trait Removal
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0>
TOutcome< Paradigm > RemoveTraitDeferred (UScriptStruct *const TraitType) const
 Remove a trait from the subject.
 
template<EParadigm Paradigm, typename T , more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0>
TOutcome< Paradigm > RemoveTraitDeferred () const
 Remove a trait from the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveTraitDeferred () const
 Remove a trait from the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesRemoveAllTraitsDeferred (const bool bForceEnqueue=false) const
 Remove all of the traits from the subject.
 
Details Getting
TDetailPtrResult< UDetailGetDetail (TSubclassOf< UDetail > DetailClass) const
 Get a detail of a certain class.
 
template<class D >
TDetailPtrResult< DGetDetail () const
 Get a detail of a certain class.
 
Networking
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesBringOnline () const
 Make the subject networked.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > BringOnline (const TRange< NetworkIdType > &IdRange) const
 Make the subject networked while using a custom network identifiers range.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesSetConnectionPermit (UNetConnection *const Connection) const
 Set the server-side connection to a client from which it is allowed to push traits to this subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesSetTraitmarkPermit (const FTraitmark &InTraitmarkPermit) const
 Set the server-side list of traits allowed to be pushed from clients.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChangesSetTraitmarkPass (const FTraitmark &InTraitmarkPermit) const
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesPushTrait (UScriptStruct *const TraitType, const void *const TraitData, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesPushTrait (UScriptStruct *const TraitType, const void *const TraitData, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesPushTrait (const T &Trait, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChangesPushTrait (const T &Trait, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcome< Paradigm > PushTrait (const T &Trait, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an additional trait to the remote version of the subject.
 
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 the remote version of the subject.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > PushTrait (UScriptStruct *const TraitType, const bool bReliable, const EPeerRole PeerRole=EPeerRole::Auto) const
 Send an existing trait to the remote version of the subject.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an existing trait to the remote version of the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const
 Send an existing trait to the remote version of the subject.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto PushTrait (const bool bReliable, const EPeerRole PeerRole=EPeerRole::Auto) const
 Send an existing trait to the remote version of the subject.
 
Initialization
 TSubjectHandle ()
 Construct a new invalid subject handle.
 
 TSubjectHandle (const TSubjectHandle &InHandle)
 Copy-construct a new subject handle.
 
- Public Member Functions inherited from FCommonSubjectHandle
 FCommonSubjectHandle ()
 Initialize an invalid (null) handle.
 
 FCommonSubjectHandle (const FCommonSubjectHandle &InSubjectHandle)
 Initialize as a copy of an another subject handle.
 
auto operator-> () const
 Use the handle as a pointer.
 
auto & operator* () const
 Dereference itself.
 
IdType GetId () const
 Get the unique identifier of the subject.
 
GenerationType GetGeneration () const
 Get the current generation of the subject.
 
auto GetMechanismId () const
 Get the identifier of the mechanism the subject is part of.
 
auto GetPlace () const
 Get the place index of the subject.
 
bool IsSolid () const
 Check if the subject is currently solid.
 
void ResetHandle ()
 Reset the subject handle.
 
FCommonSubjectHandleoperator= (TYPE_OF_NULLPTR)
 Clear the subject handle, essentially making it invalid.
 
uint32 CalcHash () const
 Calculate the hash-sum value for the handle.
 
AMechanismGetMechanism () const
 Get the mechanism the subject is part of.
 
const FFingerprintGetFingerprint () const
 Get the current fingerprint of the subject.
 
bool Matches (const FFilter &InFilter) const
 Check if the subject matches a certain filter.
 
bool IsValid () const
 Check if the subject handle is valid and is pointing to an existent subject.
 
bool operator== (TYPE_OF_NULLPTR) const
 Check if the subject handle is invalid and is pointing to a non-existent subject.
 
bool operator!= (TYPE_OF_NULLPTR) const
 Check if the subject handle is valid and is pointing to an existent subject.
 
 operator bool () const
 Check if the subject handle is valid and is pointing to an existent subject.
 
bool EqualsRaw (const FCommonSubjectHandle &InSubject) const
 Check if two subject handles are equal byte-wise.
 
bool Equals (const FCommonSubjectHandle &InSubjectHandle) const
 Check if the subject handle points to the same subject as the other one.
 
bool operator== (const FCommonSubjectHandle &InSubjectHandle) const
 Check if the subject handle points to the same subject as the other one.
 
bool operator!= (const FCommonSubjectHandle &InSubjectHandle) const
 Check if the subject handles point to different subjects.
 
EFlagmark GetFlagmark () const
 Get the flagmark of the subject.
 
bool HasFlag (const EFlagmarkBit Flag) const
 Get the state of a certain flag of the subject.
 
bool HasTrait (UScriptStruct *const TraitType) const
 Check if the subject has a certain trait.
 
template<typename T >
std::enable_if< IsTraitType< T >(), bool >::type HasTrait () const
 Check if the subject has a certain trait.
 
bool HasDetail (TSubclassOf< UDetail > DetailClass) const
 Check if the subject has a certain detail.
 
template<typename D >
std::enable_if< IsDetailClass< D >(), bool >::type HasDetail () const
 Check if the subject has a certain detail.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait from the subject by its type.
 
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcome< Paradigm > GetTrait (T &OutTrait, const bool bTraitDataInitialized=true) const
 Get a trait from a subject by its type.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TGetTrait () const
 Get a trait copy from the subject by its type.
 
template<typename T , EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, TGetTrait () const
 Get a trait copy from the subject by its type.
 
bool IsOnline () const
 Check if the subject currently networked.
 
NetworkIdType GetNetworkId () const
 Get a unique network identifier of a subject (if any).
 
bool IsInNetworkMode (const ENetMode Mode) const
 Check if the subject is of a certain network mode.
 
bool IsServerSide () const
 Check if this is a server-side version of the subject.
 
bool IsClientSide () const
 Check if this is a client-side version of the subject.
 
UNetConnection * GetConnectionPermit () const
 Get the server-side connection that is allowed to push to the server's version of the subject.
 
const FTraitmarkGetTraitmarkPermit () const
 Get the server-side list of traits allowed to be received from clients.
 
const FTraitmarkGetTraitmarkPass () const
 
FCommonSubjectHandleoperator= (const FCommonSubjectHandle &InSubjectHandle)
 Assign to be a copy of an another subject handle.
 

Static Public Member Functions

static constexpr bool IsHandleSolid ()
 Check if the handle itself a solid one.
 

Static Public Attributes

static constexpr bool AllowsChanges = bAllowChanges
 Is the target subject mutable (non-constant)?
 
static constexpr bool AllowsDirectTraitAccess = bAllowDirectTraitAccess
 Is the direct (trait) data access possible?
 
static constexpr bool AllowsStructuralChanges = bAllowStructuralChanges
 Is changing of the subject's structure (adding/removing traits) allowed.
 
- Static Public Attributes inherited from FCommonSubjectHandle
static constexpr IdType InvalidId = FSubjectInfo::InvalidId
 Invalid subject identifier.
 
static constexpr IdType FirstPlace = FSubjectInfo::FirstPlace
 A first valid subject identifier.
 
static constexpr IdType LastPlace = FSubjectInfo::LastPlace
 The maximum valid subject identifier.
 
static constexpr GenerationType FirstGeneration = FSubjectInfo::FirstGeneration
 The first valid generation.
 
static constexpr GenerationType LastGeneration = FSubjectInfo::LastGeneration
 The maximum valid generation.
 
static const FCommonSubjectHandle Invalid
 An invalid common subject handle constant.
 

Protected Member Functions

 TSubjectHandle (const int32 InId, const GenerationType InGeneration)
 
 TSubjectHandle (const MechanismIdType InMechanismId, const IdType InPlace, const GenerationType InGeneration)
 
 TSubjectHandle (const FCommonSubjectHandle &InHandle)
 
- Protected Member Functions inherited from FCommonSubjectHandle
FSubjectInfoFindInfo () const
 Get the valid subject info record (if any).
 
FSubjectInfoGetInfo () const
 Get the subject info record associated with it.
 
FFingerprintGetFingerprintRef () const
 Get the current fingerprint's reference of the subject.
 
template<EParadigm Paradigm = EParadigm::DefaultInternal>
TOutcome< Paradigm, boolMarkBooted () const
 
UChunkGetChunk () const
 Get the current chunk of the subject.
 
ISubjectiveGetSubjective () const
 Get a subjective this handle is associated with (if any).
 
UDetailGetDetail (TSubclassOf< UDetail > DetailClass) const
 Get a detail of a certain class.
 
template<class D >
DGetDetail () const
 Get a detail of a certain class.
 
 FCommonSubjectHandle (const IdType InId, const GenerationType InGeneration)
 Initialize a common handle with explicit id and generation specifications.
 
 FCommonSubjectHandle (const MechanismIdType InMechanismId, const IdType InPlace, const GenerationType InGeneration)
 Initialize a common handle with explicit mechanism, placement and generation specifications.
 

Friends

template<typename ChunkItT , typename BeltItT , EParadigm Paradigm>
struct TChain
 
template<typename SubjectHandleT >
struct TChunkIt
 
template<typename SubjectHandleT >
struct TBeltIt
 
struct FSubjectInfo
 
struct FSubjectNetworkState
 
struct FSolidSubjectHandle
 
struct FConstSubjectHandle
 
struct FChunkSlot
 
struct FSubjectRecord
 
class UChunk
 
class AMechanism
 
class UMachine
 
class ISubjective
 
class UNetworkBearerComponent
 
class ASubjectiveActor
 
class USubjectiveActorComponent
 

Additional Inherited Members

- Protected Attributes inherited from FCommonSubjectHandle
int32 Id = InvalidId
 A unique identifier of the subject within the mechanism.
 
uint32 Generation = FirstGeneration
 A unique generation of the subject.
 

Detailed Description

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
struct TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >

The main entity in the mechanism, consisting of traits.

This is a user-level handle structure, something like a pointer. The size of this structure is exactly 64-bit and may efficiently be passed by value to the methods and functions.

The base version is the most generic and unsafe one, that allows all sorts of access and functionality.

Template Parameters
bAllowChangesIs the referenced subject mutable (non-constant)?
bAllowDirectTraitAccessShould direct access provided to the trait data.
bAllowStructuralChangesShould structural changes (adding/removing traits) be allowed.

Member Typedef Documentation

◆ Super

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::Super = FCommonSubjectHandle

The base handle type.

◆ TDetailPtrResult

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<class D >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TDetailPtrResult = typename std::conditional<bAllowChanges, std::add_pointer_t<D>, std::add_pointer_t<std::add_const_t<D> >>::type

The type of a detail pointer returned by the methods.

Template Parameters
DThe class of the detail. Must be a UDetail subclass.

◆ TDetailPtrResultSecurity

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<class D >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TDetailPtrResultSecurity = typename std::enable_if<IsDetailClass<std::remove_cv_t<D> >(), bool>::type

Check the class of a detail.

Template Parameters
DThe class of the detail. Must be a UDetail subclass.

◆ TTraitPtrResult

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitPtrResult = typename std::conditional<AllowsChanges, std::add_pointer_t<T>, std::add_pointer_t<std::add_const_t<T> >>::type

The type of a trait pointer returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.
TThe type of the trait.

◆ TTraitPtrResultSecurity

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitPtrResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess || IsUnsafe(Paradigm)) && IsTraitType<std::remove_cv_t<T> >(), bool>::type

Assess the availability of a trait pointer result.

Template Parameters
ParadigmThe access safety paradigm.
TThe type of the trait.

◆ TTraitRefResult

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitRefResult = typename std::conditional<bAllowChanges, std::add_lvalue_reference_t<T>, std::add_lvalue_reference_t<std::add_const_t<T> >>::type

The type of a trait reference returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.
TThe type of the trait.

◆ TTraitRefResultSecurity

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T >
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitRefResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess || IsUnsafe(Paradigm)) && IsTraitType<std::remove_cv_t<T> >(), bool>::type

Check the type of a trait reference returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.
TThe type of the trait.

◆ TTraitVoidPtrResult

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm>
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitVoidPtrResult = typename std::conditional<AllowsChanges, void*, const void*>::type

The type of a trait void pointer returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.

◆ TTraitVoidPtrResultSecurity

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm>
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitVoidPtrResultSecurity = typename std::enable_if<bAllowDirectTraitAccess || IsUnsafe(Paradigm), bool>::type

The type of a trait void pointer returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.

Constructor & Destructor Documentation

◆ TSubjectHandle() [1/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TSubjectHandle ( const int32  InId,
const GenerationType  InGeneration 
)
inlineprotected

◆ TSubjectHandle() [2/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TSubjectHandle ( const MechanismIdType  InMechanismId,
const IdType  InPlace,
const GenerationType  InGeneration 
)
inlineprotected

◆ TSubjectHandle() [3/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TSubjectHandle ( const FCommonSubjectHandle InHandle)
inlineprotected

◆ TSubjectHandle() [4/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TSubjectHandle ( )
inline

Construct a new invalid subject handle.

◆ TSubjectHandle() [5/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TSubjectHandle ( const TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges > &  InHandle)
inline

Copy-construct a new subject handle.

Member Function Documentation

◆ AddToFlagmark()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::AddToFlagmark ( const EFlagmark  Flagmark) const
inline

Add flags to the flagmark of the subject.

This is a user-level method that prevents adding the system-level flags.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
FlagmarkThe flagmark to set.
Returns
The previous flagmark of the subject.

◆ BringOnline() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::BringOnline ( ) const
inline

Make the subject networked.

Server-only method.

This assigns a new, unique, cross-peer identifier to the subject and spawns an empty instance of it on the client(s).

If the subject is already online, nothing is performed.

Returns
The outcome of the operation.
EApparatusStatus::Noop if the subject is already online.
See also
IsOnline() GetNetworkId()

◆ BringOnline() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::BringOnline ( const TRange< NetworkIdType > &  IdRange) const
inline

Make the subject networked while using a custom network identifiers range.

Server-only method.

This assigns a new, unique, cross-peer identifier to the subject and spawns an empty instance of it on the client(s).

If the subject is already online, nothing is performed.

Parameters
IdRangeThe range of identifiers to allocate within.
Returns
The outcome of the operation.
EApparatusStatus::Noop if the subject is already online.
See also
IsOnline() GetNetworkId()

◆ CopyTraitsTo()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, bool AnyDirectAccess = false>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::CopyTraitsTo ( const TSubjectHandle< true, AnyDirectAccess, true > &  DestinationSubjectHandle) const
inline

Copy all of the traits of the subject to some other subject.

The existing traits of the destination subject are not removed but the new ones are added and/or override the existing matching ones.

Template Parameters
ParadigmThe paradigm to work under.
AnyDirectAccessBasically, any trait access is supported by the method.
Parameters
DestinationSubjectHandleThe destination subject to copy to. Must denote a valid subject.
Returns
The outcome of the operation.

◆ Despawn()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::Despawn ( ) const
inline

Destroy the subject.

Template Parameters
ParadigmThe paradigm to work under.
Returns
The status of the operation.
EApparatusStatus::Noop If the subject handle is already invalid/despawned.

◆ DespawnDeferred()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::DespawnDeferred ( const bool  bHard = true) const
inline

Destroy the subject.

Deferred version.

The actual entity destruction is deferred until the deferreds are applied either automatically or manually.

Template Parameters
ParadigmThe security paradigm to work under.
Parameters
bHardShould the hard version of the operation be performed, i.e. the entity gets marked and is skipped during the iteratings from now on.
Returns
The outcome of the operation.
EApparatusStatus::Noop If the subject handle is already invalid/despawned.

◆ GetDetail() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<class D >
TDetailPtrResult< D > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetDetail ( ) const
inline

Get a detail of a certain class.

Templated version.

Template Parameters
DThe class of the detail to get.
Returns
A pointer to the detail of the designated class.
nullptr If there is no such detail.

◆ GetDetail() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TDetailPtrResult< UDetail > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetDetail ( TSubclassOf< UDetail DetailClass) const
inline

Get a detail of a certain class.

Parameters
DetailClassThe class of the detail to get.
Returns
A pointer to the detail of the designated class.
nullptr If there is no such detail.

◆ GetTraitPtr() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetTraitPtr ( ) const
inline

Get a pointer to a trait of a certain type.

Static type paradigm version.

The operation is secure only for subject handles allowing direct access to the traits data.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to get.
Returns
A pointer to the trait data.
nullptr If there is no such trait in the subject.

◆ GetTraitPtr() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetTraitPtr ( ) const
inline

Get a pointer to a trait of a certain type.

Statically typed default paradigm version.

The operation is secure only for subject handles allowing direct access to the traits data.

Template Parameters
TThe type of the trait to get.
Returns
A pointer to the trait data.
nullptr If there is no such trait in the subject.

◆ GetTraitPtr() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetTraitPtr ( UScriptStruct *const  TraitType) const
inline

Get a pointer to a trait of the subject of a certain type.

Dynamic type version.

The operation is secure only for subject handles allowing direct access to the traits data.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
TraitTypeThe type of the trait to get. May be a nullptr and a nullptr is returned in this case.
Returns
A pointer to the trait data.
nullptr If there is no such trait in the subject or TraitType is a nullptr.

◆ GetTraitRef() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetTraitRef ( ) const
inline

Get a trait from a subject by its type.

Static type paradigm version.

The operation is secure only for subject handles allowing direct access to the traits data.

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

◆ GetTraitRef() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::GetTraitRef ( ) const
inline

Get a trait from a subject by its type.

Static type version.

The operation is secure only for subject handles allowing direct access to the traits data.

Template Parameters
TThe type of the trait to get.
Returns
A reference to the trait data.

◆ IsHandleSolid()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
static constexpr bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::IsHandleSolid ( )
inlinestaticconstexpr

Check if the handle itself a solid one.

◆ ObtainTrait() [1/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, T > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTrait ( ) const
inline

Obtain a trait copy from the subject.

Statically typed paradigm version.

If the trait is not currently within the subject, it gets created anew and the default value is returned.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to obtain.
Returns
A copy of the trait.

◆ ObtainTrait() [2/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T >
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTrait ( ) const
inline

Obtain a trait copy from the subject.

Statically typed version.

If the trait is not currently within the subject, it gets created anew and the default value is returned.

Template Parameters
TThe type of the trait to obtain.
Returns
The copy of the trait.

◆ ObtainTrait() [3/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTrait ( T OutTrait,
const bool  bTraitDataInitialized = true 
) const
inline

Obtain a trait from the subject.

Templated outputting version.

If the trait is not currently within the subject, it gets created anew and the default value gets copied to the receiver.

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

◆ ObtainTrait() [4/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTrait ( UScriptStruct *const  TraitType) const
inline

Obtain a trait for the subject by its type.

If the trait is not currently within the subject, it gets created anew.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to obtain.
Returns
The outcome of the operation.

◆ ObtainTrait() [5/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTrait ( UScriptStruct *const  TraitType,
T *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Obtain a trait from the subject by its type.

Outputting version.

If the trait is not currently within the subject, it gets created anew and the default value gets copied to the receiver.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the data to receive the trait. Must match the TraitType.
Parameters
TraitTypeThe type of the trait to obtain. Must match that of the T parameter.
OutTraitDataThe trait data receiver.
bTraitDataInitializedIs the OutTraitData buffer actually initialized?
Returns
The status of the operation.

◆ ObtainTraitDeferred() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, T > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitDeferred ( ) const
inline

Obtain a trait copy from the subject.

Templated paradigm deferred version.

If the trait is currently missing in the subject, its default value is returned.

The actual change (if any) is deferred until the deferreds are applied either automatically or manually.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to obtain.
ParadigmThe security paradigm to use.
Returns
A copy of the trait.

◆ ObtainTraitDeferred() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitDeferred ( ) const
inline

Obtain a trait copy from the subject.

Templated deferred version.

If the trait is currently missing in the subject, its default value is returned.

The actual change (if any) is deferred until the deferreds are applied either automatically or manually.

Template Parameters
TThe type of the trait to obtain.
ParadigmThe paradigm to work under.
Returns
A copy of the trait.

◆ ObtainTraitDeferred() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitDeferred ( UScriptStruct *const  TraitType) const
inline

Obtain a trait for the subject by its type.

Dynamically-typed deferred version.

The actual change (if any) is deferred until the deferreds are applied either automatically or manually.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
TraitTypeThe type of the trait to obtain.
Returns
The outcome of the operation.

◆ ObtainTraitPtr() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitPtr ( ) const
inline

Obtain a trait pointer from the subject.

Statically typed pointer paradigm version.

If the trait is not currently within the subject, it gets created anew and a pointer to it is returned.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to obtain.
Returns
A pointer to the trait.

◆ ObtainTraitPtr() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitPtr ( ) const
inline

Obtain a trait pointer from the subject.

Statically typed pointer default paradigm version.

If the trait is not currently within the subject, it gets created anew and a pointer to it is returned.

Template Parameters
TThe type of the trait to obtain.
ParadigmThe security paradigm to use.
Returns
The pointer to the trait of the specified type.

◆ ObtainTraitPtr() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitPtr ( UScriptStruct *const  TraitType) const
inline

Obtain a trait data pointer from the subject by its type.

Pointer version.

If the trait is not currently within the subject, it gets created anew and returned to the receiver.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to obtain. May be a nullptr and will return a nullptr in this case.
Returns
The obtained trait data pointer.

◆ ObtainTraitRef() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitRef ( ) const
inline

Obtain a trait reference from the subject.

Templated paradigm reference version.

If the trait is not currently within the subject, it gets created anew and its reference is returned.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to obtain.
Returns
A reference to the trait.

◆ ObtainTraitRef() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ObtainTraitRef ( ) const
inline

Obtain a trait reference from the subject.

Templated reference default paradigm version.

If the trait is not currently within the subject, it gets created anew and its reference is returned.

Template Parameters
TThe type of the trait to obtain.
ParadigmThe security paradigm to use.
Returns
A reference to the trait.

◆ operator!=() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator!= ( const FCommonSubjectHandle InSubjectHandle) const
inline

Check if the subject handle points to a different subject than the other one.

Two invalid subject handles are considered to be the same and this operator would return false.

Parameters
InSubjectHandleA subject handle to compare with.
Returns
true if the handles point to different subjects or one is invalid.
false if the handles point to the same subject or both are invalid.
See also
Equals()

◆ operator!=() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator!= ( TYPE_OF_NULLPTR  ) const
inline

Check if the subject handle is valid and is pointing to an existent subject.

Returns
Returns true if the subject is valid. Otherwise, false is returned.

◆ operator*()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
auto & TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator* ( ) const
inline

Dereference itself.

This interface is needed for compatiblity

◆ operator->()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator-> ( ) const
inline

Use the handle as a pointer.

This interface is needed for compatiblity

◆ operator=()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
TSubjectHandle & TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator= ( TYPE_OF_NULLPTR  )
inline

Clear the subject handle, essentially making it invalid.

◆ operator==() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator== ( const FCommonSubjectHandle InSubjectHandle) const
inline

Check if the subject handle points to the same subject as the other one.

If both handles are invalid, returns true.

Parameters
InSubjectHandleA subject handle to compare with.
Returns
true if the handles point to the same subject or are both invalid.
false if the handles point to different subjects or one is invalid.
See also
Equals()

◆ operator==() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::operator== ( TYPE_OF_NULLPTR  ) const
inline

Check if the subject handle is invalid and is pointing to a non-existent subject.

Returns
Returns true if the subject is invalid. Otherwise, false is returned.

◆ OverwriteTraits() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::OverwriteTraits ( const FSubjectRecord SubjectRecord) const
inline

Overwrite existing traits from a subject record.

Only the existing traits get overwritten.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
SubjectRecordThe subject traits pack to overwrite from.
Returns
The outcome of the operation.

◆ OverwriteTraits() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::OverwriteTraits ( const TArray< UScriptStruct *, A1 > &  TraitsTypes,
const TArray< const T *, A2 > &  TraitsData 
) const
inline

Overwrite existing subject traits from the array.

Template Parameters
ParadigmThe paradigm to work under.
A1The allocator type of the types array.
A2The allocator type of the traits data array.
TThe type of the traits data elements. May be a void.
Parameters
TraitsTypesThe types of traits to overwrite.
TraitsDataThe corresponding traits data to overwrite with.
Returns
The status of the operation.

◆ PushTrait() [1/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( const bool  bReliable,
const EPeerRole  PeerRole = EPeerRole::Auto 
) const
inline

Send an existing trait to the remote version of the subject.

Statically typed default paradigm immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any).

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Warning
The subject is not brought online automatically in this method, since it's working on an immutable version of the subject.
Template Parameters
TThe type of the trait to send.
ParadigmThe safety paradigm to invoke under.
Parameters
bReliableShould a reliable channel be used for the transaction.
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.
Returns
The outcome of the operation.

◆ PushTrait() [2/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an existing trait to the remote version of the subject.

Statically typed immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any).

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Warning
The subject is not brought online automatically in this method, since it's working on an immutable version of the subject.
Template Parameters
TThe type of the trait to send.
ParadigmThe safety paradigm to invoke under.
Parameters
[in]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.
[in]bReliableShould a reliable channel be used for the transaction.
Returns
The outcome of the operation.

◆ PushTrait() [3/10]

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

Send an existing trait to the remote version of the subject.

Statically typed default paradigm immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any).

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Warning
The subject is not brought online automatically in this method, since it's working on an immutable version of the subject.
Template Parameters
TThe type of the trait to send.
ParadigmThe safety paradigm to invoke 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 the transaction.
Returns
The outcome of the operation.

◆ PushTrait() [4/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( const T Trait,
const bool  bSetForLocal = false,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to the remote version of the subject.

Templated version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to send.
Parameters
[in]TraitThe trait to push.
[in]bSetForLocalShould the trait be also set on the local version of the subject.
[in]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 should provide one explicitly sometimes.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.
Deprecated:
since 1.23 The bSetForLocal argument is deprecated now. Set the trait explicitly or use the version of the method without the argument, please.

◆ PushTrait() [5/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( const T Trait,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to the remote version of the subject.

Templated version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to send.
Parameters
[in]TraitThe trait to push.
[in]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 should provide one explicitly sometimes.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.

◆ PushTrait() [6/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( const T Trait,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to the remote version of the subject.

Statically typed immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to send.
Parameters
[in]TraitThe trait to push.
[in]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 should provide one explicitly sometimes.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.

◆ PushTrait() [7/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( UScriptStruct *const  TraitType,
const bool  bReliable,
const EPeerRole  PeerRole = EPeerRole::Auto 
) const
inline

Send an existing trait to the remote version of the subject.

Dynamically typed immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any).

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Warning
The subject is not brought online automatically in this method, since it's working on an immutable version of the subject.
Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]TraitTypeThe type of the trait to send. The type must already exist within the subject or be a nullptr.
[in]bReliableShould the trait be sent using a reliable channel.
[in]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.
Returns
The outcome of the operation.

◆ PushTrait() [8/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( UScriptStruct *const  TraitType,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an existing trait to the remote version of the subject.

Dynamically typed immutable version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any).

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Warning
The subject is not brought online automatically in this method, since it's working on an immutable version of the subject.
Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]TraitTypeThe type of the trait to send. The type must already exist within the subject or be a nullptr.
[in]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.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.

◆ PushTrait() [9/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( UScriptStruct *const  TraitType,
const void *const  TraitData,
const bool  bSetForLocal = false,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to the remote version of the subject.

Templated version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]TraitTypeThe type of the trait to send.
[in]TraitDataThe data of the trait to send.
[in]bSetForLocalShould the trait also be set for the local version of the subject.
[in]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.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.
Deprecated:
since 1.23 The bSetForLocal argument is deprecated now. Set the trait explicitly or use the version of the method without the argument, please.

◆ PushTrait() [10/10]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::PushTrait ( UScriptStruct *const  TraitType,
const void *const  TraitData,
const EPeerRole  PeerRole = EPeerRole::Auto,
const bool  bReliable = true 
) const
inline

Send an additional trait to the remote version of the subject.

Templated version.

The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.

When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.

When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.

Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]TraitTypeThe type of the trait to send.
[in]TraitDataThe data of the trait to send.
[in]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.
[in]bReliableShould the trait be sent using a reliable channel.
Returns
The outcome of the operation.

◆ RemoveAllTraits()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveAllTraits ( ) const
inline

Remove all of the traits from the subject (if any).

If there are no traits in the subject, nothing is performed and EApparatusStatus::Noop is returned.

Template Parameters
ParadigmThe paradigm to work under.
Returns
The outcome of the operation.
EApparatusStatus::Noop if there are no traits currently within the subject.

◆ RemoveAllTraitsDeferred()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveAllTraitsDeferred ( const bool  bForceEnqueue = false) const
inline

Remove all of the traits from the subject.

Deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
bForceEnqueueShould the traits be enqueued to be removed even if there are none currently.
Returns
The outcome of the operation.
EApparatusStatus::Deferred If the operation was successfully queued to be executed at a later time.

◆ RemoveTrait() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTrait ( ) const
inline

Remove a trait from the subject.

Templated paradigm version.

If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to remove.
Returns
The outcome of the operation.

◆ RemoveTrait() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTrait ( ) const
inline

Remove a trait from the subject.

Templated version.

If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to remove.
Returns
The outcome of the operation.

◆ RemoveTrait() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTrait ( UScriptStruct *const  TraitType) const
inline

Remove a trait from the subject.

Dynamic type version.

If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
TraitTypeThe type of the trait to remove. If is a nullptr, nothing is performed.
Returns
The outcome of the operation.
EApparatusStatus::Noop if there was no such trait in the first place.

◆ RemoveTraitDeferred() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm, typename T , more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTraitDeferred ( ) const
inline

Remove a trait from the subject.

Statically typed paradigm deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

If at the time of performing the operation, the trait is not within the subject, nothing gets performed.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to remove.
Returns
The outcome of the operation.

◆ RemoveTraitDeferred() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename T , EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTraitDeferred ( ) const
inline

Remove a trait from the subject.

Statically typed paradigm deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

If at the time of performing the operation, the trait is not within the subject, nothing gets performed.

Template Parameters
TThe type of the trait to remove.
ParadigmThe security paradigm to use.
Returns
The outcome of the operation.

◆ RemoveTraitDeferred() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::RemoveTraitDeferred ( UScriptStruct *const  TraitType) const
inline

Remove a trait from the subject.

Deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

If at the time of performing the operation, the trait is not within the subject, nothing gets performed.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to remove. If nullptr, nothing is performed.
Returns
The status of the operation.

◆ SetConnectionPermit()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetConnectionPermit ( UNetConnection *const  Connection) const
inline

Set the server-side connection to a client from which it is allowed to push traits to this subject.

Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]ConnectionThe connection permit to set.

◆ SetFlag()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, bool > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlag ( const EFlagmarkBit  Flag,
const bool  bState = true 
) const
inline

Set a single flag for the subject.

This is a user-level method. Setting of the system-level flags is prohibited by default.

The operation is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagThe flag to set.
bStateThe state to set to.
Returns
The previous state of the flag.

◆ SetFlag_Status()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlag_Status ( const EFlagmarkBit  Flag,
const bool  bState = true 
) const
inline

Set a single flag for the subject.

Status version.

This is a user-level method. Setting of the system-level flags is strictly prohibited.

The operation is atomic and thread-safe.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
FlagThe flag to set.
bStateThe state to set to.
Returns
The status of the operation.
Deprecated:
since 1.23. Use the SetFlag() method within a polite paradigm, please.

◆ SetFlagmark()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlagmark ( const EFlagmark  Flagmark) const
inline

Set the flagmark of the subject.

This is a user-level method that prevents changing the system-level flags by default.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagmarkThe flagmark to set. The system-level bits are silently ignored.
Returns
The previous flagmark of the subject.
See also
SetFlagmarkMasked(), GetFlagmark()

◆ SetFlagmark_Status()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||IsUnsafe(Paradigm), EApparatusStatus >::type TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlagmark_Status ( const EFlagmark  Flagmark) const
inline

Set the flagmark of the subject.

Status version.

This is a user-level method that prevents setting the system-level flags.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagmarkThe flagmark to set. The system-level bits are silently ignored.
Returns
The status of the operation.
See also
SetFlagmark(), SetFlagmarkMasked()
Deprecated:
since 1.23. Use the SetFlagmark() method within a polite paradigm, please.

◆ SetFlagmarkMasked()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlagmarkMasked ( const EFlagmark  Flagmark,
const EFlagmark  Mask 
) const
inline

Set the flagmark of the subject.

This is a user-level method that prevents setting the system-level flags.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
FlagmarkThe flagmark to set.
MaskThe mask to use.
Returns
The previous flagmark of the subject masked with the passed-in mask.

◆ SetFlagmarkMasked_Status()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetFlagmarkMasked_Status ( const EFlagmark  Flagmark,
const EFlagmark  Mask 
) const
inline

Set the flagmark of the subject.

Status version.

This is a user-level method that prevents setting the system-level flags.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe security paradigm to use.
Parameters
FlagmarkThe flagmark to set.
MaskThe mask to use.
Returns
The status of the operation.
Deprecated:
since 1.23. Use the SetFlagmarkMasked() method within a polite paradigm, please.

◆ SetMechanism()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetMechanism ( AMechanism *const  Mechanism)
inline

Set the mechanism of the subjective.

For the actor-based subjectives the new mechanism must reside within the same world.

This procedure will essentially move the traits and the details to the new mechanism's own iterables.

Template Parameters
ParadigmThe safety paradigm to use.
Parameters
MechanismThe mechanism to set to. Must not be a nullptr.
Returns
The status of the operation.

◆ SetTrait() [1/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTrait ( const FTraitRecord &  TraitRecord) const
inline

Set a trait of the subject to a trait record.

If the trait is not currently within the subject, it gets created anew and set accordingly

Template Parameters
ParadigmThe security paradigm to use.
Parameters
TraitRecordThe trait record to set to.
Returns
The status of the operation.

◆ SetTrait() [2/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsFlagmarkType< T >(), bool >::type = true>
auto TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTrait ( const T Flagmark) const
inline

Add a flagmark to the subject.

Statically typed flagmark-compatiblity version.

The flags are actually being added here.

Template Parameters
ParadigmThe security paradigm to use.
TThe flagmark type.
Parameters
FlagmarkThe flagmark to add.
Returns
The outcome of the operation.

◆ SetTrait() [3/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsTraitType< T >(), bool >::type = true>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTrait ( const T Trait) const
inline

Set a trait of the subject.

Statically typed version.

If the trait is not currently within the subject, it gets created anew and set accordingly.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to add. Must be a trait type.
Parameters
TraitThe trait to initialize with.
Returns
The outcome of the operation.

◆ SetTrait() [4/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTrait ( const T *const  TraitData) const
inline

Set a trait of the subject by its type.

Statically typed pointer version.

If the trait is not currently within the subject, it gets created anew and set accordingly

Template Parameters
ParadigmThe paradigm to work under.
Parameters
[in]TraitDataThe trait data to initialize with. May not be a nullptr.
Returns
The outcome of the operation.
See also
GetTrait()

◆ SetTrait() [5/5]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTrait ( UScriptStruct *const  TraitType,
const void *const  TraitData 
) const
inline

Set a trait of the subject by its type.

Runtime type specification version.

If the trait is not currently within the subject, it gets created anew and set accordingly

Note
This also supports passing a dynamic trait record and will cast it appropriately.
Template Parameters
ParadigmThe paradigm to work under.
Parameters
[in]TraitTypeThe type of the trait to add.
[in]TraitDataThe trait data to initialize with. May not be a nullptr, if the TraitType is set.
Returns
The outcome of the operation.
See also
GetTrait()

◆ SetTraitDeferred() [1/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraitDeferred ( const T Trait) const
inline

Set a trait of the subject by its type.

Statically typed deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to set.
Parameters
TraitThe trait to initialize with.
Returns
The status of the operation.

◆ SetTraitDeferred() [2/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraitDeferred ( const T Trait) const
inline

Set a trait of the subject by its type.

Statically typed deferred pointer version.

The actual change is deferred until the deferreds are applied either automatically or manually.

At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.

Template Parameters
ParadigmThe security paradigm to use.
TThe type of the trait to set.
Parameters
TraitThe trait data to initialize with.
Returns
The status of the operation.

◆ SetTraitDeferred() [3/3]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true>
TOutcome< Paradigm > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraitDeferred ( UScriptStruct *const  TraitType,
const void *const  TraitData 
) const
inline

Set a trait of the subject by its type.

Dynamically typed deferred version.

The actual change is deferred until the deferreds are applied either automatically or manually.

At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
[in]TraitTypeThe type of the trait to set. May be a nullptr and TraitData is not used in that case.
[in]TraitDataThe trait data to initialize with. May not be a nullptr if the TraitType is specified.
Returns
The status of the operation.

◆ SetTraitmarkPass()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraitmarkPass ( const FTraitmark InTraitmarkPermit) const
inline

◆ SetTraitmarkPermit()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraitmarkPermit ( const FTraitmark InTraitmarkPermit) const
inline

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

Template Parameters
ParadigmThe safety paradigm to invoke under.
Parameters
[in]InTraitmarkPermitThe traitmark permit to set.
Returns
The status of the operation.

◆ SetTraits() [1/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraits ( const FSubjectRecord SubjectRecord,
const bool  bLeaveRedundant = true 
) const
inline

Set multiple subject traits from a subject record.

The traits essentially get copied from the record.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
SubjectRecordThe subject traits pack to set from.
bLeaveRedundantShould redundant existing traits (not present in the record) be left in the subject.
Returns
The outcome of the operation.

◆ SetTraits() [2/2]

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void>
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::SetTraits ( const TArray< UScriptStruct *, A1 > &  TraitsTypes,
const TArray< const T *, A2 > &  TraitsData,
const bool  bLeaveRedundant = true 
) const
inline

Set multiple subject traits equal to the supplied list.

Template Parameters
ParadigmThe paradigm to work under.
A1The allocator type of the types array.
A2The allocator type of the traits data array.
TThe type of the traits data elements. May be a void.
Parameters
TraitsTypesThe types of traits to add.
TraitsDataThe corresponding traits data to initialize with.
bLeaveRedundantShould redundant existing traits be left in the subject.
Returns
The status of the operation.

◆ ToggleFlag()

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<EParadigm Paradigm = EParadigm::Default>
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, bool > TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::ToggleFlag ( const EFlagmarkBit  Flag) const
inline

Toggle a single flag for the subject.

This is a user-level method. Changing a system-level flag is prohibited by default.

The operation is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagThe flag to toggle.
Returns
The new state of the corresponding flag.

Friends And Related Function Documentation

◆ AMechanism

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class AMechanism
friend

◆ ASubjectiveActor

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class ASubjectiveActor
friend

◆ FChunkSlot

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FChunkSlot
friend

◆ FConstSubjectHandle

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FConstSubjectHandle
friend

◆ FSolidSubjectHandle

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FSolidSubjectHandle
friend

◆ FSubjectInfo

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FSubjectInfo
friend

◆ FSubjectNetworkState

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FSubjectNetworkState
friend

◆ FSubjectRecord

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend struct FSubjectRecord
friend

◆ ISubjective

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class ISubjective
friend

◆ TBeltIt

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename SubjectHandleT >
friend struct TBeltIt
friend

◆ TChain

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename ChunkItT , typename BeltItT , EParadigm Paradigm>
friend struct TChain
friend

◆ TChunkIt

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
template<typename SubjectHandleT >
friend struct TChunkIt
friend

◆ UChunk

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class UChunk
friend

◆ UMachine

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class UMachine
friend

◆ UNetworkBearerComponent

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class UNetworkBearerComponent
friend

◆ USubjectiveActorComponent

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
friend class USubjectiveActorComponent
friend

Member Data Documentation

◆ AllowsChanges

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
constexpr bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::AllowsChanges = bAllowChanges
staticconstexpr

Is the target subject mutable (non-constant)?

◆ AllowsDirectTraitAccess

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
constexpr bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::AllowsDirectTraitAccess = bAllowDirectTraitAccess
staticconstexpr

Is the direct (trait) data access possible?

◆ AllowsStructuralChanges

template<bool bAllowChanges, bool bAllowDirectTraitAccess, bool bAllowStructuralChanges>
constexpr bool TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::AllowsStructuralChanges = bAllowStructuralChanges
staticconstexpr

Is changing of the subject's structure (adding/removing traits) allowed.


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