UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMassProcessingPhaseManager Struct Reference

#include <MassProcessingPhaseManager.h>

+ Inheritance diagram for FMassProcessingPhaseManager:

Classes

struct  FPhaseGraphBuildState
 

Public Member Functions

MASSENTITY_API FMassProcessingPhaseManager (EProcessorExecutionFlags InProcessorExecutionFlags=EProcessorExecutionFlags::None)
 
 FMassProcessingPhaseManager (const FMassProcessingPhaseManager &Other)=delete
 
FMassProcessingPhaseManageroperator= (const FMassProcessingPhaseManager &Other)=delete
 
const TSharedPtr< FMassEntityManager > & GetEntityManager () const
 
FMassEntityManagerGetEntityManagerRef ()
 
FMassProcessingPhase::FOnPhaseEvent & GetOnPhaseStart (const EMassProcessingPhase Phase)
 
FMassProcessingPhase::FOnPhaseEvent & GetOnPhaseEnd (const EMassProcessingPhase Phase)
 
MASSENTITY_API void Initialize (UObject &InOwner, TConstArrayView< FMassProcessingPhaseConfig > ProcessingPhasesConfig, const FString &DependencyGraphFileName=TEXT(""))
 
MASSENTITY_API void Deinitialize ()
 
MASSENTITY_API const FGraphEventRefTriggerPhase (const EMassProcessingPhase Phase, const float DeltaTime, const FGraphEventRef &MyCompletionGraphEvent, ENamedThreads::Type CurrentThread=ENamedThreads::GameThread)
 
MASSENTITY_API void Start (UWorld &World)
 
MASSENTITY_API void Start (const TSharedRef< FMassEntityManager > &InEntityManager)
 
MASSENTITY_API void Stop ()
 
bool IsRunning () const
 
bool IsPaused () const
 
MASSENTITY_API void Pause ()
 
MASSENTITY_API void Resume ()
 
MASSENTITY_API FString GetName () const
 
MASSENTITY_API void RegisterDynamicProcessor (UMassProcessor &Processor)
 
MASSENTITY_API void UnregisterDynamicProcessor (UMassProcessor &Processor)
 
MASSENTITY_API void Start (const TSharedPtr< FMassEntityManager > &InEntityManager)
 
- Public Member Functions inherited from FGCObject
 FGCObject ()
 
 FGCObject (const FGCObject &Other)
 
 FGCObject (FGCObject &&Other)
 
 FGCObject (EFlags Flags)
 
virtual ~FGCObject ()
 
FGCObjectoperator= (const FGCObject &)
 
FGCObjectoperator= (FGCObject &&)
 
COREUOBJECT_API void RegisterGCObject ()
 
COREUOBJECT_API void UnregisterGCObject ()
 
virtual bool GetReferencerPropertyName (UObject *Object, FString &OutPropertyName) const
 
- Public Member Functions inherited from TSharedFromThis< FMassProcessingPhaseManager >
TSharedRef< FMassProcessingPhaseManager, Mode > AsShared ()
 
TSharedRef< FMassProcessingPhaseManager const, Mode > AsShared () const
 
TSharedRef< SubobjectType, Mode > AsSharedSubobject (SubobjectType *SubobjectPtr) const
 
TWeakPtr< FMassProcessingPhaseManager, Mode > AsWeak ()
 
TWeakPtr< FMassProcessingPhaseManager const, Mode > AsWeak () const
 
TWeakPtr< SubobjectType, Mode > AsWeakSubobject (SubobjectType *SubobjectPtr) const
 
void UpdateWeakReferenceInternal (TSharedPtr< SharedPtrType, SharedPtrMode > const *InSharedPtr, OtherType *InObject) const
 
void UpdateWeakReferenceInternal (TSharedRef< SharedRefType, SharedPtrMode > const *InSharedRef, OtherType *InObject) const
 
UE_FORCEINLINE_HINT bool DoesSharedInstanceExist () const
 

Protected Types

enum class  EDynamicProcessorOperationType : uint8 { Add , Remove }
 
using FDynamicProcessorOperation = TPair< TStrongObjectPtr< UMassProcessor >, EDynamicProcessorOperationType >
 

Protected Member Functions

virtual MASSENTITY_API void AddReferencedObjects (FReferenceCollector &Collector) override
 
