Exemplo n.º 1
0
    public static void SetCurrentParentForActor(
        VoosActor actor, VoosActor selectedActor, UndoStack undoStack, bool autosetParent = false)
    {
        string newParentName       = selectedActor?.GetName();
        string prevParentName      = actor.GetTransformParent();
        string prevSpawnParentName = actor.GetSpawnTransformParent();

        undoStack.PushUndoForActor(
            actor,
            $"Set actor parent",
            (undoActor) =>
        {
            VoosActor newParent = undoActor.GetEngine().GetActor(newParentName);
            string parentName   = VoosActor.IsValidParent(undoActor, newParent) ? newParent?.GetName() : null;
            undoActor.SetTransformParent(parentName);
            if (autosetParent)
            {
                undoActor.SetSpawnTransformParent(parentName);
            }
        },
            (undoActor) =>
        {
            VoosActor prevParent = undoActor.GetEngine().GetActor(prevParentName);
            undoActor.SetTransformParent(VoosActor.IsValidParent(undoActor, prevParent) ? prevParent?.GetName() : null);
            if (autosetParent)
            {
                VoosActor prevSpawnParent = undoActor.GetEngine().GetActor(prevSpawnParentName);
                undoActor.SetSpawnTransformParent(
                    VoosActor.IsValidParent(undoActor, prevSpawnParent) ? prevSpawnParent?.GetName() : null);
            }
        });
    }
Exemplo n.º 2
0
    void SetActorSpawnPosition(VoosActor actor, Vector3 newPosition, bool setParent = false, string spawnParent = null)
    {
        Vector3    currPosition = actor.GetSpawnPosition();
        Quaternion currRotation = actor.GetSpawnRotation();
        string     currParent   = actor.GetSpawnTransformParent();

        undoStack.PushUndoForActor(
            actor,
            $"Set actor spawn position",
            (undoActor) =>
        {
            undoActor.SetSpawnPosition(newPosition);
            undoActor.SetSpawnRotation(currRotation);
            if (setParent)
            {
                VoosActor setSpawnParent = undoActor.GetEngine().GetActor(spawnParent);
                undoActor.SetSpawnTransformParent(setSpawnParent?.GetName());
            }
        },
            (undoActor) =>
        {
            undoActor.SetSpawnPosition(currPosition);
            undoActor.SetSpawnRotation(currRotation);
            if (setParent)
            {
                VoosActor setSpawnParent = undoActor.GetEngine().GetActor(currParent);
                undoActor.SetSpawnTransformParent(setSpawnParent?.GetName());
            }
        }
            );
    }
Exemplo n.º 3
0
 bool IsValidSpawnParent(VoosActor actor, VoosActor parent)
 {
     // Check for self or cycles
     while (parent != null)
     {
         if (parent == actor)
         {
             Util.Log($"Cycle detected!");
             return(false);
         }
         parent = actor.GetEngine().GetActor(parent.GetSpawnTransformParent());
     }
     return(true);
 }
Exemplo n.º 4
0
    private void ActorUpdate(VoosActor actor)
    {
        assetUI.header.text = $"{actor.GetDisplayName()} : Move";
        UpdateVec3Input(actor.GetPosition(), assetUI.currentInputs);
        UpdateVec3Input(actor.GetSpawnPosition(), assetUI.spawnInputs);
        UpdateVec3Input(actor.GetRenderableOffset(), assetUI.offsetInputs);
        VoosActor parent = actor.GetEngine().GetActor(actor.GetTransformParent());

        assetUI.currentParentButtonText.text = parent != null?parent.GetDisplayName() : "<none>";

        VoosActor spawnParent = actor.GetEngine().GetActor(actor.GetSpawnTransformParent());

        assetUI.restartParentButtonText.text = spawnParent != null?spawnParent.GetDisplayName() : "<none>";
    }
Exemplo n.º 5
0
    private void SetSpawnParent()
    {
        VoosActor actor = editMain.GetSingleTargetActor();

        SelectActor((selectedActor) =>
        {
            string newParentName  = selectedActor?.GetName();
            string prevParentName = actor.GetSpawnTransformParent();
            undoStack.PushUndoForActor(
                actor,
                $"Set actor parent on reset",
                (undoActor) =>
            {
                VoosActor newParent = undoActor.GetEngine().GetActor(newParentName);
                undoActor.SetSpawnTransformParent(VoosActor.IsValidParent(undoActor, newParent) ? newParent?.GetName() : null);
            },
                (undoActor) =>
            {
                VoosActor prevParent = undoActor.GetEngine().GetActor(prevParentName);
                undoActor.SetSpawnTransformParent(VoosActor.IsValidParent(undoActor, prevParent) ? prevParent?.GetName() : null);
            }
                );
        });
    }