use beet::examples::scenes;
use beet::prelude::*;
use bevy::animation::RepeatAnimation;
use std::time::Duration;
pub fn main() {
App::new()
.add_plugins(running_beet_example_plugin)
.add_systems(
Startup,
(
scenes::ui_terminal,
scenes::lighting_3d,
scenes::ground_3d,
setup,
),
)
.run();
}
fn setup(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut anim_graphs: ResMut<Assets<AnimationGraph>>,
) {
commands.spawn((
Name::new("Camera"),
Camera3d::default(),
Transform::from_xyz(10.0, 10.0, 15.0)
.looking_at(Vec3::new(0.0, 2.0, 0.0), Vec3::Y),
));
let Foxie {
graph_handle,
idle_index,
idle_clip,
walk_index,
walk_clip,
} = Foxie::new(&asset_server, &mut anim_graphs);
let transition_duration = Duration::from_secs_f32(0.5);
commands.spawn((
Name::new("Foxie"),
Transform::from_scale(Vec3::splat(0.1)),
SceneRoot(asset_server.load("misc/fox.glb#Scene0")),
graph_handle,
children![(
Name::new("Behavior"),
TriggerOnAnimationReady::run(),
Sequence::default(),
Repeat::default(),
children![
(
Name::new("Idle"),
PlayAnimation::new(idle_index)
.with_transition_duration(transition_duration),
TriggerOnAnimationEnd::new(idle_clip, idle_index, Outcome::Pass)
.with_transition_duration(transition_duration)
),
(
Name::new("Walking"),
PlayAnimation::new(walk_index)
.repeat(RepeatAnimation::Count(8))
.with_transition_duration(transition_duration),
TriggerOnAnimationEnd::new(walk_clip, walk_index, Outcome::Pass)
.with_transition_duration(transition_duration)
)
]
)]
));
}