diff --git a/Source/Editor/States/PlayingState.cs b/Source/Editor/States/PlayingState.cs
index 01b746154..bcc982235 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 867dd9a91..60c9ade20 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)