![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#include <ISMInstanceDataManager.h>
Inheritance diagram for FPrimitiveInstanceDataManager:Public Types | |
| enum class | ETrackingState : uint8 { Initial , Tracked , Disabled , Optimized } |
| enum class | EMode : uint8 { Default , Legacy , ExternalLegacyData } |
Additional Inherited Members | |
Protected Member Functions inherited from FInstanceIdIndexMap | |
| ENGINE_API void | RebuildFromIndexToIdMap (int32 MaxInstanceId) |
Protected Attributes inherited from FInstanceIdIndexMap | |
| TArray< FPrimitiveInstanceId > | IndexToIdMap |
| TArray< int32 > | IdToIndexMap |
| int32 | NumInstances = 0 |
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.
|
strong |
|
strong |
| FPrimitiveInstanceDataManager::FPrimitiveInstanceDataManager | ( | UPrimitiveComponent * | InPrimitiveComponent | ) |
| void FPrimitiveInstanceDataManager::BakedLightingDataChangedAll | ( | ) |
| void FPrimitiveInstanceDataManager::ClearChangeTracking | ( | ) |
Clear all tracked changes (will result in a full update when next one is flushed)
Clear the ID/Index association and reset the mapping to identity & number of instances to the given number. Also clears the change tracking state.
| void FPrimitiveInstanceDataManager::CreateExplicitIdentityMapping | ( | ) |
| bool FPrimitiveInstanceDataManager::FlushChanges | ( | FInstanceUpdateComponentDesc && | ComponentData, |
| bool | bNewPrimitiveProxy | ||
| ) |
| SIZE_T FPrimitiveInstanceDataManager::GetAllocatedSize | ( | ) | const |
| int32 FPrimitiveInstanceDataManager::GetMaxInstanceId | ( | ) | const |
| int32 FPrimitiveInstanceDataManager::GetMaxInstanceIndex | ( | ) | const |
|
inline |
| TSharedPtr< FISMCInstanceDataSceneProxy, ESPMode::ThreadSafe > FPrimitiveInstanceDataManager::GetOrCreateProxy | ( | ERHIFeatureLevel::Type | InFeatureLevel | ) |
|
inline |
|
inline |
|
inline |
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.
| bool FPrimitiveInstanceDataManager::HasAnyInstanceChanges | ( | ) | const |
| void FPrimitiveInstanceDataManager::MarkForRebuildFromLegacy | ( | TUniquePtr< FStaticMeshInstanceData > && | LegacyInstanceData, |
| const TArray< int32 > & | InstanceReorderTable, | ||
| const TArray< TRefCountPtr< HHitProxy > > & | HitProxies | ||
| ) |
Call to mark the manager as needing a full rebuild & having an external driver for this.
| void FPrimitiveInstanceDataManager::NumCustomDataChanged | ( | ) |
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. Also at this point we may assume that we have no idea of the state of individual members. Thus, this function will reset tracking state to force a full update as well as, conditionally - if the counts are mismatched - reset the ID mapping.
| void FPrimitiveInstanceDataManager::PrimitiveTransformChanged | ( | ) |
|
inline |
| void FPrimitiveInstanceDataManager::TransformChanged | ( | FPrimitiveInstanceId | InstanceId | ) |
| void FPrimitiveInstanceDataManager::TransformsChangedAll | ( | ) |
|
inline |