public Chunk LoadChunk(Vector2I chunkPos) { Vector2I regionPos = this.ChunkPosToRegionPos(chunkPos); Vector2I localChunkPos = this.WorldChunkPosToRegionChunkPos(chunkPos); Region Region = this.GetRegion(regionPos); Chunk Chunk = Region.GetChunk(localChunkPos); if (!Region.IsChunkLoaded(localChunkPos)) { Chunk.AddRef(); Chunk.Decompress(); if (!this.LoadedChunkMap.ContainsKey(Chunk.WorldChunkPos)) { this.LoadedChunkMap.Add(Chunk.WorldChunkPos, Chunk); } } else { Chunk.AddRef(); } return(Chunk); }