Navigation
API > API/Runtime > API/Runtime/Engine
Manager class that tracks changes to instance data within the component, and is responsible for dispatching updates of the proxy. Tracks instance index changes to be able to maintain a persistent ID mapping for use on the render thread. The ID mapping is not serialized and will be reset when the proxy is recreated. Not responsible for storing the component representation of the instance data. NOTE/TODO: This is tied to the ISM use-case, mostly because of legacy (HISM) interactions. Will be refactored and sub-classed or something. Also: Still somewhat tied to the UComponent, which also can be refactored a bit to make it more general.
| Name | FPrimitiveInstanceDataManager |
| Type | class |
| Header File | /Engine/Source/Runtime/Engine/Public/InstancedStaticMesh/ISMInstanceDataManager.h |
| Include Path | #include "InstancedStaticMesh/ISMInstanceDataManager.h" |
Syntax
class FPrimitiveInstanceDataManager : public FInstanceIdIndexMap
Inheritance Hierarchy
- FInstanceIdIndexMap → FPrimitiveInstanceDataManager
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FPrimitiveInstanceDataManager
(
UPrimitiveComponent* InPrimitiveComponent |
InstancedStaticMesh/ISMInstanceDataManager.h |
Enums
Public
| Name | Remarks |
|---|---|
| EMode | |
| ETrackingState | Current tracking state, |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| EChangeFlag | FInstanceAttributeTracker::EFlag | InstancedStaticMesh/ISMInstanceDataManager.h | |
| PrecomputedOptimizationDataPtr | FISMCInstanceDataSceneProxy::FISMPrecomputedSpatialHashDataPtr | InstancedStaticMesh/ISMInstanceDataManager.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| AbsMaxDisplacement | float | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bAnyEditorDataChanged | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bAnyInstanceChange | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bBakedLightingDataChanged | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bComponentMarkedDirty | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bEnableTracking | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bFirstFlush | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bNumCustomDataChanged | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bPrimitiveTransformChanged | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| bTransformChangedAllInstances | uint8 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| Flags | FInstanceDataFlags | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| IdSearchStartIndex | int32 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| InstanceUpdateTracker | FInstanceAttributeTracker | Change set. | InstancedStaticMesh/ISMInstanceDataManager.h | |
| LegacyBuildData | TPimplPtr< struct FLegacyBuildData > | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| Mode | EMode | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| NumCustomDataFloats | int32 | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| PrecomputedOptimizationData | PrecomputedOptimizationDataPtr | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| PrimitiveComponent | TWeakObjectPtr< UPrimitiveComponent > | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| PrimitiveLocalToWorld | FMatrix | Must track this to detect changes TODO: make event driven and save the storage? | InstancedStaticMesh/ISMInstanceDataManager.h | |
| Proxy | TSharedPtr< FISMCInstanceDataSceneProxy, ESPMode::ThreadSafe > | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| StaticMeshBounds | FRenderBounds | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| TrackingState | ETrackingState | InstancedStaticMesh/ISMInstanceDataManager.h | ||
| ValidInstanceIdMask | TBitArray | Id allocation tracking. | InstancedStaticMesh/ISMInstanceDataManager.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void Add
(
int32 InInstanceAddAtIndex, |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void BakedLightingDataChanged
(
int32 InstanceIndex |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void BakedLightingDataChangedAll() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void BeginCacheForCookedPlatformData
(
const ITargetPlatform* TargetPlatform, |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void ClearChangeTracking() |
Clear all tracked changes (will result in a full update when next one is flushed) | InstancedStaticMesh/ISMInstanceDataManager.h | |
void ClearIdTracking
(
int32 InNumInstances |
Clear the ID/Index association and reset the mapping to identity & number of instances to the given number. | InstancedStaticMesh/ISMInstanceDataManager.h | |
void CreateExplicitIdentityMapping() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void CustomDataChanged
(
int32 InstanceIndex |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void EditorDataChangedAll() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
bool FlushChanges
(
FInstanceUpdateComponentDesc&& ComponentData, |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
SIZE_T GetAllocatedSize() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
int32 GetMaxInstanceId() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
int32 GetMaxInstanceIndex() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
EMode GetMode() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
TSharedPtr< FISMCInstanceDataSceneProxy, ESPMode::ThreadSafe > GetOrCreateProxy
(
ERHIFeatureLevel::Type InFeatureLevel |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
const TSharedPtr< FISMCInstanceDataSceneProxy, ESPMode::ThreadSafe > & GetProxy() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
ETrackingState GetState() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
bool HasAnyChanges() |
Returns true if there are explicitly tracked instance changes, or the state is not tracked (because no proxy has been created yet), and the tracking state is not Disabled. | InstancedStaticMesh/ISMInstanceDataManager.h | |
bool HasAnyInstanceChanges() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void Invalidate
(
int32 InNumInstances |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void MarkForRebuildFromLegacy
(
TUniquePtr< FStaticMeshInstanceData >&& LegacyInstanceData, |
Call to mark the manager as needing a full rebuild & having an external driver for this. | InstancedStaticMesh/ISMInstanceDataManager.h | |
void NumCustomDataChanged() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void OnRegister
(
int32 InNumInstances |
Called by the corresponding function in the owner UPrimitiveComponent Because of the multifarious ways the engine shoves data into the properties it is possible for the count to get out of sync. | InstancedStaticMesh/ISMInstanceDataManager.h | |
void PostLoad
(
int32 InNumInstances |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void PrimitiveTransformChanged() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void ReadCookedRenderData
(
FArchive& Ar |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void RemoveAt
(
int32 InstanceIndex |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void RemoveAtSwap
(
int32 InstanceIndex |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void ResetComponentDirtyTracking() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void SetMode
(
EMode InMode |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
bool ShouldWriteCookedData
(
const ITargetPlatform* TargetPlatform, |
Early out test to save performance if no features are enabled that require BeginCacheForCookedPlatformData to be called. | InstancedStaticMesh/ISMInstanceDataManager.h | |
void TransformChanged
(
int32 InstanceIndex |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void TransformChanged
(
FPrimitiveInstanceId InstanceId |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void TransformsChangedAll() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void ValidateMapping() |
InstancedStaticMesh/ISMInstanceDataManager.h | ||
void WriteCookedRenderData
(
FArchive& Ar, |
InstancedStaticMesh/ISMInstanceDataManager.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FISMPrecomputedSpatialHashData PrecomputeOptimizationData
(
FInstanceUpdateComponentDesc&& ComponentData, |
Build precomputed data from the input. | InstancedStaticMesh/ISMInstanceDataManager.h | |
static bool ShouldUsePrecomputed() |
InstancedStaticMesh/ISMInstanceDataManager.h |