Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub fn add_mesh(&mut self) -> DefaultBodyPartHandle {
- /*
- * Setup a random ground.
- */
- let quad = ncollide3d::procedural::quad(20.0, 20.0, 100, 100);
- let indices = quad
- .flat_indices()
- .chunks(3)
- .map(|is| Point3::new(is[0] as usize, is[2] as usize, is[1] as usize))
- .collect();
- let mut vertices = quad.coords;
- // ncollide generatse a quad with `z` as the normal.
- // so we switch z and y here and set a random altitude at each point.
- let mut x = -1.0;
- let len = vertices.len();
- for p in &mut vertices {
- x += 2.0 / len as f32;
- p.z = p.y;
- p.y = x;
- }
- let trimesh: TriMesh<f32> = TriMesh::new(vertices, indices, None);
- let shape =
- ShapeHandle::new(trimesh);
- let body = RigidBodyDesc::new()
- .set_translation(Vector3::new(0.0, 55.5, 0.0))
- .build();
- let body_handle = self.world.bodies.insert(body);
- let collider =
- ColliderDesc::new(shape).build(BodyPartHandle(body_handle, 0));
- self.world.colliders.insert(collider);
- BodyPartHandle(body_handle, 0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement