use bevy::prelude::*; use crate::camera::MouseCoords; 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(0.0, 1.0, 0.0), ..Default::default() }) .insert(Player); // light let mut light_material: StandardMaterial = Color::rgb(0.737255, 0.560784, 0.560784).into(); light_material.metallic = 0.5; light_material.reflectance = 0.5; light_material.emissive = Color::rgb(7.52, 5.72, 5.72); let light_material = materials.add(light_material); commands .spawn() .insert(LightFriends) .insert(Transform::default()) .insert(GlobalTransform::default()) .with_children(|children| { for i in 0..6 { children .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 { color: Color::rgb(7.52, 5.72, 5.72), ..Default::default() }, ..Default::default() }) .insert(PlayerLight { i: i as u8 + 1 }); } }); } pub struct LightFriends; pub fn move_light_friends( mut query: Query<(&mut Transform, &LightFriends)>, player: Query<(&Transform, &Player), Without>, coords: Res, interpolation: Res, time: Res