public Vector2 GetPreviousSimulationStep(Board board)
 {
     if (displacement.type == UnitDisplacementType.RELATIVE && !CheckCoordinateEquality(current, displacement.GetStartCoordinate()))
     {
         RelativeDisplacement rd = (RelativeDisplacement)displacement;
         Vector2 prev            = current - rd.GetUnitStep();
         if (board.CheckCoord(new Vector2(Mathf.Round(prev.x), Mathf.Round(prev.y))))
         {
             current = prev;
         }
         else
         {
             outOfBounds = true;
         }
     }
     else if (displacement.type == UnitDisplacementType.ABSOLUTE)
     {
         current = displacement.GetStartCoordinate();
     }
     return(GetCurrentVector());
 }
 public Vector2 GetNextSimulationStep(Board board)
 {
     if (displacement.type == UnitDisplacementType.RELATIVE && !CheckCoordinateEquality(current, result))
     {
         RelativeDisplacement rd = (RelativeDisplacement)displacement;
         Vector2 next            = current + rd.GetUnitStep();
         if (board.CheckCoord(new Vector2(Mathf.Round(next.x), Mathf.Round(next.y))))
         {
             current = next;
         }
         else
         {
             outOfBounds = true;
         }
     }
     else if (displacement.type == UnitDisplacementType.ABSOLUTE)
     {
         current = result;
     }
     return(GetCurrentVector());
 }