public virtual void TriggerMove(MoveTriggerType t, MovementType m = MovementType.Exp) { if (TargetPosition != null) { if (!IsMoving) { StartPosition = transform.position; EndPosition = TargetPosition.position; IsMoving = true; LastMovementTriggerType = t; ObjectMovementType = m; } } }
public override void TriggerMove(MoveTriggerType t, MovementType m = MovementType.Exp) { base.TriggerMove(t); if (DiagonalNeighbour != null) { if (IsTransitioningToPositionStateByTriggerType(PositionState.Original, MoveTriggerType.Player)) { if (DiagonalNeighbour.IsInOrChangingToPositionState(PositionState.Original)) { DiagonalNeighbour.TriggerMove(MoveTriggerType.Environment); } } } if (VerticalNeighbour != null) { if (IsTransitioningToPositionStateByTriggerType(PositionState.Transformed, MoveTriggerType.Player)) { if (VerticalNeighbour.IsInOrChangingToPositionState(PositionState.Transformed)) { VerticalNeighbour.TriggerMove(MoveTriggerType.Environment); } } } }
public bool HasBeenMovedToPositionByTriggerType(PositionState p, MoveTriggerType t) { return((IsInStaticPosition(p) && LastMovementTriggerType == t) || IsTransitioningToPositionStateByTriggerType(p, t)); }
public bool IsTransitioningToPositionStateByTriggerType(PositionState p, MoveTriggerType t) { return(IsMoving && ObjectPositionState != p && LastMovementTriggerType == t); }
public bool IsInPositionStateOrHasBeenTriggered(PositionState p, MoveTriggerType t) { return(IsInStaticPosition(p) || IsTransitioningToPositionStateByTriggerType(p, t)); }