|
@@ -83,11 +83,11 @@ import java.util.logging.Logger;
|
|
|
* and is half way inside each one.
|
|
|
* </p><pre>
|
|
|
* +-------+-------+
|
|
|
- * | 1 | 4 | Four terrainQuads that make up the grid
|
|
|
+ * | 1 | 3 | Four terrainQuads that make up the grid
|
|
|
* | *..|..* | with the cameraCell in the middle, covering
|
|
|
* |----|--|--|----| all four quads.
|
|
|
* | *..|..* |
|
|
|
- * | 2 | 3 |
|
|
|
+ * | 2 | 4 |
|
|
|
* +-------+-------+
|
|
|
* </pre><p>
|
|
|
* This results in the effect of when the camera gets half way across one of the sides of a quad to
|
|
@@ -205,8 +205,6 @@ public class TerrainGrid extends TerrainQuad {
|
|
|
}
|
|
|
System.out.println("fixed normals "+location.clone().mult(size));
|
|
|
setNeedToRecalculateNormals();
|
|
|
- //fixNormalEdges(new BoundingBox(location.clone().mult(size), size*2, Float.MAX_VALUE, size*2));
|
|
|
- // the edges are fixed once, but not with lod change
|
|
|
return null;
|
|
|
}
|
|
|
});
|
|
@@ -256,34 +254,6 @@ public class TerrainGrid extends TerrainQuad {
|
|
|
this(name, patchSize, maxVisibleSize, Vector3f.UNIT_XYZ, terrainQuadGrid);
|
|
|
}
|
|
|
|
|
|
- @Deprecated
|
|
|
- public TerrainGrid(String name, int patchSize, int maxVisibleSize, Vector3f scale, HeightMapGrid heightMapGrid,
|
|
|
- Vector2f offset, float offsetAmount) {
|
|
|
- this.name = name;
|
|
|
- this.patchSize = patchSize;
|
|
|
- this.size = maxVisibleSize;
|
|
|
- this.stepScale = scale;
|
|
|
- this.offset = offset;
|
|
|
- this.offsetAmount = offsetAmount;
|
|
|
- initData();
|
|
|
- this.heightMapGrid = heightMapGrid;
|
|
|
- heightMapGrid.setSize(this.quadSize);
|
|
|
- addControl(new UpdateControl());
|
|
|
-
|
|
|
- fixNormalEdges(new BoundingBox(new Vector3f(0,0,0), size*2, Float.MAX_VALUE, size*2));
|
|
|
- addControl(new NormalRecalcControl(this));
|
|
|
- }
|
|
|
-
|
|
|
- @Deprecated
|
|
|
- public TerrainGrid(String name, int patchSize, int maxVisibleSize, Vector3f scale, HeightMapGrid heightMapGrid) {
|
|
|
- this(name, patchSize, maxVisibleSize, scale, heightMapGrid, new Vector2f(), 0);
|
|
|
- }
|
|
|
-
|
|
|
- @Deprecated
|
|
|
- public TerrainGrid(String name, int patchSize, int maxVisibleSize, HeightMapGrid heightMapGrid) {
|
|
|
- this(name, patchSize, maxVisibleSize, Vector3f.UNIT_XYZ, heightMapGrid);
|
|
|
- }
|
|
|
-
|
|
|
public TerrainGrid() {
|
|
|
}
|
|
|
|
|
@@ -311,6 +281,15 @@ public class TerrainGrid extends TerrainQuad {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Get the location in cell-coordinates of the specified location.
|
|
|
+ * Cell coordinates are integer corrdinates, usually with y=0, each
|
|
|
+ * representing a cell in the world.
|
|
|
+ * For example, moving right in the +X direction:
|
|
|
+ * (0,0,0) (1,0,0) (2,0,0), (3,0,0)
|
|
|
+ * and then down the -Z direction:
|
|
|
+ * (3,0,-1) (3,0,-2) (3,0,-3)
|
|
|
+ */
|
|
|
public Vector3f getCamCell(Vector3f location) {
|
|
|
Vector3f tile = getTileCell(location);
|
|
|
Vector3f offsetHalf = new Vector3f(-0.5f, 0, -0.5f);
|
|
@@ -332,6 +311,16 @@ public class TerrainGrid extends TerrainQuad {
|
|
|
return gridTileLoader;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Get the terrain tile at the specified world location, in XZ coordinates.
|
|
|
+ */
|
|
|
+ public Terrain getTerrainAt(Vector3f worldLocation) {
|
|
|
+ if (worldLocation == null)
|
|
|
+ return null;
|
|
|
+ Vector3f tileCell = getTileCell(worldLocation);
|
|
|
+ return cache.get(tileCell);
|
|
|
+ }
|
|
|
+
|
|
|
protected void removeQuad(TerrainQuad q) {
|
|
|
if (q != null && ( (q.getQuadrant() > 0 && q.getQuadrant()<5) || q.getParent() != null) ) {
|
|
|
for (TerrainGridListener l : listeners) {
|
|
@@ -363,16 +352,6 @@ public class TerrainGrid extends TerrainQuad {
|
|
|
}
|
|
|
updateModelBound();
|
|
|
|
|
|
- /*for (Spatial s : getChildren()) {
|
|
|
- if (s instanceof TerrainQuad) {
|
|
|
- TerrainQuad tq = (TerrainQuad)s;
|
|
|
- tq.resetCachedNeighbours();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- System.out.println("fix normals "+loc);
|
|
|
- fixNormalEdges(new BoundingBox(loc, totalSize*6, Float.MAX_VALUE, totalSize*6));
|
|
|
- */
|
|
|
}
|
|
|
|
|
|
|