From b01823c64117dcbb5a03d90bffd7dea1a18c50aa Mon Sep 17 00:00:00 2001 From: yuni Date: Sun, 15 Sep 2024 23:56:03 +0200 Subject: [PATCH] WIP thruster particles --- assets/textures/exhaust.png | Bin 0 -> 16525 bytes src/game.rs | 33 ++++++++++++++++++++------------- src/visual.rs | 26 ++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 assets/textures/exhaust.png diff --git a/assets/textures/exhaust.png b/assets/textures/exhaust.png new file mode 100644 index 0000000000000000000000000000000000000000..3e85c8702d6349e8513462be87ddd8c6b179e784 GIT binary patch literal 16525 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 literal 0 HcmV?d00001 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