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) {
|
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);
|
Vector3f camCell = this.getCell(location);
|
||||||
this.updateChildrens(camCell);
|
this.updateChildrens(camCell);
|
||||||
for (TerrainGridListener l : this.listeners.values()) {
|
for (TerrainGridListener l : this.listeners.values()) {
|
||||||
@ -243,9 +246,13 @@ public class TerrainGrid extends TerrainQuad {
|
|||||||
|
|
||||||
this.currentCell = cam;
|
this.currentCell = cam;
|
||||||
this.setLocalTranslation(cam.mult(this.getLocalScale().mult(this.quadSize)));
|
this.setLocalTranslation(cam.mult(this.getLocalScale().mult(this.quadSize)));
|
||||||
|
this.updateModelBound();
|
||||||
|
|
||||||
if (control != null) {
|
if (control != null) {
|
||||||
|
int currentCollisionGroup = control.getCollideWithGroups();
|
||||||
control = new RigidBodyControl(new HeightfieldCollisionShape(getHeightMap(), getLocalScale()), 0);
|
control = new RigidBodyControl(new HeightfieldCollisionShape(getHeightMap(), getLocalScale()), 0);
|
||||||
|
control.setCcdMotionThreshold(0.5f);
|
||||||
|
control.setCollisionGroup(currentCollisionGroup);
|
||||||
this.addControl(control);
|
this.addControl(control);
|
||||||
space.add(this);
|
space.add(this);
|
||||||
}
|
}
|
||||||
|
@ -920,8 +920,8 @@ public class TerrainQuad extends Node implements Terrain {
|
|||||||
|
|
||||||
public float getHeight(Vector2f xz) {
|
public float getHeight(Vector2f xz) {
|
||||||
// offset
|
// offset
|
||||||
float x = (float)((xz.x / getLocalScale().x) + (float)totalSize / 2f);
|
float x = (float)(((xz.x - getLocalTranslation().x) / getLocalScale().x) + (float)totalSize / 2f);
|
||||||
float z = (float)((xz.y / getLocalScale().z) + (float)totalSize / 2f);
|
float z = (float)(((xz.y - getLocalTranslation().z) / getLocalScale().z) + (float)totalSize / 2f);
|
||||||
return getHeight(x, z, xz);
|
return getHeight(x, z, xz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user