virtual FString GetReferencerName () const override
 
MASSENTITY_API void RegisterDynamicProcessorInternal (TNotNull< UMassProcessor * > Processor)
 
MASSENTITY_API void UnregisterDynamicProcessorInternal (TNotNull< UMassProcessor * > Processor)
 
MASSENTITY_API void HandlePendingDynamicProcessorOperations (const int32 PhaseIndex)
 
virtual MASSENTITY_API void EnableTickFunctions (const UWorld &World)
 
MASSENTITY_API void CreatePhases ()
 
MASSENTITY_API void OnPhaseStart (FMassProcessingPhase &Phase)
 
MASSENTITY_API void OnPhaseEnd (FMassProcessingPhase &Phase)
 
MASSENTITY_API void OnNewArchetype (const FMassArchetypeHandle &NewArchetype)
 
- Protected Member Functions inherited from TSharedFromThis< FMassProcessingPhaseManager >
 TSharedFromThis ()
 
 TSharedFromThis (TSharedFromThis const &)
 
UE_FORCEINLINE_HINT TSharedFromThisoperator= (TSharedFromThis const &)
 
 ~TSharedFromThis ()
 

Protected Attributes

friend FMassProcessingPhase
 
FMassProcessingPhase ProcessingPhases [(uint8) EMassProcessingPhase::MAX]
 
FPhaseGraphBuildState ProcessingGraphBuildStates [(uint8) EMassProcessingPhase::MAX]
 
TArray< FMassProcessingPhaseConfigProcessingPhasesConfig
 
TArray< TObjectPtr< UMassProcessor > > DynamicProcessors
 
TArray< TWeakObjectPtr< UMassProcessor > > RemovedDynamicProcessors
 
TMpscQueue< FDynamicProcessorOperationPendingDynamicProcessors [(uint8) EMassProcessingPhase::MAX]
 
TSharedPtr< FMassEntityManagerEntityManager
 
EMassProcessingPhase CurrentPhase = EMassProcessingPhase::MAX
 
TWeakObjectPtr< UObjectOwner
 
FDelegateHandle OnNewArchetypeHandle
 
EProcessorExecutionFlags ProcessorExecutionFlags = EProcessorExecutionFlags::None
 
bool bIsAllowedToTick = false
 
bool bIsPaused = false
 
bool bIsPauseTogglePending = false
 

Additional Inherited Members

- Public Types inherited from FGCObject
enum class  EFlags : uint32 { None = 0 , RegisterLater = 1 << 0 , AddStableNativeReferencesOnly = 1 << 1 }
 
- Static Public Member Functions inherited from FGCObject
static COREUOBJECT_API void StaticInit ()
 
- Static Public Attributes inherited from FGCObject
static COREUOBJECT_API UGCObjectReferencerGGCObjectReferencer = nullptr
 
- Static Protected Member Functions inherited from TSharedFromThis< FMassProcessingPhaseManager >
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis (OtherType *ThisPtr)
 
static UE_FORCEINLINE_HINT TSharedRef< OtherType const, Mode > SharedThis (const OtherType *ThisPtr)
 

Detailed Description

MassProcessingPhaseManager owns separate FMassProcessingPhase instances for every ETickingGroup. When activated via Start function it registers and enables the FMassProcessingPhase instances which themselves are tick functions that host UMassCompositeProcessor which they trigger as part of their Tick function. MassProcessingPhaseManager serves as an interface to said FMassProcessingPhase instances and allows initialization with collections of processors (via Initialize function) as well as registering arbitrary functions to be called when a particular phase starts or ends (via GetOnPhaseStart and GetOnPhaseEnd functions).

Member Typedef Documentation

◆ FDynamicProcessorOperation

using TStrongObjectPtr to not worry about GC while the processor instances are waiting in PendingDynamicProcessors

Member Enumeration Documentation

◆ EDynamicProcessorOperationType

Enumerator
Add 
Remove 

Constructor & Destructor Documentation

◆ FMassProcessingPhaseManager() [1/2]

FMassProcessingPhaseManager::FMassProcessingPhaseManager ( EProcessorExecutionFlags  InProcessorExecutionFlags = EProcessorExecutionFlags::None)
explicit

◆ FMassProcessingPhaseManager() [2/2]

