示例#1
0
    private void Paste()
    {
        List <VoosEngine.CopyPasteActorRequest> copyPasteRequests = new List <VoosEngine.CopyPasteActorRequest>();

        foreach (KeyValuePair <VoosActor, GameObject> entry in pastePreview)
        {
            if (entry.Key == null)
            {
                continue;
            }

            VoosActor baseActor = entry.Key.GetCloneParentActor() ?? entry.Key;
            if (baseActor.IsLockedByAnother() || baseActor == null)
            {
                continue;
            }

            int        count    = voosEngine.CountCopiesOf(baseActor);
            string     baseName = baseActor.GetDisplayName();
            string     copyName = baseName + "-" + (count + 1);
            Vector3    position = entry.Value.transform.position;
            Quaternion rotation = entry.Key.GetRotation();

            copyPasteRequests.Add(new VoosEngine.CopyPasteActorRequest
            {
                source            = entry.Key,
                pastedPosition    = position,
                pastedRotation    = rotation,
                pastedDisplayName = copyName
            });
        }

        List <VoosActor> pastedActors = voosEngine.CopyPasteActors(copyPasteRequests);

        undoStack.PushUndoForCreatingActors(pastedActors, $"Paste {pastedActors.Count} actors");
    }