forked from MagicBane/Server
Map loaded updated
This commit is contained in:
@@ -103,31 +103,38 @@ public enum MapLoader {
|
|||||||
if (Files.isRegularFile(filePath)) {
|
if (Files.isRegularFile(filePath)) {
|
||||||
File imageFile = filePath.toFile();
|
File imageFile = filePath.toFile();
|
||||||
|
|
||||||
|
BufferedImage heightmapImage;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
BufferedImage heightmapImage = ImageIO.read(imageFile);
|
heightmapImage = ImageIO.read(imageFile);
|
||||||
|
|
||||||
// Generate pixel data for this heightmap. RPG channels are all the same
|
|
||||||
// in this greyscale TGA heightmap. We will choose red.
|
|
||||||
|
|
||||||
short[][] colorData = new short[heightmapImage.getWidth()][heightmapImage.getHeight()];
|
|
||||||
|
|
||||||
for (int y = 0; y < heightmapImage.getHeight(); y++)
|
|
||||||
for (int x = 0; x < heightmapImage.getWidth(); x++) {
|
|
||||||
|
|
||||||
Color color = new Color(heightmapImage.getRGB(x, y));
|
|
||||||
colorData[x][y] = (short) color.getRed();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insert color data into lookup table
|
|
||||||
|
|
||||||
int heightMapID = Integer.parseInt(imageFile.getName().substring(0, imageFile.getName().lastIndexOf(".")));
|
|
||||||
Terrain._heightmap_pixel_cache.put(heightMapID, colorData);
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Logger.error(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fileName = Integer.parseInt(imageFile.getName().substring(0, imageFile.getName().lastIndexOf(".")));
|
||||||
|
boolean singleBandRaster = heightmapImage.getRaster().getNumBands() == 1;
|
||||||
|
int color;
|
||||||
|
|
||||||
|
// Generate pixel data for this heightmap.
|
||||||
|
|
||||||
|
short[][] colorData = new short[heightmapImage.getWidth()][heightmapImage.getHeight()];
|
||||||
|
|
||||||
|
for (int y = 0; y < heightmapImage.getHeight(); y++)
|
||||||
|
for (int x = 0; x < heightmapImage.getWidth(); x++) {
|
||||||
|
|
||||||
|
if (singleBandRaster)
|
||||||
|
color = heightmapImage.getRaster().getSample(x, y, 0);
|
||||||
|
else
|
||||||
|
color = new Color(heightmapImage.getRGB(x, y)).getRed();
|
||||||
|
|
||||||
|
colorData[x][y] = (short) color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add pixel for this TGA image into the collection
|
||||||
|
|
||||||
|
Terrain._heightmap_pixel_cache.put(fileName, colorData);
|
||||||
}
|
}
|
||||||
|
|
||||||
}); // Try with resources block
|
}); // Try with resources block
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user