Fix crash when not clearing Online Platform in Editor before hot-reload

#1873
This commit is contained in:
Wojtek Figat
2023-11-05 19:36:09 +01:00
parent c23f8f2b30
commit 77e6aafc79

View File

@@ -4,6 +4,9 @@
#include "IOnlinePlatform.h"
#include "Engine/Core/Log.h"
#include "Engine/Engine/EngineService.h"
#if USE_EDITOR
#include "Engine/Scripting/Scripting.h"
#endif
#include "Engine/Scripting/ScriptingObject.h"
class OnlineService : public EngineService
@@ -25,6 +28,16 @@ IOnlinePlatform* Online::Platform = nullptr;
Action Online::PlatformChanged;
OnlineService OnlineServiceInstance;
#if USE_EDITOR
void OnOnlineScriptsReloading()
{
// Dispose any active platform
Online::Initialize(nullptr);
}
#endif
bool Online::Initialize(IOnlinePlatform* platform)
{
if (Platform == platform)
@@ -34,6 +47,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
if (Platform)
{
#if USE_EDITOR
Scripting::ScriptsReloading.Unbind(OnOnlineScriptsReloading);
#endif
Platform->Deinitialize();
}
Platform = platform;
@@ -45,6 +61,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
LOG(Error, "Failed to initialize online platform.");
return true;
}
#if USE_EDITOR
Scripting::ScriptsReloading.Bind(OnOnlineScriptsReloading);
#endif
}
return false;