From ed15e306da84461e8c00333a68457d1c38c8a0b0 Mon Sep 17 00:00:00 2001 From: Michael Delva Date: Sat, 10 May 2025 21:52:54 +0200 Subject: [PATCH 1/2] Don't register twice the same savable pointer --- .../Private/GameFramework/SaveGame/GBFSaveGameSubsystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGameSubsystem.cpp b/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGameSubsystem.cpp index c1eeebe1..2db7546f 100644 --- a/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGameSubsystem.cpp +++ b/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGameSubsystem.cpp @@ -184,7 +184,7 @@ void UGBFSaveGameSubsystem::RegisterSavable( const TScriptInterface< IGBFSaveGam } else { - PendingSavables.Add( savable ); + PendingSavables.AddUnique( savable ); } } From f902f5ec1efbcc82ac41e0a9e3f4b272928a38ff Mon Sep 17 00:00:00 2001 From: Michael Delva Date: Sat, 10 May 2025 23:14:41 +0200 Subject: [PATCH 2/2] Load savable when registered --- .../Private/GameFramework/SaveGame/GBFSaveGame.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGame.cpp b/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGame.cpp index b10f1dbe..d9f80941 100644 --- a/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGame.cpp +++ b/Source/GameBaseFramework/Private/GameFramework/SaveGame/GBFSaveGame.cpp @@ -108,7 +108,8 @@ void UGBFSaveGame::RegisterSavable( TScriptInterface< IGBFSaveGameSystemSavableI } else { - SavablesData.Emplace_GetRef( savable, FSoftClassPath( savable.GetObject()->GetClass() ), TArray< uint8 >() ); + auto & savable_data = SavablesData.Emplace_GetRef( savable, FSoftClassPath( savable.GetObject()->GetClass() ), TArray< uint8 >() ); + TryLoadSavable( savable_data ); } }