/// <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); }
public UniversalCoords Offset(int offsetX, int offsetY, int offsetZ) { return(UniversalCoords.FromWorld(this.WorldX + offsetX, this.WorldY + offsetY, this.WorldZ + offsetZ)); }
public static UniversalCoords operator +(UniversalCoords left, UniversalCoords right) { return(UniversalCoords.FromWorld(left.WorldX + right.WorldX, left.WorldY + right.WorldY, left.WorldZ + right.WorldZ)); }
/// <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)); }