FMassProcessingPhaseManager::FMassProcessingPhaseManager ( const FMassProcessingPhaseManager Other)
delete

Member Function Documentation

◆ AddReferencedObjects()

void FMassProcessingPhaseManager::AddReferencedObjects ( FReferenceCollector Collector)
overrideprotectedvirtual

Pure virtual that must be overloaded by the inheriting class. Use this method to serialize any UObjects contained that you wish to keep around.

Parameters
CollectorThe collector of referenced objects.

Implements FGCObject.

◆ CreatePhases()

MASSENTITY_API void FMassProcessingPhaseManager::CreatePhases ( )
protected

Creates phase processors instances for each declared phase name, based on MassEntitySettings

◆ Deinitialize()

void FMassProcessingPhaseManager::Deinitialize ( )

Needs to be called before destruction, ideally before owner's BeginDestroy (a FGCObject's limitation)

◆ EnableTickFunctions()

void FMassProcessingPhaseManager::EnableTickFunctions ( const UWorld World)
protectedvirtual

Override this function if you want to modify how the phase tick functions get executed.

◆ GetEntityManager()

const TSharedPtr< FMassEntityManager > & FMassProcessingPhaseManager::GetEntityManager ( ) const
inline

◆ GetEntityManagerRef()

FMassEntityManager & FMassProcessingPhaseManager::GetEntityManagerRef ( )
inline

◆ GetName()

FString FMassProcessingPhaseManager::GetName ( ) const

◆ GetOnPhaseEnd()

FMassProcessingPhase::FOnPhaseEvent & FMassProcessingPhaseManager::GetOnPhaseEnd ( const EMassProcessingPhase  Phase)
inline

Retrieves OnPhaseEnd multicast delegate's reference for a given Phase

◆ GetOnPhaseStart()

FMassProcessingPhase::FOnPhaseEvent & FMassProcessingPhaseManager::GetOnPhaseStart ( const EMassProcessingPhase  Phase)
inline

Retrieves OnPhaseStart multicast delegate's reference for a given Phase

◆ GetReferencerName()

virtual FString FMassProcessingPhaseManager::GetReferencerName ( ) const
inlineoverrideprotectedvirtual

Overload this method to report a name for your referencer

Implements FGCObject.

◆ HandlePendingDynamicProcessorOperations()

void FMassProcessingPhaseManager::HandlePendingDynamicProcessorOperations ( const int32  PhaseIndex)
protected

◆ Initialize()

void FMassProcessingPhaseManager::Initialize ( UObject InOwner,
TConstArrayView< FMassProcessingPhaseConfig ProcessingPhasesConfig,
const FString &  DependencyGraphFileName = TEXT("") 
)

Populates hosted FMassProcessingPhase instances with Processors read from MassEntitySettings configuration. Calling this function overrides previous configuration of Phases.

◆ IsPaused()

bool FMassProcessingPhaseManager::IsPaused ( ) const
inline

Determine if this Phase Manager is currently paused.

While paused, phases will transition as usual, but processors will not be executed.

Returns
True if this PhaseManager is currently paused; else False

◆ IsRunning()

bool FMassProcessingPhaseManager::IsRunning ( ) const
inline

◆ OnNewArchetype()

void FMassProcessingPhaseManager::OnNewArchetype ( const FMassArchetypeHandle NewArchetype)
protected

◆ OnPhaseEnd()

void FMassProcessingPhaseManager::OnPhaseEnd ( FMassProcessingPhase Phase)
protected

Called by the given Phase at the very end of its execution function (the FMassProcessingPhase::ExecuteTick), after the FMassProcessingPhase.OnPhaseEnd broadcast delegate

◆ OnPhaseStart()

void FMassProcessingPhaseManager::OnPhaseStart ( FMassProcessingPhase Phase)
protected

Called by the given Phase at the very start of its execution function (the FMassProcessingPhase::ExecuteTick), even before the FMassProcessingPhase.OnPhaseStart broadcast delegate

◆ operator=()

FMassProcessingPhaseManager & FMassProcessingPhaseManager::operator= ( const FMassProcessingPhaseManager Other)
delete

◆ Pause()

void FMassProcessingPhaseManager::Pause ( )

Pause this phase manager at the earliest opportunity (on next FrameEnd phase end). This allows the current phase cycle to complete before the pause takes effect.

