Open 3D Engine AzCore API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZ::Data::AssetContainer Class Reference

Inherits AZ::Data::AssetLoadBus::MultiHandler.

Public Types

using DependencyList = AZStd::unordered_map< AZ::Data::AssetId, AZ::Data::Asset< AssetData > >
 

Public Member Functions

 AZ_CLASS_ALLOCATOR (AssetContainer, SystemAllocator)
 
 AssetContainer (Asset< AssetData > asset, const AssetLoadParameters &loadParams, bool isReload=false)
 
bool IsReady () const
 
bool IsLoading () const
 
bool IsValid () const
 
Asset< AssetDataGetRootAsset ()
 
AssetId GetContainerAssetId ()
 
void ClearRootAsset ()
 
 operator bool () const
 
const DependencyListGetDependencies () const
 
int GetNumWaitingDependencies () const
 
int GetInvalidDependencies () const
 
void ListWaitingAssets () const
 
void ListWaitingPreloads (const AZ::Data::AssetId &assetId) const
 
const AZStd::unordered_set< AZ::Data::AssetId > & GetUnloadedDependencies () const
 
void OnAssetDataLoaded (AZ::Data::Asset< AZ::Data::AssetData > asset) override
 
void OnAssetReady (Asset< AssetData > asset) override
 
void OnAssetReloaded (Asset< AssetData > asset) override
 
void OnAssetError (Asset< AssetData > asset) override
 
void OnAssetReloadError (Asset< AssetData > asset) override
 

Protected Member Functions

virtual AZStd::vector< AZStd::pair< AssetInfo, Asset< AssetData > > > CreateAndQueueDependentAssets (const AZStd::vector< AssetInfo > &dependencyInfoList, const AssetLoadParameters &loadParamsCopyWithNoLoadingFilter)
 
void AddWaitingAsset (const AZ::Data::AssetId &waitingAsset)
 
void AddWaitingAssets (const AZStd::vector< AZ::Data::AssetId > &waitingAssets)
 
void RemoveWaitingAsset (const AZ::Data::AssetId &waitingAsset)
 
void ClearWaitingAssets ()
 
void CheckReady ()
 
void AddDependency (const Asset< AssetData > &newDependency)
 
void AddDependency (Asset< AssetData > &&addDependency)
 
void AddDependentAssets (Asset< AssetData > rootAsset, const AssetLoadParameters &loadParams)
 
void SetupPreloadLists (PreloadAssetListType &&preloadList, const AZ::Data::AssetId &rootAssetId)
 
bool HasPreloads (const AZ::Data::AssetId &assetId) const
 
void RemoveFromWaitingPreloads (const AZ::Data::AssetId &waitingId, const AZ::Data::AssetId &preloadAssetId)
 
void RemoveFromAllWaitingPreloads (const AZ::Data::AssetId &assetId)
 
Asset< AssetDataGetAssetData (const AZ::Data::AssetId &assetId) const
 
void HandleReadyAsset (AZ::Data::Asset< AZ::Data::AssetData > asset)
 

Protected Attributes

AssetInternal::WeakAsset< AssetDatam_rootAsset
 
AssetId m_containerAssetId
 
bool m_isReload { false }
 
AZStd::recursive_mutex m_dependencyMutex
 
DependencyList m_dependencies
 
AZStd::recursive_mutex m_readyMutex
 
AZStd::set< AssetIdm_waitingAssets
 
AZStd::atomic_int m_waitingCount {0}
 
AZStd::atomic_int m_invalidDependencies { 0 }
 
AZStd::unordered_set< AZ::Data::AssetIdm_unloadedDependencies
 
AZStd::atomic_bool m_initComplete { false }
 
AZStd::atomic_bool m_finalNotificationSent {false}
 
AZStd::recursive_mutex m_preloadMutex
 
PreloadAssetListType m_preloadList
 
PreloadAssetListType m_preloadWaitList
 

Member Function Documentation

◆ GetContainerAssetId()

AssetId AZ::Data::AssetContainer::GetContainerAssetId ( )

Get a reference to the asset id for the asset the container was originally created for. Even if the root asset has been cleared, this will still contain the originally-requested id.

◆ GetRootAsset()

Asset< AssetData > AZ::Data::AssetContainer::GetRootAsset ( )

Get a reference to the current root asset. This will either be the asset the container was originally created for, or invalid if the asset load has been canceled.


The documentation for this class was generated from the following file: