From 2cd20d421b609d6af033aa427774922d3433df50 Mon Sep 17 00:00:00 2001 From: Multirious Date: Thu, 4 Apr 2024 10:27:47 +0700 Subject: [PATCH] Update event example --- examples/demo/event.rs | 51 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/examples/demo/event.rs b/examples/demo/event.rs index 1aef752..b5ceb30 100644 --- a/examples/demo/event.rs +++ b/examples/demo/event.rs @@ -19,11 +19,14 @@ struct EffectPos { boom: Vec3, } +#[derive(Component)] +struct Triangle; + fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(Camera2dBundle::default()); - let start_x = -200.; - let end_x = 200.; + let start_x = -300.; + let end_x = 300.; commands.insert_resource(EffectPos { trail: Vec3::new(start_x - 40., 0., 0.), @@ -36,6 +39,7 @@ fn setup(mut commands: Commands, asset_server: Res) { commands .spawn(( + Triangle, SpriteBundle { texture: asset_server.load("triangle_filled.png"), ..Default::default() @@ -43,10 +47,11 @@ fn setup(mut commands: Commands, asset_server: Res) { SpanTweenerBundle::new(secs(2.)).with_repeat(Repeat::Infinitely), )) .with_children(|c| { - // &'static str is available as an even data but recommended to use - // dedicated custom type instead to leverage the rust type system. + // &'static str is available as an default event data but it's + // recommended to use dedicated custom type instead to leverage the + // rust type system. c.span_tweens() - .tween_event(TweenEventData::with_data("trail")) + .tween_event(TweenEventData::with_data("bump")) .tween( secs(1.), EaseFunction::ExponentialIn, @@ -61,10 +66,15 @@ fn setup(mut commands: Commands, asset_server: Res) { }), ), ) + .backward(secs(0.2)) + .tween_event_for( + secs(0.2), + TweenEventData::with_data("small_boom"), + ) .tween_event(TweenEventData::with_data("boom")) .tween( secs(1.), - EaseFunction::ExponentialOut, + EaseFunction::CircularOut, ( ComponentTween::new(interpolate::Translation { start: Vec3::new(end_x, 0., 0.), @@ -86,10 +96,11 @@ fn effect_system( mut commands: Commands, asset_server: Res, effect_pos: Res, + q_triangle: Query<&Transform, With>, mut event: EventReader>, ) { event.read().for_each(|event| match event.data { - "trail" => { + "bump" => { commands.spawn(( Effect, SpriteBundle { @@ -112,6 +123,28 @@ fn effect_system( }), )); } + "small_boom" => { + commands.spawn(( + Effect, + SpriteBundle { + texture: asset_server.load("circle.png"), + transform: Transform::from_translation( + q_triangle.single().translation, + ), + ..Default::default() + }, + SpanTweenerBundle::new(secs(0.1)).tween_here(), + EaseFunction::Linear, + ComponentTween::new(interpolate::Scale { + start: Vec3::new(0.5, 0.5, 0.), + end: Vec3::new(3., 3., 0.), + }), + ComponentTween::new(interpolate::SpriteColor { + start: Color::WHITE.with_a(0.2), + end: Color::WHITE.with_a(0.), + }), + )); + } "boom" => { commands.spawn(( Effect, @@ -121,13 +154,13 @@ fn effect_system( ..Default::default() }, SpanTweenerBundle::new(secs(0.5)).tween_here(), - EaseFunction::ExponentialOut, + EaseFunction::QuadraticOut, ComponentTween::new(interpolate::Scale { start: Vec3::new(1., 1., 0.), end: Vec3::new(15., 15., 0.), }), ComponentTween::new(interpolate::SpriteColor { - start: Color::WHITE, + start: Color::WHITE.with_a(0.5), end: Color::WHITE.with_a(0.), }), ));