Improve #2100 and fix undo
This commit is contained in:
@@ -542,24 +542,27 @@ namespace FlaxEditor.Modules
|
||||
Actor actor = new EmptyActor();
|
||||
Editor.SceneEditing.Spawn(actor, null, false);
|
||||
List<SceneGraphNode> selection = Editor.SceneEditing.Selection;
|
||||
for (int i = 0; i < selection.Count; i++)
|
||||
var actors = selection.Where(x => x is ActorNode).Select(x => ((ActorNode)x).Actor);
|
||||
using (new UndoMultiBlock(Undo, actors, "Reparent actors"))
|
||||
{
|
||||
if (selection[i] is ActorNode node)
|
||||
for (int i = 0; i < selection.Count; i++)
|
||||
{
|
||||
if (node.ParentNode != node.ParentScene) // if parent node is not Scene
|
||||
if (selection[i] is ActorNode node)
|
||||
{
|
||||
if (selection.Contains(node.ParentNode))
|
||||
if (node.ParentNode != node.ParentScene) // If parent node is not a scene
|
||||
{
|
||||
return; // if parent and child nodes selected together, don't touch child nodes
|
||||
}
|
||||
else
|
||||
{ // put created node as child of the Parent Node of node
|
||||
if (selection.Contains(node.ParentNode))
|
||||
{
|
||||
return; // If parent and child nodes selected together, don't touch child nodes
|
||||
}
|
||||
|
||||
// Put created node as child of the Parent Node of node
|
||||
int parentOrder = node.Actor.OrderInParent;
|
||||
actor.Parent = node.Actor.Parent;
|
||||
actor.OrderInParent = parentOrder;
|
||||
}
|
||||
node.Actor.Parent = actor;
|
||||
}
|
||||
node.Actor.Parent = actor;
|
||||
}
|
||||
}
|
||||
Editor.SceneEditing.Select(actor);
|
||||
|
||||
Reference in New Issue
Block a user