use bevy::prelude::*; use crate::Camera; pub struct Player; pub struct PlayerLight { i: u8, } pub fn spawn_player( commands: &mut Commands, meshes: &mut Assets, materials: &mut Assets, ) { commands .spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Capsule { radius: 0.5, ..Default::default() })), material: materials.add(Color::rgb(1.0, 1.0, 1.0).into()), transform: Transform::from_xyz(33.0, 1.0, 0.0), ..Default::default() }) .insert(Player) .with_children(|parent| { // light let mut light_material: StandardMaterial = Color::rgb(0.3, 0.5, 0.3).into(); light_material.metallic = 0.5; light_material.reflectance = 0.5; light_material.emissive = Color::rgb(15.0, 15.0, 15.0); let light_material = materials.add(light_material); for i in 0..5 { parent .spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Icosphere { radius: 0.2, subdivisions: 5, })), material: light_material.clone(), transform: Transform::from_xyz(0.0, 0.5, 0.0), ..Default::default() }) .insert_bundle(LightBundle { transform: Transform::from_xyz(0.0, 0.0, 0.0), light: Light { ..Default::default() }, ..Default::default() }) .insert(PlayerLight { i: i as u8 + 1 }); } }); } pub fn light_movement(mut query: Query<(&mut Transform, &PlayerLight)>, time: Res