From 77e6aafc793826ee5853910cd31b80461638ec16 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 5 Nov 2023 19:36:09 +0100 Subject: [PATCH] Fix crash when not clearing Online Platform in Editor before hot-reload #1873 --- Source/Engine/Online/Online.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Source/Engine/Online/Online.cpp b/Source/Engine/Online/Online.cpp index bb79c6d60..d8f85baea 100644 --- a/Source/Engine/Online/Online.cpp +++ b/Source/Engine/Online/Online.cpp @@ -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;