37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
use bevy::prelude::*;
|
|
|
|
use crate::{asset_loading::GltfAssets, GameState};
|
|
|
|
pub fn map_plugin(app: &mut App) {
|
|
app.add_systems(OnEnter(GameState::Playing), spawn_level);
|
|
}
|
|
|
|
fn spawn_level(
|
|
mut commands: Commands,
|
|
models: Res<Assets<Gltf>>,
|
|
gltf_assets: Res<GltfAssets>
|
|
) {
|
|
println!("LIBRARY: {:?}", gltf_assets.library);
|
|
let shapes = ["corner_inside", "corner_outside", "wall", "door", "round_door", "round_hole"].map(|mesh_name| {
|
|
let path = format!("meshes/library/space_{}.glb", mesh_name);
|
|
let handle = gltf_assets.library.get(&path).expect(&format!("Couldn't find {} in library", mesh_name));
|
|
let gltf = models.get(handle).expect(&format!("No model for {}", mesh_name));
|
|
|
|
let asset = gltf.default_scene.as_ref().expect(&format!("No scene in {}", mesh_name));
|
|
SceneRoot(asset.clone());
|
|
});
|
|
let [corner_inside, corner_outside, wall, door, round_door, round_hole] = shapes;
|
|
let mut x_offset = 0.0;
|
|
for i in 0..10 {
|
|
commands.spawn(wall.clone())
|
|
.insert(TransformBundle::from_transform(Transform::from_xyz(x_offset + (i as f32 * 2.0), 0.0, 0.0)));
|
|
|
|
commands.spawn(wall.clone())
|
|
.insert(TransformBundle::from_transform(
|
|
Transform::from_xyz(x_offset + (i as f32 * 2.0), 0.0, 0.0)
|
|
.with_rotation(Quat::from_rotation_y(std::f32::consts::PI))
|
|
));
|
|
}
|
|
x_offset += 2.0;
|
|
}
|