Files
among-me/src/level_instantiation/mod.rs
2025-04-05 23:54:07 +02:00

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;
}