From 540843c5a45ba0bd6ed5a664ad7358ea03cb267f Mon Sep 17 00:00:00 2001 From: extrawurst Date: Wed, 26 Mar 2025 21:24:56 +0800 Subject: [PATCH] also load animations via asset loader --- src/alien.rs | 13 +++++-------- src/loading_assets.rs | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/alien.rs b/src/alien.rs index 4093ab3..21b5299 100644 --- a/src/alien.rs +++ b/src/alien.rs @@ -1,10 +1,7 @@ +use crate::{GameState, loading_assets::GameAssets}; use bevy::prelude::*; use std::time::Duration; -use crate::GameState; - -pub const ALIEN_ASSET_PATH: &str = "models/alien_naked.glb"; - #[derive(Resource)] pub struct Animations { pub animations: Vec, @@ -21,14 +18,14 @@ pub fn plugin(app: &mut App) { fn setup( mut commands: Commands, - asset_server: Res, + assets: Res, mut graphs: ResMut>, ) { // Build the animation graph let (graph, node_indices) = AnimationGraph::from_clips([ - asset_server.load(GltfAssetLabel::Animation(2).from_asset(ALIEN_ASSET_PATH)), - asset_server.load(GltfAssetLabel::Animation(1).from_asset(ALIEN_ASSET_PATH)), - asset_server.load(GltfAssetLabel::Animation(0).from_asset(ALIEN_ASSET_PATH)), + assets.animations_alien.get("Animation2").cloned().unwrap(), + assets.animations_alien.get("Animation1").cloned().unwrap(), + assets.animations_alien.get("Animation0").cloned().unwrap(), ]); // Insert a resource with the current scene information diff --git a/src/loading_assets.rs b/src/loading_assets.rs index c55e896..49d7024 100644 --- a/src/loading_assets.rs +++ b/src/loading_assets.rs @@ -1,5 +1,5 @@ use crate::GameState; -use bevy::prelude::*; +use bevy::{prelude::*, utils::HashMap}; use bevy_asset_loader::prelude::*; #[derive(AssetCollection, Resource)] @@ -49,11 +49,21 @@ pub struct GameAssets { #[asset(path = "models/spawn.glb#Scene0")] pub mesh_spawn: Handle, + #[asset(path = "models/cash.glb#Scene0")] + pub mesh_cash: Handle, + #[asset(path = "models/alien_naked.glb#Scene0")] pub mesh_alien: Handle, - #[asset(path = "models/cash.glb#Scene0")] - pub mesh_cash: Handle, + #[asset( + paths( + "models/alien_naked.glb#Animation0", + "models/alien_naked.glb#Animation1", + "models/alien_naked.glb#Animation2", + ), + collection(mapped, typed) + )] + pub animations_alien: HashMap>, } pub struct LoadingPlugin;