diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs
index 6334225fd..86479b696 100644
--- a/Source/Editor/Modules/SceneModule.cs
+++ b/Source/Editor/Modules/SceneModule.cs
@@ -22,14 +22,25 @@ namespace FlaxEditor.Modules
///
public class ScenesRootNode : RootNode
{
+ private readonly Editor _editor;
+
+ ///
+ public ScenesRootNode()
+ {
+ _editor = Editor.Instance;
+ }
+
///
public override void Spawn(Actor actor, Actor parent)
{
- Editor.Instance.SceneEditing.Spawn(actor, parent);
+ _editor.SceneEditing.Spawn(actor, parent);
}
///
public override Undo Undo => Editor.Instance.Undo;
+
+ ///
+ public override List Selection => _editor.SceneEditing.Selection;
}
///
diff --git a/Source/Editor/SceneGraph/Actors/SplineNode.cs b/Source/Editor/SceneGraph/Actors/SplineNode.cs
index b4914941a..7f9e4ca70 100644
--- a/Source/Editor/SceneGraph/Actors/SplineNode.cs
+++ b/Source/Editor/SceneGraph/Actors/SplineNode.cs
@@ -29,7 +29,7 @@ namespace FlaxEditor.SceneGraph.Actors
public override bool CanBeSelectedDirectly => true;
- public override bool CanDuplicate => true;
+ public override bool CanDuplicate => !Root?.Selection.Contains(ParentNode) ?? true;
public override bool CanDelete => true;
diff --git a/Source/Editor/SceneGraph/RootNode.cs b/Source/Editor/SceneGraph/RootNode.cs
index 10af88489..485c656b1 100644
--- a/Source/Editor/SceneGraph/RootNode.cs
+++ b/Source/Editor/SceneGraph/RootNode.cs
@@ -1,6 +1,7 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
+using System.Collections.Generic;
using FlaxEditor.SceneGraph.Actors;
using FlaxEngine;
@@ -146,5 +147,10 @@ namespace FlaxEditor.SceneGraph
/// Gets the undo.
///
public abstract Undo Undo { get; }
+
+ ///
+ /// Gets the list of selected scene graph nodes in the editor context.
+ ///
+ public abstract List Selection { get; }
}
}
diff --git a/Source/Editor/SceneGraph/SceneGraphNode.cs b/Source/Editor/SceneGraph/SceneGraphNode.cs
index 11c3b7709..76327918d 100644
--- a/Source/Editor/SceneGraph/SceneGraphNode.cs
+++ b/Source/Editor/SceneGraph/SceneGraphNode.cs
@@ -57,7 +57,9 @@ namespace FlaxEditor.SceneGraph
///
public virtual RootNode Root => ParentNode?.Root;
- ///
+ ///
+ /// Gets or sets the transform of the node.
+ ///
public abstract Transform Transform { get; set; }
///
diff --git a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs
index e671ba1de..afba74fbc 100644
--- a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs
+++ b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs
@@ -36,6 +36,9 @@ namespace FlaxEditor.Windows.Assets
///
public override Undo Undo => _window.Undo;
+
+ ///
+ public override List Selection => _window.Selection;
}
///