public override void ElementNeighboursRBA(int element_index, int[] element_neigbour_array) { int x_index = element_index % this.Raster.Size0; int y_index = (element_index % size_xy) / this.Raster.Size0; int z_index = element_index / size_xy; int neigbour_index_index = 0; for (int z_offset = -1; z_offset < 2; z_offset++) { for (int y_offset = -1; y_offset < 2; y_offset++) { for (int x_offset = -1; x_offset < 2; x_offset++) { if ((x_offset != 0) || (y_offset != 0) || (z_offset != 0)) { int x_index_neigbour = x_index + x_offset; int y_index_neigbour = y_index + y_offset; int z_index_neigbour = z_index + z_offset; if (Raster.ContainsCoordinates(x_index_neigbour, y_index_neigbour, z_index_neigbour)) { element_neigbour_array[neigbour_index_index] = Raster.GetElementIndex(x_index_neigbour, y_index_neigbour, z_index_neigbour); } else { element_neigbour_array[neigbour_index_index] = -1; } neigbour_index_index++; } } } } }