/// <summary> /// Creates a new empty chunk at the specified chunk coordinate. /// </summary> public ChunkData CreateChunk(Int2 chunkCoord) { if (chunkObjects.ContainsKey(chunkCoord)) { throw new System.Exception(string.Format("Chunk with offset {0} already exists in this grid.", chunkCoord)); } // Create chunk data object ChunkData chunk = new ChunkData(chunkWidth * chunkHeight, layers); // Create and position chunk GameObject string name = string.Format("chunk {0}", chunkCoord); GameObject obj = new GameObject(name); obj.transform.SetParent(this.transform, false); Grid2DChunk chunkBehaviour = obj.AddComponent <Grid2DChunk>(); Vector2 pos = new Vector2(chunkCoord.x * ChunkWidth, chunkCoord.y * ChunkHeight); chunkBehaviour.transform.localPosition = pos; chunkBehaviour.Setup(chunkCoord, this, chunk); chunkObjects.Add(chunkCoord, chunkBehaviour); recentlyCreatedChunks.Add(chunkCoord); return(chunk); }
public bool TryGetChunkData(Int2 chunkCoord, out ChunkData result) { Grid2DChunk chunk = null; if (chunkObjects.TryGetValue(chunkCoord, out chunk)) { result = chunk.Data; return(true); } else { result = null; return(false); } }
public bool TryGetChunkObject(Int2 chunkCoord, out Grid2DChunk result) { return(chunkObjects.TryGetValue(chunkCoord, out result)); }