Navigation
API > API/Plugins > API/Plugins/InstancedActors
Regional manager of 'instanced actors'.
Uses Mass to provide lightweight and efficient instancing of items in the distance, with server-authoritative actor spawning around players. AInstancedActorsManager's also provide replication and persistence for their managed instances.
Spawned and populated offline by UInstancedActorsSubsystem::InstanceActor. Offline population ensures client & server both load the same stable instance data and can commonly refer to instances by index as such.
| Name | AInstancedActorsManager |
| Type | class |
| Header File | /Engine/Plugins/Runtime/InstancedActors/Source/InstancedActors/Public/InstancedActorsManager.h |
| Include Path | #include "InstancedActorsManager.h" |
Syntax
UCLASS (MinimalAPI, Config=Mass)
class AInstancedActorsManager :
public APartitionActor ,
public ISMInstanceManager ,
public IActorInstanceManagerInterface
Inheritance Hierarchy
- UObjectBase → UObjectBaseUtility → UObject → AActor → APartitionActor → AInstancedActorsManager
Implements Interfaces
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
AInstancedActorsManager() |
InstancedActorsManager.h |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| FInstancedActorDataPredicateFunc | TFunctionRef< bool(const UInstancedActorsData &InstancedActorData)> | Predicate taking a UInstancedActorsData and returns true if IAD matches search criteria, false otherwise. | InstancedActorsManager.h |
| FInstanceOperationFunc | TFunctionRef< bool(const FInstancedActorsInstanceHandle &InstanceHandle, const FTransform &InstanceTransform, FInstancedActorsIterationContext &IterationContext)> | Iteration callback for ForEachInstance | InstancedActorsManager.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| bLockInstanceLocation | bool | Set this to false to be able to move the instances contained by this IAM.The property is not saved and will reset. | InstancedActorsManager.h |
|
| ManagerGridGuid | FGuid | InstancedActorsManager.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FInstancedActorsInstanceHandle AddActorInstance
(
TSubclassOf< AActor > ActorClass, |
Adds an instance of ActorClass at InstanceTransform location to instance data | InstancedActorsManager.h | |
void AddModifierVolume
(
UInstancedActorsModifierVolumeComponent& ModifierVolume |
InstancedActorsManager.h | ||
void AuditInstances
(
FOutputDevice& Ar, |
Outputs instance metrics to Ar | InstancedActorsManager.h | |
void CompactInstances
(
FOutputDevice& Ar |
Called by IA.CompactInstances console command to fully remove FreeList instances | InstancedActorsManager.h | |
virtual void CreateISMComponents
(
const FInstancedActorsVisualizationDesc& VisualizationDesc, |
InstancedActorsManager.h | ||
UInstancedActorsData * FindInstanceDataByID
(
uint16 InstanceDataID |
Searches PerActorClassInstanceData, returning the IAD with matching UInstancedActorsData::ID, if any(nullptr otherwise) | InstancedActorsManager.h | |
bool ForEachInstance
(
FInstanceOperationFunc Operation |
Call InOperation for each valid instance in this manager. | InstancedActorsManager.h | |
bool ForEachInstance
(
FInstanceOperationFunc Operation, |
InstancedActorsManager.h | ||
bool ForEachInstance
(
const TBoundsType& QueryBounds, |
InstancedActorsManager.h | ||
bool ForEachInstance
(
const TBoundsType& QueryBounds, |
Call InOperation for each valid instance in this manager whose location falls within QueryBounds. | InstancedActorsManager.h | |
TConstArrayView< TObjectPtr< UInstancedActorsData > > GetAllInstanceData() |
InstancedActorsManager.h | ||
FBox GetInstanceBounds() |
InstancedActorsManager.h | ||
UInstancedActorsSubsystem * GetInstancedActorSubsystem() |
InstancedActorsManager.h | ||
UInstancedActorsSubsystem & GetInstancedActorSubsystemChecked() |
InstancedActorsManager.h | ||
FInstancedActorsManagerHandle GetManagerHandle() |
Inlines | InstancedActorsManager.h | |
TSharedPtr< FMassEntityManager > GetMassEntityManager() |
InstancedActorsManager.h | ||
FMassEntityManager & GetMassEntityManagerChecked() |
InstancedActorsManager.h | ||
int32 GetNumValidInstances() |
InstancedActorsManager.h | ||
UInstancedActorsData & GetOrCreateActorInstanceData
(
TSubclassOf< AActor > ActorClass, |
Helper function to create and initialize per-actor-class UInstancedActorsData's, optionally further partitioned by AdditionalInstanceTags | InstancedActorsManager.h | |
bool HasAnyValidInstances() |
InstancedActorsManager.h | ||
bool HasInstancesOfClass
(
const FBox& QueryBounds, |
Checks whether there are any instanced actors within this manager, representing ActorClass or its subclasses inside QueryBounds. | InstancedActorsManager.h | |
bool HasSpawnedEntities() |
InstancedActorsManager.h | ||
void InitializeModifyAndSpawnEntities () |
Initializes all PerActorClassInstanceData, applies pre-spawn modifiers, spawns entities then applies post-spawn modifiers. | InstancedActorsManager.h | |
bool IsValidInstance
(
const FInstancedActorsInstanceHandle& InstanceHandle |
InstancedActorsManager.h | ||
void OnAddedToSubsystem
(
UInstancedActorsSubsystem& InInstancedActorSubsystem, |
Adds modifiers already registered with InInstancedActorSubsystem and either calls InitializeModifyAndSpawnEntities to spawn entities immediately, or schedules deferred call by InInstancedActorSubsystem if IA.DeferSpawnEntities is enabled. | InstancedActorsManager.h | |
void RegisterInstanceDatasComponents
(
const UInstancedActorsData& InstanceData, |
Registers Components as related to InstanceData for IActorInstanceManagerInterface-related purposes. | InstancedActorsManager.h | |
bool RemoveActorInstance
(
const FInstancedActorsInstanceHandle& InstanceToRemove |
Removes all instance data for InstanceHandle. | InstancedActorsManager.h | |
void RemoveAllModifierVolumes() |
InstancedActorsManager.h | ||
void RemoveModifierVolume
(
UInstancedActorsModifierVolumeComponent& ModifierVolume |
InstancedActorsManager.h | ||
void RequestPersistentDataSave() |
Request the persistent data system to re-save this managers persistent data | InstancedActorsManager.h | |
void RuntimeRemoveAllInstances () |
Removes all instances as if they were never present i.e: these removals are not persisted as if made by a player. | InstancedActorsManager.h | |
void SetGridGuid
(
const FGuid& InGuid |
InstancedActorsManager.h | ||
void SetupLoadedInstances () |
Performs setup after all Instances have been loaded. | InstancedActorsManager.h | |
void UnregisterInstanceDatasComponent
(
UInstancedStaticMeshComponent& Component |
Unregisters Component from IActorInstanceManagerInterface-related tracking. | InstancedActorsManager.h |
Overridden from APartitionActor
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual uint32 GetDefaultGridSize
(
UWorld* InWorld |
InstancedActorsManager.h | ||
virtual FGuid GetGridGuid() |
InstancedActorsManager.h |
Overridden from UObject
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void Serialize
(
FStructuredArchive::FRecord Record |
InstancedActorsManager.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FBox CalculateLocalInstanceBounds() |
Calculate cumulative local space instance bounds for all PerActorClassInstanceData | InstancedActorsManager.h | |
virtual UInstancedActorsData * CreateNextInstanceActorData
(
TSubclassOf< AActor > ActorClass, |
InstancedActorsManager.h | ||
virtual void DespawnAllEntities() |
Despawns all entities spawned by individual UInstancedActorsData instances. | InstancedActorsManager.h | |
void OnPersistentDataRestored() |
Called when persistent data has been applied / restored | InstancedActorsManager.h | |
virtual void RequestActorSave
(
AActor* Actor |
Mz | InstancedActorsManager.h | |
void SerializeInstancePersistenceData
(
FStructuredArchive::FRecord Record, |
Called by Serialize for SaveGame archives to save / load IAD persistence data | InstancedActorsManager.h | |
void TryRunPendingModifiers () |
Attempts to run any 'pending' modifiers in ModifierVolumes where are appropriate to run given HasSpawnedEntities Called in BeginPlay prior to, and then again after SpawnEntities. | InstancedActorsManager.h |
Overridden from AActor
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void BeginPlay() |
InstancedActorsManager.h | ||
virtual void EndPlay
(
const EEndPlayReason::Type EndPlayReason |
InstancedActorsManager.h | ||
virtual void GetStreamingBounds
(
FBox& OutRuntimeBounds, |
InstancedActorsManager.h | ||
virtual bool IsHLODRelevant() |
InstancedActorsManager.h | ||
virtual bool IsUserManaged() |
InstancedActorsManager.h | ||
virtual void PreRegisterAllComponents() |
Used to set the right properties on the editor ISMCs so we can do per-instance selection. | InstancedActorsManager.h |
Overridden from UObject
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void PostLoad() |
InstancedActorsManager.h |
Overridden from IActorInstanceManagerInterface
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual int32 ConvertCollisionIndexToInstanceIndex
(
int32 InIndex, |
InstancedActorsManager.h | ||
virtual AActor * FindActor
(
const FActorInstanceHandle& Handle |
InstancedActorsManager.h | ||
virtual AActor * FindOrCreateActor
(
const FActorInstanceHandle& Handle |
InstancedActorsManager.h | ||
virtual ULevel * GetLevelForInstance
(
const int32 InstanceIndex |
InstancedActorsManager.h | ||
virtual UClass * GetRepresentedClass
(
const int32 InstanceIndex |
InstancedActorsManager.h | ||
virtual FTransform GetTransform
(
const FActorInstanceHandle& Handle |
InstancedActorsManager.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FBox CalculateBounds
(
TSubclassOf< AActor > ActorClass |
Helper function to deduce appropriate instanced static mesh bounds for ActorClass | InstancedActorsManager.h | |
static UE::InstancedActors::EInsideBoundsTestResult IsInstanceInsideBounds
(
const TBoundsType& QueryBounds, |
Determines whether the actor instance given by InstanceHandle overlaps QueryBounds. | InstancedActorsManager.h | |
static UE::InstancedActors::EInsideBoundsTestResult IsInstanceInsideBounds
(
const FBox& QueryBounds, |
|||
static UE::InstancedActors::EInsideBoundsTestResult IsInstanceInsideBounds
(
const FSphere& QueryBounds, |
|||
static void SetUpEditorPreviewISMComponent
(
TNotNull< UInstancedStaticMeshComponent* > ISMComponent |
Configures given ISMComponent for editor-preview purposes | InstancedActorsManager.h | |
static void UpdateInstanceStats
(
int32 InstanceCount, |
InstancedActorsManager.h |