#![allow(clippy::type_complexity)]
#![warn(missing_debug_implementations, missing_docs, clippy::doc_markdown)]
use bevy::prelude::*;
use bevy_pretty_text::glyph::{Glyph, GlyphSpanEntity};
mod glitch;
mod scramble;
mod shake;
mod wave;
mod wobble;
pub use glitch::Glitch;
pub use scramble::{Scramble, ScrambleLifetime, ScrambleSpeed};
pub use shake::Shake;
pub use wave::Wave;
pub use wobble::Wobble;
extern crate pretty_text as bevy_pretty_text;
#[derive(Debug)]
pub struct EffectsPlugin;
impl Plugin for EffectsPlugin {
fn build(&self, app: &mut App) {
glitch::plugin(app);
scramble::plugin(app);
shake::plugin(app);
wave::plugin(app);
wobble::plugin(app);
}
}
pub fn apply_effect_on_glyphs<Effect: Component, Marker: Default + Component>(
trigger: Trigger<OnAdd, Glyph>,
mut commands: Commands,
spans: Query<&GlyphSpanEntity>,
effects: Query<&Effect>,
) -> Result {
let span_entity = spans.get(trigger.target())?;
if effects.get(span_entity.0).is_ok() {
commands.entity(trigger.target()).insert(Marker::default());
}
Ok(())
}