Files
rust-otus/snake-game/examples/bevy_learning.rs
T
2026-05-29 22:55:17 +03:00

78 lines
2.4 KiB
Rust

/// Эксперименты в ходе прохождения туториала:
/// https://github.com/fogarecious/bevy_tutorial
use bevy::{prelude::*, winit::WinitSettings};
use tracing::Level;
fn main() {
App::new()
// .add_plugins(MinimalPlugins)
.add_plugins(
DefaultPlugins
.build()
.set(bevy::log::LogPlugin {
level: Level::INFO,
filter: "wgpu_hal=warn,bevy_learning=trace".to_string(),
fmt_layer: |_| snake_game::define_log_layer(),
..Default::default()
})
.set(TaskPoolPlugin {
task_pool_options: TaskPoolOptions::with_num_threads(1),
}),
)
.insert_resource(WinitSettings::desktop_app())
.insert_resource(ClearColor(Color::srgb(0.3, 0.6, 0.8)))
.add_systems(Startup, setup)
.add_systems(PostStartup, print_all_entities)
.run();
}
fn setup(mut commands: Commands, _window: Query<&Window>) {
let _window = _window.single().unwrap();
// trace!("window: {:?}", window.single());
let _red = commands
.spawn((
Sprite::from_color(Color::srgb(1., 0., 0.), Vec2::new(30., 30.)),
Transform {
translation: vec3(-20., 30., 1.),
..Default::default()
},
// ChildOf(_root),
))
.id();
let _blue = commands
.spawn((
Sprite::from_color(Color::srgb(0., 0., 1.), Vec2::new(20., 20.)),
Transform {
translation: vec3(20., 30., 1.),
..Default::default()
},
// ChildOf(_root),
))
.id();
let x = -_window.resolution.width() / 2. + 52.;
let y = -_window.resolution.height() / 2. + 52.;
let _root = commands
.spawn((
Sprite::from_color(Color::srgb(1., 1., 1.), Vec2::new(100., 100.)),
Transform {
translation: vec3(x, y, 1.),
// scale: Vec3::new(1., 1., 1.),
..Default::default()
},
))
.id();
commands.entity(_red).insert(ChildOf(_root));
commands.entity(_blue).insert(ChildOf(_root));
commands.spawn(Camera2d);
}
fn print_all_entities(mut commands: Commands, query: Query<Entity>) {
for entity in query {
commands.entity(entity).log_components();
}
}