protected override void ReverseAction(Action _action, float _time) { IAtomicAction _aa = RewindAAFromAction(_history.PointerAction); _currentAA = _aa; if (_currentAA != null) { _currentAA.ReverseAction(_history.PointerAction, _time); } }
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); } }