 60cf7ca025
			
		
	
	
		60cf7ca025
		
			
		
	
	
	
	
		
			
			## Objective Closes #15408 (somewhat) ## Solution - Moved the existing HTTP transport to its own module with its own plugin (`RemoteHttpPlugin`) (disabled on WASM) - Swapped out the `smol` crate for the smaller crates it re-exports to make it easier to keep out non-wasm code (HTTP transport needs `async-io` which can't build on WASM) - Added a new public `BrpSender` resource holding the matching sender for the `BrpReceiver`' (formally `BrpMailbox`). This allows other crates to send `BrpMessage`'s to the "mailbox". ## Testing TODO --------- Co-authored-by: Matty <weatherleymatthew@gmail.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! A Bevy app that you can connect to with the BRP and edit.
 | |
| 
 | |
| use bevy::{
 | |
|     prelude::*,
 | |
|     remote::{http::RemoteHttpPlugin, RemotePlugin},
 | |
| };
 | |
| use serde::{Deserialize, Serialize};
 | |
| 
 | |
| fn main() {
 | |
|     App::new()
 | |
|         .add_plugins(DefaultPlugins)
 | |
|         .add_plugins(RemotePlugin::default())
 | |
|         .add_plugins(RemoteHttpPlugin::default())
 | |
|         .add_systems(Startup, setup)
 | |
|         .register_type::<Cube>()
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| fn setup(
 | |
|     mut commands: Commands,
 | |
|     mut meshes: ResMut<Assets<Mesh>>,
 | |
|     mut materials: ResMut<Assets<StandardMaterial>>,
 | |
| ) {
 | |
|     // circular base
 | |
|     commands.spawn(PbrBundle {
 | |
|         mesh: meshes.add(Circle::new(4.0)),
 | |
|         material: materials.add(Color::WHITE),
 | |
|         transform: Transform::from_rotation(Quat::from_rotation_x(-std::f32::consts::FRAC_PI_2)),
 | |
|         ..default()
 | |
|     });
 | |
| 
 | |
|     // cube
 | |
|     commands.spawn((
 | |
|         PbrBundle {
 | |
|             mesh: meshes.add(Cuboid::new(1.0, 1.0, 1.0)),
 | |
|             material: materials.add(Color::srgb_u8(124, 144, 255)),
 | |
|             transform: Transform::from_xyz(0.0, 0.5, 0.0),
 | |
|             ..default()
 | |
|         },
 | |
|         Cube(1.0),
 | |
|     ));
 | |
| 
 | |
|     // light
 | |
|     commands.spawn(PointLightBundle {
 | |
|         point_light: PointLight {
 | |
|             shadows_enabled: true,
 | |
|             ..default()
 | |
|         },
 | |
|         transform: Transform::from_xyz(4.0, 8.0, 4.0),
 | |
|         ..default()
 | |
|     });
 | |
| 
 | |
|     // camera
 | |
|     commands.spawn(Camera3dBundle {
 | |
|         transform: Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y),
 | |
|         ..default()
 | |
|     });
 | |
| }
 | |
| 
 | |
| #[derive(Component, Reflect, Serialize, Deserialize)]
 | |
| #[reflect(Component, Serialize, Deserialize)]
 | |
| struct Cube(f32);
 |