Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.37 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