forked from corpsmoderne/bevy-laser
		
	initial commit
This commit is contained in:
		
						commit
						a679914fa0
					
				
							
								
								
									
										3928
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										3928
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Cargo.toml
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										80
									
								
								src/main.rs
									
									
									
									
									
										Normal 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); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user