Fix major bug: TerrainGrid.getHeight returned always 0 after first grid change happened
minor bug: updateModelBound missed from TerrainGrid update call, added collisionGroup check to physics, and failing with exception if material is not set before initialize() call git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7691 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
c30288febf
commit
dfeff3c6af
@ -120,6 +120,9 @@ public class TerrainGrid extends TerrainQuad {
|
||||
}
|
||||
|
||||
public void initialize(Vector3f location) {
|
||||
if(this.material == null){
|
||||
throw new RuntimeException("Material must be set prior to call of initialize");
|
||||
}
|
||||
Vector3f camCell = this.getCell(location);
|
||||
this.updateChildrens(camCell);
|
||||
for (TerrainGridListener l : this.listeners.values()) {
|
||||
@ -243,9 +246,13 @@ public class TerrainGrid extends TerrainQuad {
|
||||
|
||||
this.currentCell = cam;
|
||||
this.setLocalTranslation(cam.mult(this.getLocalScale().mult(this.quadSize)));
|
||||
this.updateModelBound();
|
||||
|
||||
if (control != null) {
|
||||
int currentCollisionGroup = control.getCollideWithGroups();
|
||||
control = new RigidBodyControl(new HeightfieldCollisionShape(getHeightMap(), getLocalScale()), 0);
|
||||
control.setCcdMotionThreshold(0.5f);
|
||||
control.setCollisionGroup(currentCollisionGroup);
|
||||
this.addControl(control);
|
||||
space.add(this);
|
||||
}
|
||||
|
@ -920,8 +920,8 @@ public class TerrainQuad extends Node implements Terrain {
|
||||
|
||||
public float getHeight(Vector2f xz) {
|
||||
// offset
|
||||
float x = (float)((xz.x / getLocalScale().x) + (float)totalSize / 2f);
|
||||
float z = (float)((xz.y / getLocalScale().z) + (float)totalSize / 2f);
|
||||
float x = (float)(((xz.x - getLocalTranslation().x) / getLocalScale().x) + (float)totalSize / 2f);
|
||||
float z = (float)(((xz.y - getLocalTranslation().z) / getLocalScale().z) + (float)totalSize / 2f);
|
||||
return getHeight(x, z, xz);
|
||||
}
|
||||
|
||||
@ -953,7 +953,7 @@ public class TerrainQuad extends Node implements Terrain {
|
||||
coord.add(xz);
|
||||
List<Float> h = new ArrayList<Float>();
|
||||
h.add(height);
|
||||
|
||||
|
||||
setHeight(coord, h);
|
||||
}
|
||||
|
||||
@ -1002,7 +1002,7 @@ public class TerrainQuad extends Node implements Terrain {
|
||||
float h;
|
||||
|
||||
LocationHeight(){}
|
||||
|
||||
|
||||
LocationHeight(int x, int z, float h){
|
||||
this.x = x;
|
||||
this.z = z;
|
||||
@ -1077,7 +1077,7 @@ public class TerrainQuad extends Node implements Terrain {
|
||||
else if(quad1 instanceof TerrainPatch)
|
||||
((TerrainPatch)quad1).setHeight(quadLH1, overrideHeight);
|
||||
}
|
||||
|
||||
|
||||
if (!quadLH2.isEmpty()) {
|
||||
if (quad2 instanceof TerrainQuad)
|
||||
((TerrainQuad)quad2).setHeight(quadLH2, overrideHeight);
|
||||
@ -1091,7 +1091,7 @@ public class TerrainQuad extends Node implements Terrain {
|
||||
else if(quad3 instanceof TerrainPatch)
|
||||
((TerrainPatch)quad3).setHeight(quadLH3, overrideHeight);
|
||||
}
|
||||
|
||||
|
||||
if (!quadLH4.isEmpty()) {
|
||||
if (quad4 instanceof TerrainQuad)
|
||||
((TerrainQuad)quad4).setHeight(quadLH4, overrideHeight);
|
||||
|
Loading…
x
Reference in New Issue
Block a user