Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. pub fn add_mesh(&mut self) -> DefaultBodyPartHandle {
  2. /*
  3. * Setup a random ground.
  4. */
  5. let quad = ncollide3d::procedural::quad(20.0, 20.0, 100, 100);
  6. let indices = quad
  7. .flat_indices()
  8. .chunks(3)
  9. .map(|is| Point3::new(is[0] as usize, is[2] as usize, is[1] as usize))
  10. .collect();
  11.  
  12. let mut vertices = quad.coords;
  13.  
  14. // ncollide generatse a quad with `z` as the normal.
  15. // so we switch z and y here and set a random altitude at each point.
  16. let mut x = -1.0;
  17. let len = vertices.len();
  18. for p in &mut vertices {
  19. x += 2.0 / len as f32;
  20. p.z = p.y;
  21. p.y = x;
  22. }
  23.  
  24. let trimesh: TriMesh<f32> = TriMesh::new(vertices, indices, None);
  25.  
  26. let shape =
  27. ShapeHandle::new(trimesh);
  28.  
  29. let body = RigidBodyDesc::new()
  30. .set_translation(Vector3::new(0.0, 55.5, 0.0))
  31. .build();
  32. let body_handle = self.world.bodies.insert(body);
  33.  
  34. let collider =
  35. ColliderDesc::new(shape).build(BodyPartHandle(body_handle, 0));
  36.  
  37. self.world.colliders.insert(collider);
  38.  
  39. BodyPartHandle(body_handle, 0)
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement