From 7274416661972c68ff8dfb6c868f01e4183822ef Mon Sep 17 00:00:00 2001 From: extrawurst Date: Sat, 3 May 2025 16:51:11 +0200 Subject: [PATCH] fix character animation loading and flickering --- .../models/characters/angry demonstrator.glb | Bin 235048 -> 234656 bytes src/character.rs | 17 ++++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/assets/models/characters/angry demonstrator.glb b/assets/models/characters/angry demonstrator.glb index 9cf258eda532bbda5a4ec0dfe828133416d55123..cb97340799cae00d86d3ae5d49dce1023b55a09a 100644 GIT binary patch delta 28698 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 delta 29522 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 diff --git a/src/character.rs b/src/character.rs index 11ef8d4..9bac759 100644 --- a/src/character.rs +++ b/src/character.rs @@ -12,6 +12,9 @@ pub struct ProjectileOrigin; #[derive(Component, Debug)] pub struct AnimatedCharacter(pub usize); +#[derive(Component, Debug)] +struct AnimatedCharacterAsset(pub Handle); + #[derive(SystemParam)] pub struct CharacterHierarchy<'w, 's> { descendants: Query<'w, 's, &'static Children>, @@ -49,12 +52,12 @@ pub fn plugin(app: &mut App) { fn spawn( mut commands: Commands, - mut query: Query<(Entity, &AnimatedCharacter), Added>, + query: Query<(Entity, &AnimatedCharacter), Added>, gltf_assets: Res>, assets: Res, heads_db: Res, ) { - for (entity, character) in &mut query { + for (entity, character) in query.iter() { let key = heads_db.head_key(character.0); let handle = assets @@ -72,6 +75,7 @@ fn spawn( .insert(( Transform::from_translation(Vec3::new(0., -1.45, 0.)).with_scale(Vec3::splat(1.2)), SceneRoot(asset.scenes[0].clone()), + AnimatedCharacterAsset(handle.clone()), )) .observe(find_marker_bones); } @@ -123,21 +127,20 @@ fn setup_once_loaded( mut commands: Commands, mut query: Query<(Entity, &mut AnimationPlayer), Added>, parent: Query<&ChildOf>, - animated_character: Query<&AnimatedCharacter>, - assets: Res, + animated_character: Query<(&AnimatedCharacter, &AnimatedCharacterAsset)>, + gltf_assets: Res>, mut graphs: ResMut>, ) { for (entity, mut player) in &mut query { - let Some(_animated_character) = parent + let Some((_character, asset)) = parent .iter_ancestors(entity) .find_map(|ancestor| animated_character.get(ancestor).ok()) else { continue; }; - let (_, handle) = assets.characters.iter().next().unwrap(); - let asset = gltf_assets.get(handle).unwrap(); + let asset = gltf_assets.get(asset.0.id()).unwrap(); let animations = asset .named_animations