mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 06:30:19 +00:00
c893b99224
This can be your 6 months post-christmas present. # Objective - Make `.system` optional - yeet - It's ugly - Alternative title: `.system` is dead; long live `.system` - **yeet** ## Solution - Use a higher ranked lifetime, and some trait magic. N.B. This PR does not actually remove any `.system`s, except in a couple of examples. Once this is merged we can do that piecemeal across crates, and decide on syntax for labels.
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use bevy::prelude::*;
|
|
|
|
fn main() {
|
|
App::build()
|
|
.add_plugins(DefaultPlugins)
|
|
.add_startup_system(setup)
|
|
.add_system(animate_sprite_system)
|
|
.run();
|
|
}
|
|
|
|
fn animate_sprite_system(
|
|
time: Res<Time>,
|
|
texture_atlases: Res<Assets<TextureAtlas>>,
|
|
mut query: Query<(&mut Timer, &mut TextureAtlasSprite, &Handle<TextureAtlas>)>,
|
|
) {
|
|
for (mut timer, mut sprite, texture_atlas_handle) in query.iter_mut() {
|
|
timer.tick(time.delta());
|
|
if timer.finished() {
|
|
let texture_atlas = texture_atlases.get(texture_atlas_handle).unwrap();
|
|
sprite.index = ((sprite.index as usize + 1) % texture_atlas.textures.len()) as u32;
|
|
}
|
|
}
|
|
}
|
|
|
|
fn setup(
|
|
mut commands: Commands,
|
|
asset_server: Res<AssetServer>,
|
|
mut texture_atlases: ResMut<Assets<TextureAtlas>>,
|
|
) {
|
|
let texture_handle = asset_server.load("textures/rpg/chars/gabe/gabe-idle-run.png");
|
|
let texture_atlas = TextureAtlas::from_grid(texture_handle, Vec2::new(24.0, 24.0), 7, 1);
|
|
let texture_atlas_handle = texture_atlases.add(texture_atlas);
|
|
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
|
|
commands
|
|
.spawn_bundle(SpriteSheetBundle {
|
|
texture_atlas: texture_atlas_handle,
|
|
transform: Transform::from_scale(Vec3::splat(6.0)),
|
|
..Default::default()
|
|
})
|
|
.insert(Timer::from_seconds(0.1, true));
|
|
}
|