diff --git a/Source/Editor/Modules/SourceCodeEditing/CachedTypesCollection.cs b/Source/Editor/Modules/SourceCodeEditing/CachedTypesCollection.cs index a73c3d2ee..648ec74e3 100644 --- a/Source/Editor/Modules/SourceCodeEditing/CachedTypesCollection.cs +++ b/Source/Editor/Modules/SourceCodeEditing/CachedTypesCollection.cs @@ -45,6 +45,21 @@ namespace FlaxEditor.Modules.SourceCodeEditing _checkAssembly = checkAssembly; } + /// + /// Gets the type matching the certain Script. + /// + /// The content item. + /// The type matching that item, or null if not found. + public ScriptType Get(Content.ScriptItem script) + { + foreach (var type in Get()) + { + if (type.ContentItem == script) + return type; + } + return ScriptType.Null; + } + /// /// Gets all the types from the all loaded assemblies (including project scripts and scripts from the plugins). /// diff --git a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs index 64def3eae..bf39a501b 100644 --- a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs +++ b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs @@ -693,12 +693,9 @@ namespace FlaxEditor.SceneGraph.GUI for (int i = 0; i < _dragScriptItems.Objects.Count; i++) { var item = _dragScriptItems.Objects[i]; - // Find actors with the same content item and spawn them. - foreach (var actorType in Editor.Instance.CodeEditing.Actors.Get()) + var actorType = Editor.Instance.CodeEditing.Actors.Get(item); + if (actorType != ScriptType.Null) { - if (actorType.ContentItem != item) - continue; - var actor = actorType.CreateInstance() as Actor; if (actor == null) { @@ -768,10 +765,7 @@ namespace FlaxEditor.SceneGraph.GUI private static bool ValidateDragScriptItem(ScriptItem script) { - var actors = Editor.Instance.CodeEditing.Actors.Get(); - if (actors.Any(x => x.ContentItem == script)) - return true; - return false; + return Editor.Instance.CodeEditing.Actors.Get(script) != ScriptType.Null; } /// diff --git a/Source/Editor/Viewport/MainEditorGizmoViewport.cs b/Source/Editor/Viewport/MainEditorGizmoViewport.cs index c501def33..ed6bd4915 100644 --- a/Source/Editor/Viewport/MainEditorGizmoViewport.cs +++ b/Source/Editor/Viewport/MainEditorGizmoViewport.cs @@ -943,10 +943,7 @@ namespace FlaxEditor.Viewport private static bool ValidateDragScriptItem(ScriptItem script) { - var actors = Editor.Instance.CodeEditing.Actors.Get(); - if (actors.Any(x => x.ContentItem == script)) - return true; - return false; + return Editor.Instance.CodeEditing.Actors.Get(script) != ScriptType.Null; } /// diff --git a/Source/Editor/Viewport/PrefabWindowViewport.cs b/Source/Editor/Viewport/PrefabWindowViewport.cs index a46002028..6c1509de8 100644 --- a/Source/Editor/Viewport/PrefabWindowViewport.cs +++ b/Source/Editor/Viewport/PrefabWindowViewport.cs @@ -702,13 +702,10 @@ namespace FlaxEditor.Viewport { return true; } - + private static bool ValidateDragScriptItem(ScriptItem script) { - var actors = Editor.Instance.CodeEditing.Actors.Get(); - if (actors.Any(x => x.ContentItem == script)) - return true; - return false; + return Editor.Instance.CodeEditing.Actors.Get(script) != ScriptType.Null; } /// diff --git a/Source/Editor/Viewport/ViewportDraggingHelper.cs b/Source/Editor/Viewport/ViewportDraggingHelper.cs index 83c9cfab0..52e52b37f 100644 --- a/Source/Editor/Viewport/ViewportDraggingHelper.cs +++ b/Source/Editor/Viewport/ViewportDraggingHelper.cs @@ -203,12 +203,9 @@ namespace FlaxEditor.Viewport private void Spawn(ScriptItem item, SceneGraphNode hit, ref Float2 location, ref Vector3 hitLocation, ref Vector3 hitNormal) { - // Find actors with the same content item and spawn them. - foreach (var actorType in Editor.Instance.CodeEditing.Actors.Get()) + var actorType = Editor.Instance.CodeEditing.Actors.Get(item); + if (actorType != ScriptType.Null) { - if (actorType.ContentItem != item) - continue; - Spawn(actorType, hit, ref location, ref hitLocation, ref hitNormal); } } diff --git a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs index 351dd3f62..9418e7b75 100644 --- a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs +++ b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs @@ -85,13 +85,10 @@ namespace FlaxEditor.Windows.Assets { return true; } - + private static bool ValidateDragScriptItem(ScriptItem script) { - var actors = Editor.Instance.CodeEditing.Actors.Get(); - if (actors.Any(x => x.ContentItem == script)) - return true; - return false; + return Editor.Instance.CodeEditing.Actors.Get(script); } /// @@ -185,12 +182,9 @@ namespace FlaxEditor.Windows.Assets for (int i = 0; i < _dragScriptItems.Objects.Count; i++) { var item = _dragScriptItems.Objects[i]; - // Find actors with the same content item and spawn them. - foreach (var actorType in Editor.Instance.CodeEditing.Actors.Get()) + var actorType = Editor.Instance.CodeEditing.Actors.Get(item); + if (actorType != ScriptType.Null) { - if (actorType.ContentItem != item) - continue; - var actor = actorType.CreateInstance() as Actor; if (actor == null) { diff --git a/Source/Editor/Windows/SceneTreeWindow.cs b/Source/Editor/Windows/SceneTreeWindow.cs index 9385fb781..97bf85b35 100644 --- a/Source/Editor/Windows/SceneTreeWindow.cs +++ b/Source/Editor/Windows/SceneTreeWindow.cs @@ -274,13 +274,10 @@ namespace FlaxEditor.Windows { return true; } - + private static bool ValidateDragScriptItem(ScriptItem script) { - var actors = Editor.Instance.CodeEditing.Actors.Get(); - if (actors.Any(x => x.ContentItem == script)) - return true; - return false; + return Editor.Instance.CodeEditing.Actors.Get(script) != ScriptType.Null; } /// @@ -468,12 +465,9 @@ namespace FlaxEditor.Windows for (int i = 0; i < _dragScriptItems.Objects.Count; i++) { var item = _dragScriptItems.Objects[i]; - // Find actors with the same content item and spawn them. - foreach (var actorType in Editor.Instance.CodeEditing.Actors.Get()) + var actorType = Editor.Instance.CodeEditing.Actors.Get(item); + if (actorType != ScriptType.Null) { - if (actorType.ContentItem != item) - continue; - var actor = actorType.CreateInstance() as Actor; if (actor == null) {