From 91e5435c647826296974ed88e69289803f3b6d77 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Wed, 26 Mar 2025 08:32:40 +0100 Subject: [PATCH] more asset loader usage --- src/keys.rs | 14 ++++++++------ src/loading_assets.rs | 12 ++++++++++++ src/player.rs | 8 ++++---- src/tb_entities.rs | 15 ++++++++++----- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/keys.rs b/src/keys.rs index d0c8385..082d4dd 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -1,6 +1,6 @@ use crate::{ - GameState, billboards::Billboard, player::Player, sounds::PlaySound, - squish_animation::SquishAnimation, + GameState, billboards::Billboard, loading_assets::GameAssets, player::Player, + sounds::PlaySound, squish_animation::SquishAnimation, }; use avian3d::prelude::*; use bevy::prelude::*; @@ -21,14 +21,12 @@ pub fn plugin(app: &mut App) { app.add_observer(on_spawn); } -fn on_spawn(trigger: Trigger, mut commands: Commands, asset_server: Res) { +fn on_spawn(trigger: Trigger, mut commands: Commands, assets: Res) { let KeySpawn(position, id) = trigger.event(); let angle = rand::random::() * PI * 2.; let spawn_dir = Quat::from_rotation_y(angle) * Vec3::new(0.5, 0.6, 0.).normalize(); - let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/key.glb")); - commands .spawn(( Name::new("key"), @@ -41,7 +39,11 @@ fn on_spawn(trigger: Trigger, mut commands: Commands, asset_server: Re RigidBody::Dynamic, Restitution::new(0.6), )) - .with_child((Billboard, SquishAnimation(2.6), SceneRoot(mesh))); + .with_child(( + Billboard, + SquishAnimation(2.6), + SceneRoot(assets.mesh_key.clone()), + )); } fn collect_key( diff --git a/src/loading_assets.rs b/src/loading_assets.rs index bae3d69..c55e896 100644 --- a/src/loading_assets.rs +++ b/src/loading_assets.rs @@ -42,6 +42,18 @@ pub struct UIAssets { pub struct GameAssets { #[asset(path = "textures/fx/impact.png")] pub impact_atlas: Handle, + + #[asset(path = "models/key.glb#Scene0")] + pub mesh_key: Handle, + + #[asset(path = "models/spawn.glb#Scene0")] + pub mesh_spawn: Handle, + + #[asset(path = "models/alien_naked.glb#Scene0")] + pub mesh_alien: Handle, + + #[asset(path = "models/cash.glb#Scene0")] + pub mesh_cash: Handle, } pub struct LoadingPlugin; diff --git a/src/player.rs b/src/player.rs index d1039d8..b14d881 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,6 +1,6 @@ use crate::{ GameState, - alien::{ALIEN_ASSET_PATH, Animations}, + alien::Animations, camera::{CameraArmRotation, CameraTarget}, cash::{Cash, CashCollectEvent}, control::{ @@ -8,6 +8,7 @@ use crate::{ controller::{CharacterControllerBundle, PlayerMovement}, }, heads_ui::HeadChanged, + loading_assets::GameAssets, physics_layers::GameLayer, tb_entities::SpawnPoint, }; @@ -68,6 +69,7 @@ fn spawn( asset_server: Res, query: Query<&Transform, With>, mut player_spawned: ResMut, + assets: Res, ) { if player_spawned.spawned { return; @@ -114,9 +116,7 @@ fn spawn( Transform::from_translation(Vec3::new(0., -1.45, 0.)) .with_rotation(Quat::from_rotation_y(std::f32::consts::PI)) .with_scale(Vec3::splat(1.4)), - SceneRoot( - asset_server.load(GltfAssetLabel::Scene(0).from_asset(ALIEN_ASSET_PATH)), - ), + SceneRoot(assets.mesh_alien.clone()), )) .with_child(( Name::from("head"), diff --git a/src/tb_entities.rs b/src/tb_entities.rs index 5f47f01..a65f292 100644 --- a/src/tb_entities.rs +++ b/src/tb_entities.rs @@ -6,6 +6,7 @@ use bevy_trenchbroom::class::Target; use bevy_trenchbroom::prelude::*; use crate::cash::Cash; +use crate::loading_assets::GameAssets; use crate::physics_layers::GameLayer; #[derive(PointClass, Component, Reflect, Default)] @@ -17,7 +18,7 @@ pub struct SpawnPoint {} impl SpawnPoint { fn on_add(mut world: DeferredWorld, entity: Entity, _id: ComponentId) { - let Some(asset_server) = world.get_resource::() else { + let Some(assets) = world.get_resource::() else { return; }; @@ -30,7 +31,7 @@ impl SpawnPoint { let mut this_transform = *this_transform; this_transform.translation += Vec3::new(0., -0.3, 0.); - let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/spawn.glb")); + let mesh = assets.mesh_spawn.clone(); world.commands().entity(entity).insert(( this_transform, @@ -125,6 +126,10 @@ impl EnemySpawn { return; }; + let Some(assets) = world.get_resource::() else { + return; + }; + let this = world.get_entity(entity).unwrap().get::().unwrap(); let this_transform = world .get_entity(entity) @@ -135,7 +140,7 @@ impl EnemySpawn { let mut this_transform = *this_transform; this_transform.translation += Vec3::new(0., 1., 0.); - let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/alien_naked.glb")); + let mesh = assets.mesh_alien.clone(); let head_mesh = asset_server .load(GltfAssetLabel::Scene(0).from_asset(format!("models/heads/{}.glb", this.head))); @@ -179,11 +184,11 @@ pub struct CashSpawn {} impl CashSpawn { fn on_add(mut world: DeferredWorld, entity: Entity, _id: ComponentId) { - let Some(asset_server) = world.get_resource::() else { + let Some(assets) = world.get_resource::() else { return; }; - let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/cash.glb")); + let mesh = assets.mesh_cash.clone(); world.commands().entity(entity).insert(( Name::new("cash"),