rake/src/world.rs

53 lines
1.7 KiB
Rust
Raw Permalink Normal View History

2020-12-31 15:41:56 +00:00
use bevy::prelude::*;
use bevy_rapier3d::rapier::{dynamics::RigidBodyBuilder, geometry::ColliderBuilder};
pub struct WorldPlugin;
impl Plugin for WorldPlugin {
fn build(&self, app: &mut AppBuilder) {
app.add_startup_system(create_world.system());
}
}
fn create_world(
2021-06-07 21:50:39 +00:00
mut commands: Commands,
2020-12-31 15:41:56 +00:00
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
asset_server: Res<AssetServer>,
2020-12-31 15:41:56 +00:00
) {
// some boxes to help with orientation
2020-12-31 15:41:56 +00:00
let box_mesh = meshes.add(Mesh::from(shape::Cube { size: 0.25 }));
let box_material = materials.add(Color::rgb(1.0, 0.2, 0.3).into());
const AMOUNT: i32 = 6;
for x in -(AMOUNT / 2)..(AMOUNT / 2) {
for y in -(AMOUNT / 2)..(AMOUNT / 2) {
for z in -(AMOUNT / 2)..(AMOUNT / 2) {
2021-06-07 21:50:39 +00:00
commands.spawn_bundle(PbrBundle {
2020-12-31 15:41:56 +00:00
mesh: box_mesh.clone(),
material: box_material.clone(),
transform: Transform::from_translation(Vec3::new(x as f32, y as f32, z as f32)),
..Default::default()
});
}
}
}
// a simple light
2021-06-07 21:50:39 +00:00
commands.spawn_bundle(LightBundle {
transform: Transform::from_translation(Vec3::new(4.0, 8.0, 4.0)),
..Default::default()
});
2020-12-31 15:41:56 +00:00
// create a floor
let floor_texture_handle = materials.add(asset_server.load("textures/blocks17floor2.png").into());
2020-12-31 15:41:56 +00:00
let rigid_body1 = RigidBodyBuilder::new_static();
let collider1 = ColliderBuilder::cuboid(10.0, 0.1, 10.0);
2021-06-07 21:50:39 +00:00
commands.spawn_bundle((rigid_body1, collider1));
commands.spawn_bundle(PbrBundle {
2021-01-02 21:34:24 +00:00
mesh: meshes.add(Mesh::from(shape::Plane { size: 20. })),
material: floor_texture_handle,
transform: Transform::from_translation(Vec3::new(0.0, 0.1, 0.0)),
2020-12-31 15:41:56 +00:00
..Default::default()
});
}