Exemplo n.º 1
0
    public void DeleteTargetActors()
    {
        VoosActor builtin = targetActors.FirstOrDefault(a => a.IsBuiltinActor());

        if (builtin != null)
        {
            popups.Show($"Sorry, built-in actors such as {builtin.GetDisplayName()} cannot be deleted.", "OK");
        }
        var deletableActors = targetActors.Where(a => a != null && !a.IsLockedByAnother() && !a.IsBuiltinActor()).ToList();

        if (deletableActors.Count == 0)
        {
            return;
        }
        var actorStates = engine.SaveActorHierarchy(deletableActors);
        var label       = deletableActors.Count > 1 ? $"Delete {deletableActors.Count} actors" : $"Delete {deletableActors[0].GetDisplayName()}";

        undoStack.Push(new UndoStack.Item
        {
            actionLabel           = label,
            getUnableToDoReason   = () => null,
            getUnableToUndoReason = () => null,
            doIt = () =>
            {
                foreach (var state in actorStates)
                {
                    ActorUndoUtil.GetValidActorThen(
                        engine, state.name,
                        validActor => this.DeleteActor(validActor));
                }
            },
            undo = () => engine.RestoreActorHierarchy(actorStates)
        });

        SetCameraFollowingActor(false);
    }