예제 #1
0
    protected override void ReverseAction(Action _action, float _time)
    {
        IAtomicAction _aa = RewindAAFromAction(_history.PointerAction);

        _currentAA = _aa;
        if (_currentAA != null)
        {
            _currentAA.ReverseAction(_history.PointerAction, _time);
        }
    }
예제 #2
0
    protected override void ReverseAction(Action _action, float _time)
    {
        switch (_action.Type)
        {
        case ActionType.Instantiated:
            Destroy(gameObject);
            break;

        case ActionType.AIMoveForwardUnset:
            _currentAction = new AAMoveForward(this);
            _currentAction.ReverseAction(_action, _time);
            _currentTaskIndex = _action.IValue;
            break;

        case ActionType.AIRotateUnset:
            _currentAction = new AARotate(this);
            _currentAction.ReverseAction(_action, _time);
            _currentTaskIndex = _action.IValue;
            break;

        case ActionType.AIMoveToUnset:
            _currentAction = new AAMoveTo(this);
            _currentAction.ReverseAction(_action, _time);
            _currentTaskIndex = _action.IValue;
            break;

        case ActionType.AIWaitUnset:
            _currentAction = new AAWait();
            _currentAction.ReverseAction(_action, _time);
            _currentTaskIndex = _action.IValue;
            break;

        case ActionType.AIRotateDirUnset:
            _currentAction = new AARotateDir(this);
            _currentAction.ReverseAction(_action, _time);
            _currentTaskIndex = _action.IValue;
            break;

        case ActionType.UnsetTask:
            _currentTask = _action.Task;
            break;

        case ActionType.UnsetInterruption:
            PopInterruption();
            break;

        case ActionType.SetInterruption:
            PushInterruption();
            break;

        case ActionType.SetTask:
            _currentTask = null;
            break;

        case ActionType.LockTrans:
            transform.position = _action.Vector;
            transform.rotation = Quaternion.Euler(_action.SecondVec);
            break;

        case ActionType.AIMoveForward:
        case ActionType.AIMoveTo:
        case ActionType.AIRotate:
        case ActionType.AIWait:
        case ActionType.AIRotateDir:
            _currentAction = null;
            break;

        case ActionType.SpliceFuture:
            _history.ReloadPossibleFuture(_action.PossibleFuture);
            break;
        }
        if (_combat != null)
        {
            _combat.ReverseAction(_action);
        }
    }