private static ChunkContent GetChunkContent(int x, int z) { x = x - mapSpace.minX; z = z - mapSpace.minY; ChunkContent result = map[x, z]; if (result == null) { result = new ChunkContent(); map[x, z] = result; } return(result); }
private static bool TryGetChunkContent(int x, int z, out ChunkContent content) { if (x >= mapSpace.minX && z >= mapSpace.minY && x < mapSpace.maxX && z < mapSpace.maxY) { content = GetChunkContent(x, z); return(content != null); } else { content = null; return(false); } }
private static void ResizeMap(Bounds2DInt newMapSpace) { if (newMapSpace.minX > mapSpace.minX || newMapSpace.minY > mapSpace.minY || newMapSpace.maxX < mapSpace.maxX || newMapSpace.maxY < mapSpace.maxY) { throw new ArgumentException( String.Format("Sizes of content map can only be expanded. Old: x {0}, New: x {1}", mapSpace, newMapSpace)); } if (mapSpace == newMapSpace) { return; } int offsetX = mapSpace.minX - newMapSpace.minX; int offsetZ = mapSpace.minY - newMapSpace.minY; int newSizeX = newMapSpace.sizeX; int newSizeZ = newMapSpace.sizeZ; ChunkContent[,] newMap = new ChunkContent[newSizeX, newSizeZ]; for (int x = 0; x < mapSpace.sizeX; x++) { for (int z = 0; z < mapSpace.sizeZ; z++) { newMap[x + offsetX, z + offsetZ] = map[x, z]; } } //Debug.Log("map resized to " + newMapSpace); mapSpace = newMapSpace; map = newMap; }