From 9c29480d41f32c9b2d4dc2ca6aeca27d650c3610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Mockers?= Date: Sun, 4 Jul 2021 00:50:30 +0200 Subject: [PATCH] remove `SpawnScene` command --- crates/bevy_scene/src/command.rs | 56 --------------------------- crates/bevy_scene/src/lib.rs | 7 +--- examples/3d/update_gltf_scene.rs | 15 +++---- examples/asset/hot_asset_reloading.rs | 5 ++- examples/game/alien_cake_addict.rs | 33 +++++++--------- examples/window/multiple_windows.rs | 5 ++- 6 files changed, 27 insertions(+), 94 deletions(-) delete mode 100644 crates/bevy_scene/src/command.rs diff --git a/crates/bevy_scene/src/command.rs b/crates/bevy_scene/src/command.rs deleted file mode 100644 index f7d04c60652c4e..00000000000000 --- a/crates/bevy_scene/src/command.rs +++ /dev/null @@ -1,56 +0,0 @@ -use bevy_asset::Handle; -use bevy_ecs::{ - entity::Entity, - system::{Command, Commands}, - world::World, -}; -use bevy_transform::hierarchy::ChildBuilder; - -use crate::{Scene, SceneSpawner}; - -pub struct SpawnScene { - scene_handle: Handle, -} - -impl Command for SpawnScene { - fn write(self: Box, world: &mut World) { - let mut spawner = world.get_resource_mut::().unwrap(); - spawner.spawn(self.scene_handle); - } -} - -pub trait SpawnSceneCommands { - fn spawn_scene(&mut self, scene: Handle); -} - -impl<'a> SpawnSceneCommands for Commands<'a> { - fn spawn_scene(&mut self, scene_handle: Handle) { - self.add(SpawnScene { scene_handle }); - } -} - -pub struct SpawnSceneAsChild { - scene_handle: Handle, - parent: Entity, -} - -impl Command for SpawnSceneAsChild { - fn write(self: Box, world: &mut World) { - let mut spawner = world.get_resource_mut::().unwrap(); - spawner.spawn_as_child(self.scene_handle, self.parent); - } -} - -pub trait SpawnSceneAsChildCommands { - fn spawn_scene(&mut self, scene: Handle) -> &mut Self; -} - -impl<'a, 'b> SpawnSceneAsChildCommands for ChildBuilder<'a, 'b> { - fn spawn_scene(&mut self, scene_handle: Handle) -> &mut Self { - self.add_command(SpawnSceneAsChild { - scene_handle, - parent: self.parent_entity(), - }); - self - } -} diff --git a/crates/bevy_scene/src/lib.rs b/crates/bevy_scene/src/lib.rs index 84ebf763f9f924..abd86d11b23661 100644 --- a/crates/bevy_scene/src/lib.rs +++ b/crates/bevy_scene/src/lib.rs @@ -1,5 +1,4 @@ mod bundle; -mod command; mod dynamic_scene; mod scene; mod scene_loader; @@ -7,7 +6,6 @@ mod scene_spawner; pub mod serde; pub use bundle::*; -pub use command::*; pub use dynamic_scene::*; pub use scene::*; pub use scene_loader::*; @@ -15,10 +13,7 @@ pub use scene_spawner::*; pub mod prelude { #[doc(hidden)] - pub use crate::{ - DynamicScene, DynamicSceneBundle, Scene, SceneBundle, SceneSpawner, - SpawnSceneAsChildCommands, SpawnSceneCommands, - }; + pub use crate::{DynamicScene, DynamicSceneBundle, Scene, SceneBundle, SceneSpawner}; } use bevy_app::prelude::*; diff --git a/examples/3d/update_gltf_scene.rs b/examples/3d/update_gltf_scene.rs index c552b82727c308..6d044bf6028599 100644 --- a/examples/3d/update_gltf_scene.rs +++ b/examples/3d/update_gltf_scene.rs @@ -34,16 +34,11 @@ fn setup( ..Default::default() }); - // Spawn the scene as a child of another entity. This first scene will be translated backward - // with its parent - commands - .spawn_bundle(( - Transform::from_xyz(0.0, 0.0, -1.0), - GlobalTransform::identity(), - )) - .with_children(|parent| { - parent.spawn_scene(asset_server.load("models/FlightHelmet/FlightHelmet.gltf#Scene0")); - }); + commands.spawn_bundle(SceneBundle { + transform: Transform::from_xyz(0.0, 0.0, -1.0), + scene: asset_server.load("models/FlightHelmet/FlightHelmet.gltf#Scene0"), + ..Default::default() + }); // Spawn a second scene, and keep its `instance_id` let instance_id = diff --git a/examples/asset/hot_asset_reloading.rs b/examples/asset/hot_asset_reloading.rs index ebe9a52e8acc09..f33533541aa78a 100644 --- a/examples/asset/hot_asset_reloading.rs +++ b/examples/asset/hot_asset_reloading.rs @@ -21,7 +21,10 @@ fn setup(mut commands: Commands, asset_server: Res) { // You should see the changes immediately show up in your app. // mesh - commands.spawn_scene(scene_handle); + commands.spawn_bundle(SceneBundle { + scene: scene_handle, + ..Default::default() + }); // light commands.spawn_bundle(PointLightBundle { transform: Transform::from_xyz(4.0, 5.0, 4.0), diff --git a/examples/game/alien_cake_addict.rs b/examples/game/alien_cake_addict.rs index 464d281d9511c6..bc96f793aaa907 100644 --- a/examples/game/alien_cake_addict.rs +++ b/examples/game/alien_cake_addict.rs @@ -117,14 +117,11 @@ fn setup(mut commands: Commands, asset_server: Res, mut game: ResMu (0..BOARD_SIZE_I) .map(|i| { let height = rand::thread_rng().gen_range(-0.1..0.1); - commands - .spawn_bundle(( - Transform::from_xyz(i as f32, height - 0.2, j as f32), - GlobalTransform::identity(), - )) - .with_children(|cell| { - cell.spawn_scene(cell_scene.clone()); - }); + commands.spawn_bundle(SceneBundle { + transform: Transform::from_xyz(i as f32, height - 0.2, j as f32), + scene: cell_scene.clone(), + ..Default::default() + }); Cell { height } }) .collect() @@ -134,8 +131,8 @@ fn setup(mut commands: Commands, asset_server: Res, mut game: ResMu // spawn the game character game.player.entity = Some( commands - .spawn_bundle(( - Transform { + .spawn_bundle(SceneBundle { + transform: Transform { translation: Vec3::new( game.player.i as f32, game.board[game.player.j][game.player.i].height, @@ -144,10 +141,8 @@ fn setup(mut commands: Commands, asset_server: Res, mut game: ResMu rotation: Quat::from_rotation_y(-std::f32::consts::FRAC_PI_2), ..Default::default() }, - GlobalTransform::identity(), - )) - .with_children(|cell| { - cell.spawn_scene(asset_server.load("models/AlienCake/alien.glb#Scene0")); + scene: asset_server.load("models/AlienCake/alien.glb#Scene0"), + ..Default::default() }) .id(), ); @@ -320,8 +315,8 @@ fn spawn_bonus( } game.bonus.entity = Some( commands - .spawn_bundle(( - Transform { + .spawn_bundle(SceneBundle { + transform: Transform { translation: Vec3::new( game.bonus.i as f32, game.board[game.bonus.j][game.bonus.i].height + 0.2, @@ -329,10 +324,8 @@ fn spawn_bonus( ), ..Default::default() }, - GlobalTransform::identity(), - )) - .with_children(|cell| { - cell.spawn_scene(game.bonus.handle.clone()); + scene: game.bonus.handle.clone(), + ..Default::default() }) .id(), ); diff --git a/examples/window/multiple_windows.rs b/examples/window/multiple_windows.rs index 8848ac4cc36c10..f23fa6d2537101 100644 --- a/examples/window/multiple_windows.rs +++ b/examples/window/multiple_windows.rs @@ -185,7 +185,10 @@ fn setup_pipeline( // SETUP SCENE // add entities to the world - commands.spawn_scene(asset_server.load("models/monkey/Monkey.gltf#Scene0")); + commands.spawn_bundle(SceneBundle { + scene: asset_server.load("models/monkey/Monkey.gltf#Scene0"), + ..Default::default() + }); // light commands.spawn_bundle(PointLightBundle { transform: Transform::from_xyz(4.0, 5.0, 4.0),