예제 #1
0
 /// <summary>
 /// Execute the action for each adjacent coordinate in the order: South, North, Down, Up, East, West.
 /// </summary>
 /// <param name='action'>
 /// Action.
 /// </param>
 public void ForAdjacent(Action <UniversalCoords, Direction> action)
 {
     action(UniversalCoords.FromWorld(this.WorldX + 1, this.WorldY, this.WorldZ), Direction.South);
     action(UniversalCoords.FromWorld(this.WorldX - 1, this.WorldY, this.WorldZ), Direction.North);
     if (this.BlockY > 0)
     {
         action(UniversalCoords.FromWorld(this.WorldX, this.WorldY - 1, this.WorldZ), Direction.Down);
     }
     if (this.BlockY < 127)
     {
         action(UniversalCoords.FromWorld(this.WorldX, this.WorldY + 1, this.WorldZ), Direction.Up);
     }
     action(UniversalCoords.FromWorld(this.WorldX, this.WorldY, this.WorldZ - 1), Direction.East);
     action(UniversalCoords.FromWorld(this.WorldX, this.WorldY, this.WorldZ + 1), Direction.West);
 }
예제 #2
0
 public UniversalCoords Offset(int offsetX, int offsetY, int offsetZ)
 {
     return(UniversalCoords.FromWorld(this.WorldX + offsetX, this.WorldY + offsetY, this.WorldZ + offsetZ));
 }
예제 #3
0
 public static UniversalCoords operator +(UniversalCoords left, UniversalCoords right)
 {
     return(UniversalCoords.FromWorld(left.WorldX + right.WorldX, left.WorldY + right.WorldY, left.WorldZ + right.WorldZ));
 }
예제 #4
0
 /// <summary>
 /// Offset the UniversalCoords by the provided values.
 /// </summary>
 /// <param name="offsetX"></param>
 /// <param name="offsetY"></param>
 /// <param name="offsetZ"></param>
 /// <returns></returns>
 public UniversalCoords Offset(int offsetX, int offsetY, int offsetZ)
 {
     Debug.Assert(this.WorldY + offsetY >= 0, "The resulting WorldY value after applying offsetY must be >= 0");
     return(UniversalCoords.FromWorld(this.WorldX + offsetX, this.WorldY + offsetY, this.WorldZ + offsetZ));
 }