use bevy::{ prelude::*, sprite::{MaterialMesh2dBundle, Mesh2dHandle}, }; use bevy_rapier2d::prelude::*; const METER: f32 = 64.; pub fn setup_scene( mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>, ) { let scene_objs = [ // Arena walls (Rectangle::new(16. * METER, METER), (0., 7.5 * METER)), (Rectangle::new(16. * METER, METER), (0., -7.5 * METER)), (Rectangle::new(METER, 16. * METER), (7.5 * METER, 0.)), (Rectangle::new(METER, 16. * METER), (-7.5 * METER, 0.)), (Rectangle::new(8. * METER, METER), (0., 2. * METER)), (Rectangle::new(1. * METER, 2. * METER), (2. * METER, 0.)), (Rectangle::new(8. * METER, METER), (0., -2. * METER)), ]; for (shape_, pos) in scene_objs { let shape = Mesh2dHandle(meshes.add(shape_)); commands .spawn(MaterialMesh2dBundle { mesh: shape, material: materials.add(Color::rgb(1., 0., 0.)), transform: Transform::from_xyz(pos.0, pos.1, 1.), ..default() }) .insert(( RigidBody::Fixed, Collider::cuboid(shape_.half_size.x, shape_.half_size.y), )); } }