[Tool] [GlobalClass] public partial class TerrainData : Resource { [Export] public Godot.Collections.Dictionary Chunks { get; set; } = []; public ref Tile this[TilePos pos] { get { var chunkPos = TerrainChunk.ToChunkPos(pos); if (!Chunks.TryGetValue(chunkPos, out var chunk)) Chunks.Add(chunkPos, chunk = new()); return ref chunk[pos]; } } public Tile GetTileOrDefault(TilePos pos) { var chunkPos = TerrainChunk.ToChunkPos(pos); return Chunks.TryGetValue(chunkPos, out var chunk) ? chunk[pos] : default; } }