Navigation
API > API/Runtime > API/Runtime/Engine
FSimpleStreamableAssetManager (SSAM) EXPERIMENTAL.
SceneProxy-based streaming asset manager. When enabled, replaces the legacy streaming-manager integration's per-UPrimitiveComponent path with a proxy-driven flow that supports both UPrimitiveComponent-backed and proxy-only primitives.
Disabled by default (s.StreamableAssets.UseSimpleStreamableAssetManager = 0). API, data structures, and runtime behavior may change without notice; do not build production code or shipping licensee integrations against SSAM until it reaches stable status.
Required by FastGeo: FastGeo's async render state creation produces proxy-only primitives (no UPrimitiveComponent). The legacy streaming path keys off UPrimitiveComponent, so FastGeo content is invisible to it. SSAM must be enabled for FastGeo content to participate in mip / LOD streaming.
| Name | FSimpleStreamableAssetManager |
| Type | class |
| Header File | /Engine/Source/Runtime/Engine/Public/Streaming/SimpleStreamableAssetManager.h |
| Include Path | #include "Streaming/SimpleStreamableAssetManager.h" |
Syntax
class FSimpleStreamableAssetManager
Structs
| Name | Remarks |
|---|---|
| FAssetBoundElement | |
| FAssetRecord | |
| FFallbackEntry | Queued entries awaiting GT-side asset gather. |
| FObjectBoundsRecord | |
| FRegister | |
| FRegisteredAsset | |
| FRemovedAssetRecord | |
| FScopedLock | |
| FUnregister | Record types consumed by the internal PushXxxRecord primitives. |
| FUpdate | |
| FUpdateLastRenderTime | |
| TSimpleSparseArray |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| AssetHandleTable | FSSAMAssetHandleTable | Static (process-lifetime): UStreamableRenderAsset CDOs allocate handles during ProcessNewlyLoadedUObjects, which runs before Init() / before Instance exists. | Streaming/SimpleStreamableAssetManager.h |
| CVarSimpleStreamableAssetManagerConsiderVisibility | FAutoConsoleVariableRef | Streaming/SimpleStreamableAssetManager.h | |
| CVarUseSimpleStreamableAssetManager | FAutoConsoleVariableRef | Streaming/SimpleStreamableAssetManager.h | |
| CVarUseSimpleStreamableAssetManagerEnsureAssetUniqueOnRegistration | FAutoConsoleVariableRef | Streaming/SimpleStreamableAssetManager.h | |
| CVarUseSimpleStreamableAssetManagerSparseArrayGrowSize | FAutoConsoleVariableRef | Streaming/SimpleStreamableAssetManager.h | |
| GSimpleStreamableAssetManagerConsiderVisibility | int32 | Streaming/SimpleStreamableAssetManager.h | |
| GSimpleStreamableAssetManagerEnsureAssetUniqueOnRegistration | int32 | Streaming/SimpleStreamableAssetManager.h | |
| GSimpleStreamableAssetManagerSparseArrayGrowSize | int32 | Streaming/SimpleStreamableAssetManager.h | |
| GUseSimpleStreamableAssetManager | int32 | Streaming/SimpleStreamableAssetManager.h | |
| Instance | FSimpleStreamableAssetManager * | Streaming/SimpleStreamableAssetManager.h | |
| PostGCDelegateHandle | FDelegateHandle | Streaming/SimpleStreamableAssetManager.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| AssetIndexToBounds4Index | TArray< TSimpleSparseArray< FAssetBoundElement > > | Streaming/SimpleStreamableAssetManager.h | ||
| AssetIndexToHandle | TArray< FSSAMAssetHandle > | Parallel to AssetIndexToBounds4Index. | Streaming/SimpleStreamableAssetManager.h | |
| AssetUsedIndices | TBitArray | Streaming/SimpleStreamableAssetManager.h | ||
| BoundsViewInfos | TArray< FBoundsViewInfo > | ** Background task data** // | Streaming/SimpleStreamableAssetManager.h | |
| CriticalSection | FCriticalSection | Streaming/SimpleStreamableAssetManager.h | ||
| FallbackComponentRegistration | TLocklessGrowingStorage< FFallbackEntry > | Streaming/SimpleStreamableAssetManager.h | ||
| FreeAssetIndexHint | int32 | ** Variables to manage Assets registration ** // | Streaming/SimpleStreamableAssetManager.h | |
| FreeObjectIndexHint | int32 | Streaming/SimpleStreamableAssetManager.h | ||
| MaxObjects | int32 | Streaming/SimpleStreamableAssetManager.h | ||
| ObjectBounds4 | TArray< FBounds4 > | Streaming/SimpleStreamableAssetManager.h | ||
| ObjectRegistrationIndexToAssetProperty | TArray< TArray< FAssetRecord > > | Streaming/SimpleStreamableAssetManager.h | ||
| ObjectUsedIndices | TBitArray | Streaming/SimpleStreamableAssetManager.h | ||
| Pending_RegisterRecords | TArray< FRegister > | Streaming/SimpleStreamableAssetManager.h | ||
| Pending_RemovedAssetRecords | TArray< FRemovedAssetRecord > | Streaming/SimpleStreamableAssetManager.h | ||
| Pending_UnregisterRecords | TArray< FUnregister > | Streaming/SimpleStreamableAssetManager.h | ||
| Pending_UpdateLastRenderTimeRecords | TArray< FUpdateLastRenderTime > | Streaming/SimpleStreamableAssetManager.h | ||
| Pending_UpdateRecords | TArray< FUpdate > | Streaming/SimpleStreamableAssetManager.h | ||
| PrimitiveHandleTable | FSSAMPrimitiveHandleTable | Instance-owned (unlike the static AssetHandleTable): primitive handles only exist during scene-proxy registration, which requires a live world always after Init(). | Streaming/SimpleStreamableAssetManager.h | |
| RegisteredObjectCount | int32 | ** Variables to manage Object registration ** // | Streaming/SimpleStreamableAssetManager.h | |
| RegisterRecords | TLocklessGrowingStorage< FRegister > | Streaming/SimpleStreamableAssetManager.h | ||
| RemovedAssetsRecords | TLocklessGrowingStorage< FRemovedAssetRecord > | Streaming/SimpleStreamableAssetManager.h | ||
| UnregisterRecords | TLocklessGrowingStorage< FUnregister > | Streaming/SimpleStreamableAssetManager.h | ||
| UpdateLastRenderTimeRecords | TLocklessGrowingStorage< FUpdateLastRenderTime > | Streaming/SimpleStreamableAssetManager.h | ||
| UpdateRecords | TLocklessGrowingStorage< FUpdate > | Streaming/SimpleStreamableAssetManager.h | ||
| UsedAssetIndices | int32 | Streaming/SimpleStreamableAssetManager.h |
Functions
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FSSAMAssetHandle AllocateAssetHandle () |
Asset handle lifecycle. | Streaming/SimpleStreamableAssetManager.h | |
static void AssignPrimitiveHandle
(
FPrimitiveSceneProxy* Proxy, |
Primitive-handle field sync between proxy and component. | Streaming/SimpleStreamableAssetManager.h | |
static FSSAMPrimitiveHandle ClearPrimitiveHandle
(
FPrimitiveSceneProxy* Proxy, |
Streaming/SimpleStreamableAssetManager.h | ||
static void EnqueueOrReleaseCapturedHandle
(
FSSAMAssetHandle CapturedHandle, |
Streaming/SimpleStreamableAssetManager.h | ||
static uint32 GetAllocatedSize() |
Streaming/SimpleStreamableAssetManager.h | ||
static void GetAssetReferenceBounds
(
const UStreamableRenderAsset* Asset, |
Streaming/SimpleStreamableAssetManager.h | ||
static int32 GetAssetRegistrationIndex
(
FSSAMAssetHandle Handle |
Asset registration index accessors. | Streaming/SimpleStreamableAssetManager.h | |
static FCriticalSection * GetCriticalSection() |
Streaming/SimpleStreamableAssetManager.h | ||
static void GetDistanceAndRange
(
const FUpdate& Record, |
Streaming/SimpleStreamableAssetManager.h | ||
static void GetRenderAssetScreenSize
(
EStreamableRenderAssetType AssetType, |
Screen-size query for a tracked asset. | Streaming/SimpleStreamableAssetManager.h | |
static float GetStreamingScaleFactor
(
const FPrimitiveSceneProxy* Object, |
Streaming/SimpleStreamableAssetManager.h | ||
static void Init() |
Streaming/SimpleStreamableAssetManager.h | ||
static bool IsAssetRegistered
(
FSSAMAssetHandle Handle |
Cheap predicate for "is this asset tracked by SSAM". | Streaming/SimpleStreamableAssetManager.h | |
static bool IsEnabled() |
Streaming/SimpleStreamableAssetManager.h | ||
static void Process() |
Streaming/SimpleStreamableAssetManager.h | ||
static void ProcessFallbackRegistrations_GameThread() |
Streaming/SimpleStreamableAssetManager.h | ||
static void PushRegisterRecord
(
FRegister&& Record |
Low-level record-queue primitives. | Streaming/SimpleStreamableAssetManager.h | |
static void PushUnregisterRecord
(
FUnregister&& Record |
Streaming/SimpleStreamableAssetManager.h | ||
static void PushUpdateLastRenderTimeRecord
(
FUpdateLastRenderTime&& Record |
Streaming/SimpleStreamableAssetManager.h | ||
static void PushUpdateRecord
(
FUpdate&& Record |
Streaming/SimpleStreamableAssetManager.h | ||
static void QueueRegisteredAssetHandleRelease
(
FSSAMAssetHandle Handle |
Queue a captured asset handle for release through the standard RemovedAssetsRecords drain. | Streaming/SimpleStreamableAssetManager.h | |
static void RecoverMissedUnregister
(
FSSAMPrimitiveHandle Handle |
Recovery path for component / proxy teardown that discovers a still-live SSAM handle (a missed Unregister). | Streaming/SimpleStreamableAssetManager.h | |
static void Register
(
IPrimitiveComponent* ComponentInterface, |
Primary registration entry point. | Streaming/SimpleStreamableAssetManager.h | |
static int32 ReleaseAssetHandle
(
FSSAMAssetHandle Handle |
Streaming/SimpleStreamableAssetManager.h | ||
static void SetAssetRegistrationIndex
(
FSSAMAssetHandle Handle, |
Streaming/SimpleStreamableAssetManager.h | ||
static bool ShouldConsiderVisibility() |
Streaming/SimpleStreamableAssetManager.h | ||
static void Shutdown() |
Streaming/SimpleStreamableAssetManager.h | ||
static void Unregister
(
IPrimitiveComponent* ComponentInterface, |
Streaming/SimpleStreamableAssetManager.h | ||
static void UnregisterAsset
(
UStreamableRenderAsset* InAsset |
Streaming/SimpleStreamableAssetManager.h | ||
static void UpdateBoundSizes
(
const TArray< FStreamingViewInfo >& ViewInfos, |
Streaming/SimpleStreamableAssetManager.h | ||
static void UpdateLastRenderTime
(
const FPrimitiveSceneProxy* Proxy, |
Last-rendered-time update. | Streaming/SimpleStreamableAssetManager.h | |
static void UpdateStreamingState
(
const FPrimitiveSceneProxy* Proxy, |
Refresh the streaming-relevant state for a registered primitive: bounds, streaming scale factor (derived from LocalToWorld), MinDrawDistance, MaxDrawDistance, on-screen LastRenderTime, and ForceMipStreaming. | Streaming/SimpleStreamableAssetManager.h |