public void SwapWithNeighbor(GameNode swap_neighbor, NeighborDirection direction) { GameNode[] neighbor_neighbors = swap_neighbor.GetNeighbors(); swap_neighbor.SetNeighbors(neighbors); this.neighbors = neighbor_neighbors; for (int i = 0; i < neighbors.Length; i++) { if (neighbor_neighbors[i] != null) { neighbor_neighbors[i].SetNeighbor(swap_neighbor, (NeighborDirection)i); } if (neighbors[i] != null) { neighbors[i].SetNeighbor(this, (NeighborDirection)i); } } }
public void SetNeighbor(GameNode new_neighbor, NeighborDirection direction) { neighbors[(int)direction] = new_neighbor; new_neighbor.GetNeighbors()[(int)AntiDirection(direction)] = this; }