◆ RegisterDynamicProcessor()

void FMassProcessingPhaseManager::RegisterDynamicProcessor ( UMassProcessor Processor)

Registers a dynamic processor. This needs to be a fully formed processor and will be slotted in during the next tick.

◆ RegisterDynamicProcessorInternal()

void FMassProcessingPhaseManager::RegisterDynamicProcessorInternal ( TNotNull< UMassProcessor * >  Processor)
protected

◆ Resume()

void FMassProcessingPhaseManager::Resume ( )

Unpause this phase manager at the earliest opportunity (on next PrePhysics phase start).

◆ Start() [1/3]

void FMassProcessingPhaseManager::Start ( const TSharedPtr< FMassEntityManager > &  InEntityManager)

◆ Start() [2/3]

void FMassProcessingPhaseManager::Start ( const TSharedRef< FMassEntityManager > &  InEntityManager)

Stores InEntityManager as the entity manager. It also kicks off phase ticking if the given InEntityManager is tied to a UWorld.

◆ Start() [3/3]

void FMassProcessingPhaseManager::Start ( UWorld World)

Stores EntityManager associated with given world's MassEntitySubsystem and kicks off phase ticking.

◆ Stop()

void FMassProcessingPhaseManager::Stop ( )

◆ TriggerPhase()

const FGraphEventRef & FMassProcessingPhaseManager::TriggerPhase ( const EMassProcessingPhase  Phase,
const float  DeltaTime,
const FGraphEventRef MyCompletionGraphEvent,
ENamedThreads::Type  CurrentThread = ENamedThreads::GameThread 
)

◆ UnregisterDynamicProcessor()

void FMassProcessingPhaseManager::UnregisterDynamicProcessor ( UMassProcessor Processor)

Removes a previously registered dynamic processor of throws an assert if not found.

◆ UnregisterDynamicProcessorInternal()

void FMassProcessingPhaseManager::UnregisterDynamicProcessorInternal ( TNotNull< UMassProcessor * >  Processor)
protected

Member Data Documentation

◆ bIsAllowedToTick

bool FMassProcessingPhaseManager::bIsAllowedToTick = false
protected

◆ bIsPaused

bool FMassProcessingPhaseManager::bIsPaused = false
protected

◆ bIsPauseTogglePending

bool FMassProcessingPhaseManager::bIsPauseTogglePending = false
protected

◆ CurrentPhase

EMassProcessingPhase FMassProcessingPhaseManager::CurrentPhase = EMassProcessingPhase::MAX
protected

◆ DynamicProcessors

TArray<TObjectPtr<UMassProcessor> > FMassProcessingPhaseManager::DynamicProcessors
protected

◆ EntityManager

TSharedPtr<FMassEntityManager> FMassProcessingPhaseManager::EntityManager
protected

◆ FMassProcessingPhase

friend FMassProcessingPhaseManager::FMassProcessingPhase
protected

◆ OnNewArchetypeHandle

FDelegateHandle FMassProcessingPhaseManager::OnNewArchetypeHandle
protected

◆ Owner

TWeakObjectPtr<UObject> FMassProcessingPhaseManager::Owner
protected

◆ PendingDynamicProcessors

TMpscQueue<FDynamicProcessorOperation> FMassProcessingPhaseManager::PendingDynamicProcessors[(uint8) EMassProcessingPhase::MAX]
protected

◆ ProcessingGraphBuildStates

FPhaseGraphBuildState FMassProcessingPhaseManager::ProcessingGraphBuildStates[(uint8) EMassProcessingPhase::MAX]
protected

◆ ProcessingPhases

FMassProcessingPhase FMassProcessingPhaseManager::ProcessingPhases[(uint8) EMassProcessingPhase::MAX]
protected

◆ ProcessingPhasesConfig

TArray<FMassProcessingPhaseConfig> FMassProcessingPhaseManager::ProcessingPhasesConfig
protected

◆ ProcessorExecutionFlags

EProcessorExecutionFlags FMassProcessingPhaseManager::ProcessorExecutionFlags = EProcessorExecutionFlags::None
protected

◆ RemovedDynamicProcessors

TArray<TWeakObjectPtr<UMassProcessor> > FMassProcessingPhaseManager::RemovedDynamicProcessors
protected

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