You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
UE-16930 - Fixed an issue where setting the game mode to a BP type could result in a null game mode due to the BP never being loaded
[CL 2585432 by Jamie Dale in Main branch]
This commit is contained in:
committed by
Jamie.Dale@epicgames.com
parent
14a59a5941
commit
68d5e367fe
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "IDocumentation.h"
|
||||
#include "KismetEditorUtilities.h"
|
||||
#include "EditorClassUtils.h"
|
||||
#include "GameFramework/GameMode.h"
|
||||
#include "Engine/BlueprintGeneratedClass.h"
|
||||
|
||||
@@ -168,23 +169,14 @@ public:
|
||||
FString ClassName;
|
||||
DefaultGameModeClassHandle->GetValueAsFormattedString(ClassName);
|
||||
|
||||
if (ClassName.IsEmpty() || ClassName == "None")
|
||||
// Do we have a valid cached class pointer? (Note: We can't search for the class while a save is happening)
|
||||
const UClass* GameModeClass = CachedGameModeClass.Get();
|
||||
if ((!GameModeClass || GameModeClass->GetPathName() != ClassName) && !GIsSavingPackage)
|
||||
{
|
||||
CachedGameModeClass = nullptr;
|
||||
return nullptr;
|
||||
GameModeClass = FEditorClassUtils::GetClassFromString(ClassName);
|
||||
CachedGameModeClass = GameModeClass;
|
||||
}
|
||||
|
||||
FString StrippedClassName = ClassName;
|
||||
ConstructorHelpers::StripObjectClass(StrippedClassName);
|
||||
|
||||
// Just returned the cached value if it's already up-to-date, or if we're saving packages since we can't search for the object while a save is happening
|
||||
if ((CachedGameModeClass && CachedGameModeClass->GetPathName() == StrippedClassName) || GIsSavingPackage)
|
||||
{
|
||||
return CachedGameModeClass;
|
||||
}
|
||||
|
||||
CachedGameModeClass = FindObject<UClass>(ANY_PACKAGE, *StrippedClassName);
|
||||
return CachedGameModeClass;
|
||||
return GameModeClass;
|
||||
}
|
||||
|
||||
void SetCurrentGameModeClass(const UClass* NewGameModeClass)
|
||||
@@ -346,7 +338,7 @@ private:
|
||||
/** Handle to the DefaultGameMode property */
|
||||
TSharedPtr<IPropertyHandle> DefaultGameModeClassHandle;
|
||||
/** Cached class pointer from the DefaultGameModeClassHandle */
|
||||
mutable const UClass* CachedGameModeClass;
|
||||
mutable TWeakObjectPtr<UClass> CachedGameModeClass;
|
||||
};
|
||||
|
||||
#undef LOCTEXT_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user