private void preloadTiles(MeshTile[] tiles) { double minValue = Double.MAX_VALUE; double minScale = 1d; BufferWrapperRaster[] rasters = new BufferWrapperRaster[tiles.length]; for (int i = 0; i < tiles.length; i++) { rasters[i] = this.readTileRaster(tiles[i]); double[] minAndMax = ElevationMesh.getMinAndMaxValues(rasters[i]); if (minAndMax[0] < minValue) minValue = minAndMax[0]; double scale = ElevationMesh.suggestVerticalScale(tiles[i].getSector(), tiles[i].getMeshCoords()); if (scale < minScale) minScale = scale; } if (minValue == Double.MAX_VALUE) minValue = 0d; this.verticalOffset = -minValue; this.verticalScale = minScale; for (int i = 0; i < tiles.length; i++) { ElevationMesh mesh = this.createMesh(tiles[i], rasters[i], this.verticalOffset, this.verticalScale); this.cache.add(tiles[i].getTileKey(), mesh); } }