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;