initial commit

This commit is contained in:
Marc Planard 2024-03-02 13:56:28 +01:00
commit a679914fa0
3 changed files with 4018 additions and 0 deletions

3928
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

10
Cargo.toml Normal file
View File

@ -0,0 +1,10 @@
[package]
name = "bevy_laser"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = "0.12.1"
rand = "0.8.5"

80
src/main.rs Normal file
View File

@ -0,0 +1,80 @@
use bevy::{
prelude::*,
};
#[derive(Component,Debug)]
struct Pos(Vec2);
#[derive(Component,Debug)]
struct Ray(Vec2);
#[derive(Component,Debug)]
struct Col(Color);
#[derive(Component,Debug)]
struct Size(f32);
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.add_systems(Update, (animate, rand_color, gizmos))
.run()
}
fn setup(
mut commands: Commands,
) {
commands.spawn(Camera2dBundle {
transform: Transform::from_xyz(250.0, 0.0, 0.0),
..default()
});
commands.spawn((
Pos(Vec2::new(0.0, 0.0)),
Ray(Vec2::new(100.0, 5.0)),
Col(Color::rgba(1.0, 0.0, 1.0, 1.0)),
Size(10.0)
));
commands.spawn((
Pos(Vec2::new(0.0, 0.0)),
Ray(Vec2::new(200.0, 1.0)),
Col(Color::rgba(1.0, 1.0, 0.0, 1.0)),
Size(20.0)
));
}
fn animate(
time: Res<Time>,
mut query: Query<(&mut Pos, &Ray)>
) {
let t = time.elapsed_seconds();
for (mut pos, ray) in &mut query {
pos.0.x = (ray.0.y*t).cos() * ray.0.x;
pos.0.y = (ray.0.y*t).sin() * ray.0.x;
}
}
fn rand_color(
time: Res<Time>,
mut query: Query<&mut Col>
) {
let t = time.delta_seconds();
for mut col in &mut query {
if let Color::Rgba{ ref mut red, .. } = col.0 {
*red += t;
if *red > 1.0 {
*red = 0.0;
}
}
}
}
fn gizmos(
mut gizmos: Gizmos,
query: Query<(&Pos,&Col,&Size)>
) {
for (Pos(pos), Col(color), Size(size)) in &query {
gizmos.circle_2d(*pos, *size, *color);
}
}