Skip to content
Snippets Groups Projects
systems.rs 1.15 KiB
Newer Older
	play_animations, play_directional_animations, play_directional_override_animation,
	play_override_animation, play_simple_animation, sync_child_animation,
Louis's avatar
Louis committed
use bevy::prelude::*;

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, SystemSet)]
Louis's avatar
Louis committed
pub enum AnimationSystems {
	TickAnimations,
	SyncAnimations,
}

Louis's avatar
Louis committed
#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord, PartialOrd, Event)]
Louis's avatar
Louis committed
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct AnimationCompleted {
	pub entity: Entity,
	pub user_data: u128,
}

pub struct AnimationSystemsPlugin;

impl Plugin for AnimationSystemsPlugin {
	fn build(&self, app: &mut App) {
		app.add_event::<AnimationCompleted>();

Louis's avatar
Louis committed
		app.configure_sets(
			PostUpdate,
			(AnimationSystems::TickAnimations.before(AnimationSystems::SyncAnimations),),
		);
Louis's avatar
Louis committed

		app.add_systems(
			PostUpdate,
			(
				play_animations,
				play_override_animation,
				play_directional_animations,
				play_directional_override_animation,
				.in_set(AnimationSystems::TickAnimations),
		)
		.add_systems(
			PostUpdate,
			sync_child_animation.in_set(AnimationSystems::SyncAnimations),
		);
Louis's avatar
Louis committed
	}
}