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)
{