From 463e981d39494e8b081ccae5543b0f322a7a515b Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Fri, 1 Jan 2021 20:20:38 +0100 Subject: [PATCH] GamePlugin only used in PlayMode/Cooked game. --- Source/Editor/States/PlayingState.cs | 4 ++ .../Engine/Scripting/Plugins/PluginManager.cs | 42 +++++++++++++++---- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/Source/Editor/States/PlayingState.cs b/Source/Editor/States/PlayingState.cs index c5d1eee0d..0505a92a1 100644 --- a/Source/Editor/States/PlayingState.cs +++ b/Source/Editor/States/PlayingState.cs @@ -135,6 +135,8 @@ namespace FlaxEditor.States SceneDuplicated?.Invoke(); RestoreSelection(); + PluginManager.InitializeGamePlugins(); + Editor.OnPlayBegin(); } @@ -175,6 +177,8 @@ namespace FlaxEditor.States IsPaused = true; RestoreSelection(); + PluginManager.DeinitializeGamePlugins(); + Editor.OnPlayEnd(); } } diff --git a/Source/Engine/Scripting/Plugins/PluginManager.cs b/Source/Engine/Scripting/Plugins/PluginManager.cs index d328c8848..aa717b484 100644 --- a/Source/Engine/Scripting/Plugins/PluginManager.cs +++ b/Source/Engine/Scripting/Plugins/PluginManager.cs @@ -77,6 +77,28 @@ namespace FlaxEngine //return !pluginDesc.DisabledByDefault; } + /// + /// Initialize all + /// + public static void InitializeGamePlugins() + { + foreach (var gamePlugin in _gamePlugins) + { + InvokeInitialize(gamePlugin); + } + } + + /// + /// Deinitialize all + /// + public static void DeinitializeGamePlugins() + { + foreach (var gamePlugin in _gamePlugins) + { + InvokeDeinitialize(gamePlugin); + } + } + private static void InvokeInitialize(Plugin plugin) { try @@ -173,14 +195,20 @@ namespace FlaxEngine return; } - // Init - InvokeInitialize(plugin); - - // Register - if (isEditor) - _editorPlugins.Add(plugin); - else + if (!isEditor) + { _gamePlugins.Add((GamePlugin)plugin); +#if !FLAX_EDITOR + InvokeInitialize(plugin); +#endif + } +#if FLAX_EDITOR + else + { + _editorPlugins.Add(plugin); + InvokeInitialize(plugin); + } +#endif } internal static void Internal_Dispose(Assembly assembly)