1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package com.jme3.terrain.heightmap;
6 
7 import com.jme3.asset.AssetManager;
8 import com.jme3.asset.AssetNotFoundException;
9 import com.jme3.asset.TextureKey;
10 import com.jme3.math.Vector3f;
11 import com.jme3.texture.Texture;
12 import java.util.logging.Level;
13 import java.util.logging.Logger;
14 
15 /**
16  * Loads Terrain grid tiles with image heightmaps.
17  * By default it expects a 16-bit grayscale image as the heightmap, but
18  * you can also call setImageType(BufferedImage.TYPE_) to set it to be a different
19  * image type. If you do this, you must also set a custom ImageHeightmap that will
20  * understand and be able to parse the image. By default if you pass in an image of type
21  * BufferedImage.TYPE_3BYTE_BGR, it will use the ImageBasedHeightMap for you.
22  *
23  * @author Anthyon, Brent Owens
24  */
25 @Deprecated
26 /**
27  * @Deprecated in favor of ImageTileLoader
28  */
29 public class ImageBasedHeightMapGrid implements HeightMapGrid {
30 
31     private static final Logger logger = Logger.getLogger(ImageBasedHeightMapGrid.class.getName());
32     private final AssetManager assetManager;
33     private final Namer namer;
34     private int size;
35 
36 
ImageBasedHeightMapGrid(final String textureBase, final String textureExt, AssetManager assetManager)37     public ImageBasedHeightMapGrid(final String textureBase, final String textureExt, AssetManager assetManager) {
38         this(assetManager, new Namer() {
39 
40             public String getName(int x, int y) {
41                 return textureBase + "_" + x + "_" + y + "." + textureExt;
42             }
43         });
44     }
45 
ImageBasedHeightMapGrid(AssetManager assetManager, Namer namer)46     public ImageBasedHeightMapGrid(AssetManager assetManager, Namer namer) {
47         this.assetManager = assetManager;
48         this.namer = namer;
49     }
50 
getHeightMapAt(Vector3f location)51     public HeightMap getHeightMapAt(Vector3f location) {
52         // HEIGHTMAP image (for the terrain heightmap)
53         int x = (int) location.x;
54         int z = (int) location.z;
55 
56         AbstractHeightMap heightmap = null;
57         //BufferedImage im = null;
58 
59         try {
60             String name = namer.getName(x, z);
61             logger.log(Level.INFO, "Loading heightmap from file: {0}", name);
62             final Texture texture = assetManager.loadTexture(new TextureKey(name));
63 
64             // CREATE HEIGHTMAP
65             heightmap = new ImageBasedHeightMap(texture.getImage());
66 
67             heightmap.setHeightScale(1);
68             heightmap.load();
69 
70         } catch (AssetNotFoundException e) {
71             logger.log(Level.SEVERE, "Asset Not found! ", e);
72         }
73         return heightmap;
74     }
75 
setSize(int size)76     public void setSize(int size) {
77         this.size = size - 1;
78     }
79 }
80