Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.55 KB | None | 0 0
  1. var transform = new Transform();
  2.       transform.setIdentity();
  3.       transform.setOrigin(new ammo.Vector3(
  4.         _chunks[key].width / 2.0,
  5.         0.0,
  6.         _chunks[key].depth / 2.0)
  7.       );
  8.  
  9.       var heightDataPtr = Ammo.malloc(4 * _chunks[key].width.toInt() * _chunks[key].depth.toInt());
  10.       var terrainHeightMap =_chunks[key].getTerrainHeight();
  11.       var byteCount = 0;
  12.       for (var j = 0; j < _chunks[key].depth; j++) {
  13.         for (var i = 0; i < _chunks[key].width; i++) {
  14.           Ammo.heapF32[heightDataPtr + byteCount >> 2] = terrainHeightMap[j * _chunks[key].width.toInt() + i];
  15.           // There are 4 bytes per float (height value)
  16.           byteCount += 4;
  17.         }
  18.       }
  19.       var terrainMeshShape = new HeightfieldTerrainShape(
  20.         _chunks[key].width.toInt(), _chunks[key].depth.toInt(),
  21.         heightDataPtr, 1.0,
  22.         _chunks[key].getMinimumHeight(), _chunks[key].getMaximumHeight(),
  23.         1, "PHY_FLOAT", false
  24.       );
  25.  
  26.       var xScaling = _chunkWidth / (_chunks[key].width - 1.0); // TODO: Calculate the terrain extents
  27.       var zScaling = _chunkDepth / (_chunks[key].depth - 1.0);
  28.       terrainMeshShape.setLocalScaling(new ammo.Vector3(xScaling, 1.0, zScaling));
  29.       terrainMeshShape.setMargin(0.05);
  30.      
  31.       var motionState = new DefaultMotionState(transform);
  32.       var constructionInfo = new RigidBodyConstructionInfo(0.0, motionState, terrainMeshShape, new ammo.Vector3(0.0, 0.0, 0.0));
  33.       var rigidBody = new RigidBody(constructionInfo);
  34.  
  35.       _dynamicsWorld.addRigidBody(rigidBody);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement