public EarthPixelColor GetPixelColor(short x, short y)
 {
     PixelMap.ConvertToRelative(x, out byte chunkX, out byte relativeX);
     PixelMap.ConvertToRelative(y, out byte chunkY, out byte relativeY);
     try
     {
         EarthPixelColor[,] chunkMap = CachedChunks[(chunkX, chunkY)];
 public ChunkCache(IEnumerable <Pixel> pixels, Logger logger)
 {
     interactiveMode = true;
     this.logger     = logger;
     logger.LogTechState("Calculating list of chunks...");
     chunks = pixels.AsParallel().Select(p =>
     {
         PixelMap.ConvertToRelative(p.Item1, out byte chunkX, out _);
         PixelMap.ConvertToRelative(p.Item2, out byte chunkY, out _);
         return(chunkX, chunkY);
     }).Distinct().ToList();
     logger.LogTechInfo("Chunk list is calculated");
 }
 public ChunkCache(short x1, short y1, short x2, short y2, Logger logger)
 {
     interactiveMode = false;
     this.logger     = logger;
     logger.LogTechState("Calculating list of chunks...");
     PixelMap.ConvertToRelative(x1, out byte chunkX1, out _);
     PixelMap.ConvertToRelative(y1, out byte chunkY1, out _);
     PixelMap.ConvertToRelative(x2, out byte chunkX2, out _);
     PixelMap.ConvertToRelative(y2, out byte chunkY2, out _);
     chunks = new List <XY>();
     for (ushort x = chunkX1; x <= chunkX2; x++)
     {
         for (ushort y = chunkY1; y <= chunkY2; y++)
         {
             chunks.Add(((byte)x, (byte)y));
         }
     }
     logger.LogTechInfo("Chunk list is calculated");
 }