From 584d13d7f42842385bc97fcf35798c45ff8a0891 Mon Sep 17 00:00:00 2001 From: Michael Delva Date: Wed, 7 May 2025 21:44:15 +0200 Subject: [PATCH] Added virtual function to allow child classes to add startup jobs --- .../Private/Engine/GBFAssetManager.cpp | 16 ++++++++++++++++ .../Public/Engine/GBFAssetManager.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/Source/GameBaseFramework/Private/Engine/GBFAssetManager.cpp b/Source/GameBaseFramework/Private/Engine/GBFAssetManager.cpp index db2f7cfc..fd920932 100644 --- a/Source/GameBaseFramework/Private/Engine/GBFAssetManager.cpp +++ b/Source/GameBaseFramework/Private/Engine/GBFAssetManager.cpp @@ -58,6 +58,16 @@ void UGBFAssetManager::AddStartupJob( const FString & job_name, const TFunction< weight ) ); } +void UGBFAssetManager::AddStartupJobWithHandle( const FString & job_name, const TFunction< TSharedPtr< FStreamableHandle >() > & function, float weight ) +{ + StartupJobs.Add( FGBFAssetManagerStartupJob( + job_name, + [ this, function ]( const FGBFAssetManagerStartupJob & startup_job, TSharedPtr< FStreamableHandle > & load_handle ) { + load_handle = function(); + }, + weight ) ); +} + void UGBFAssetManager::LoadGameData() { } @@ -76,10 +86,16 @@ void UGBFAssetManager::StartInitialLoading() }, 1.0f ); + PreDoStartupJobs(); + // Run all the queued up startup jobs DoAllStartupJobs(); } +void UGBFAssetManager::PreDoStartupJobs() +{ +} + void UGBFAssetManager::InitializeGameplayCueManager() { SCOPED_BOOT_TIMING( "UGBFAssetManager::InitializeGameplayCueManager" ); diff --git a/Source/GameBaseFramework/Public/Engine/GBFAssetManager.h b/Source/GameBaseFramework/Public/Engine/GBFAssetManager.h index 647fcd94..9888a87e 100644 --- a/Source/GameBaseFramework/Public/Engine/GBFAssetManager.h +++ b/Source/GameBaseFramework/Public/Engine/GBFAssetManager.h @@ -33,8 +33,10 @@ class GAMEBASEFRAMEWORK_API UGBFAssetManager : public UAssetManager const GameDataClass & GetOrLoadTypedGameData( const TSoftObjectPtr< GameDataClass > & data_path ); void AddStartupJob( const FString & job_name, const TFunction< void() > & function, float weight ); + void AddStartupJobWithHandle( const FString & job_name, const TFunction< TSharedPtr< FStreamableHandle >() > & function, float weight ); virtual void LoadGameData(); void StartInitialLoading() override; + virtual void PreDoStartupJobs(); private: void InitializeGameplayCueManager();