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"); }