diff --git a/assets/textures/exhaust.png b/assets/textures/exhaust.png new file mode 100644 index 0000000..3e85c87 Binary files /dev/null and b/assets/textures/exhaust.png differ diff --git a/src/game.rs b/src/game.rs index 0ecba33..824fc58 100644 --- a/src/game.rs +++ b/src/game.rs @@ -12,7 +12,6 @@ use crate::prelude::*; use bevy::color::palettes::css; -use bevy::pbr::ExtendedMaterial; use bevy::prelude::*; use bevy::scene::SceneInstance; use bevy::window::{PrimaryWindow, Window, WindowMode}; @@ -471,22 +470,30 @@ fn update_id2v(mut id2v: ResMut, q_id: Query<(&LinearVelocity, &actor::Ide fn debug( settings: Res, keyboard_input: Res>, - mut commands: Commands, - mut extended_materials: ResMut< - Assets>, - >, + // mut commands: Commands, + // mut extended_materials: ResMut< + // Assets>, + // >, mut achievement_tracker: ResMut, vars: Res, - materials: Query<(Entity, Option<&Name>, &Handle)>, + q_playercam: Query<(&Position, &LinearVelocity), With>, + mut ew_effect: EventWriter, + // materials: Query<(Entity, Option<&Name>, &Handle)>, ) { if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyP) { - for (entity, _name, mesh) in &materials { - dbg!(mesh); - let mut entity = commands.entity(entity); - entity.remove::>(); - let material = extended_materials.add(load::AsteroidSurface::material()); - entity.insert(material); - } + let (pos, v) = q_playercam.get_single().unwrap(); + ew_effect.send(visual::SpawnEffectEvent { + duration: 0.0, + class: visual::Effects::ThrusterParticle(pos.clone(), v.clone()), + }); + + // for (entity, _name, mesh) in &materials { + // dbg!(mesh); + // let mut entity = commands.entity(entity); + // entity.remove::>(); + // let material = extended_materials.add(load::AsteroidSurface::material()); + // entity.insert(material); + // } } if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyN) { achievement_tracker.achieve_all(); diff --git a/src/visual.rs b/src/visual.rs index ea5136f..4841d63 100644 --- a/src/visual.rs +++ b/src/visual.rs @@ -12,6 +12,7 @@ use crate::prelude::*; use bevy::prelude::*; +use bevy_xpbd_3d::prelude::*; use std::time::Duration; pub struct VisualPlugin; @@ -37,6 +38,7 @@ impl Plugin for VisualPlugin { pub enum Effects { FadeIn(Color), FadeOut(Color), + ThrusterParticle(Position, LinearVelocity), } // Blackout disabled for now @@ -109,6 +111,9 @@ pub fn setup( pub fn spawn_effects( mut commands: Commands, mut er_effect: EventReader, + mut materials: ResMut>, + mut meshes: ResMut>, + asset_server: Res, time: Res