Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var transform = new Transform();
- transform.setIdentity();
- transform.setOrigin(new ammo.Vector3(
- _chunks[key].width / 2.0,
- 0.0,
- _chunks[key].depth / 2.0)
- );
- var heightDataPtr = Ammo.malloc(4 * _chunks[key].width.toInt() * _chunks[key].depth.toInt());
- var terrainHeightMap =_chunks[key].getTerrainHeight();
- var byteCount = 0;
- for (var j = 0; j < _chunks[key].depth; j++) {
- for (var i = 0; i < _chunks[key].width; i++) {
- Ammo.heapF32[heightDataPtr + byteCount >> 2] = terrainHeightMap[j * _chunks[key].width.toInt() + i];
- // There are 4 bytes per float (height value)
- byteCount += 4;
- }
- }
- var terrainMeshShape = new HeightfieldTerrainShape(
- _chunks[key].width.toInt(), _chunks[key].depth.toInt(),
- heightDataPtr, 1.0,
- _chunks[key].getMinimumHeight(), _chunks[key].getMaximumHeight(),
- 1, "PHY_FLOAT", false
- );
- var xScaling = _chunkWidth / (_chunks[key].width - 1.0); // TODO: Calculate the terrain extents
- var zScaling = _chunkDepth / (_chunks[key].depth - 1.0);
- terrainMeshShape.setLocalScaling(new ammo.Vector3(xScaling, 1.0, zScaling));
- terrainMeshShape.setMargin(0.05);
- var motionState = new DefaultMotionState(transform);
- var constructionInfo = new RigidBodyConstructionInfo(0.0, motionState, terrainMeshShape, new ammo.Vector3(0.0, 0.0, 0.0));
- var rigidBody = new RigidBody(constructionInfo);
- _dynamicsWorld.addRigidBody(rigidBody);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement