// 2: grids are associated with locations, and no incremental update is done, we load new grids for new locations, and unload those that are not needed anymore
Vector3f cam = locations.get(0);
Vector3f camCell = this.getCell(cam);
- if (!camCell.equals(this.currentCell)) {
+ if (camCell.x != this.currentCell.x || camCell.z != currentCell.z) {
this.updateChildrens(camCell);
for (TerrainGridListener l : this.listeners.values()) {
l.gridMoved(camCell);
}
}
- super.update(locations);
+ //super.update(locations);
}
public Vector3f getCell(Vector3f location) {
final Vector3f v = location.clone().divideLocal(this.getLocalScale().mult(this.quadSize)).add(0.5f, 0, 0.5f);
- return new Vector3f(FastMath.floor(v.x), FastMath.floor(v.y), FastMath.floor(v.z));
+ return new Vector3f(FastMath.floor(v.x), 0, FastMath.floor(v.z));
}
protected void removeQuad(int idx) {
private float grassScale = 64;
private float dirtScale = 16;
private float rockScale = 128;
+ private boolean usePhysics = false;
public static void main(final String[] args) {
TerrainGridTest app = new TerrainGridTest();
BulletAppState bulletAppState = new BulletAppState();
stateManager.attach(bulletAppState);
- RigidBodyControl body = new RigidBodyControl(new HeightfieldCollisionShape(terrain.getHeightMap(), terrain.getLocalScale()), 0);
- terrain.addControl(body);
- bulletAppState.getPhysicsSpace().add(terrain);
this.getCamera().setLocation(new Vector3f(0, 256, 0));
this.viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1f, 1f));
- CapsuleCollisionShape capsuleShape = new CapsuleCollisionShape(0.5f, 1.8f, 1);
- this.player3 = new CharacterControl(capsuleShape, 0.5f);
- this.player3.setJumpSpeed(20);
- this.player3.setFallSpeed(30);
- this.player3.setGravity(30);
+ if (usePhysics) {
+ RigidBodyControl body = new RigidBodyControl(new HeightfieldCollisionShape(terrain.getHeightMap(), terrain.getLocalScale()), 0);
+ terrain.addControl(body);
+ bulletAppState.getPhysicsSpace().add(terrain);
+ CapsuleCollisionShape capsuleShape = new CapsuleCollisionShape(0.5f, 1.8f, 1);
+ this.player3 = new CharacterControl(capsuleShape, 0.5f);
+ this.player3.setJumpSpeed(20);
+ this.player3.setFallSpeed(30);
+ this.player3.setGravity(30);
- this.player3.setPhysicsLocation(new Vector3f(0, 256, 0));
-
- bulletAppState.getPhysicsSpace().add(this.player3);
+ this.player3.setPhysicsLocation(new Vector3f(0, 256, 0));
+ bulletAppState.getPhysicsSpace().add(this.player3);
+ }
this.initKeys();
}
this.walkDirection.addLocal(camDir.negate());
}
- this.player3.setWalkDirection(this.walkDirection);
- this.cam.setLocation(this.player3.getPhysicsLocation());
+ if (usePhysics) {
+ this.player3.setWalkDirection(this.walkDirection);
+ this.cam.setLocation(this.player3.getPhysicsLocation());
+ }
}
}