Skip to content

Commit ebd469d

Browse files
committed
update for mandatory component derive
1 parent 9440629 commit ebd469d

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

crates/bevy_scene/src/bundle.rs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,39 @@
11
use bevy_asset::Handle;
22
use bevy_ecs::{
3-
bundle::Bundle, change_detection::ResMut, entity::Entity, prelude::Changed, system::Query,
3+
bundle::Bundle,
4+
change_detection::ResMut,
5+
entity::Entity,
6+
prelude::{Changed, Component},
7+
system::Query,
48
};
59
use bevy_transform::components::{GlobalTransform, Transform};
610

711
use crate::{DynamicScene, InstanceId, Scene, SceneSpawner};
812

13+
#[derive(Default, Component)]
14+
pub struct HasSceneInstance(Option<InstanceId>);
15+
916
#[derive(Default, Bundle)]
1017
pub struct SceneBundle {
1118
pub scene: Handle<Scene>,
12-
pub instance_id: Option<InstanceId>,
19+
pub instance_id: HasSceneInstance,
1320
pub transform: Transform,
1421
pub global_transform: GlobalTransform,
1522
}
1623

1724
#[allow(clippy::type_complexity)]
1825
pub fn scene_bundle_spawner(
1926
mut scene_to_spawn: Query<
20-
(Entity, &Handle<Scene>, &mut Option<InstanceId>),
27+
(Entity, &Handle<Scene>, &mut HasSceneInstance),
2128
Changed<Handle<Scene>>,
2229
>,
2330
mut scene_spawner: ResMut<SceneSpawner>,
2431
) {
2532
for (entity, scene, mut instance) in scene_to_spawn.iter_mut() {
26-
if let Some(id) = instance.replace(scene_spawner.spawn_as_child(scene.clone(), entity)) {
33+
if let Some(id) = instance
34+
.0
35+
.replace(scene_spawner.spawn_as_child(scene.clone(), entity))
36+
{
2737
scene_spawner.despawn_instance(id);
2838
}
2939
}
@@ -32,22 +42,23 @@ pub fn scene_bundle_spawner(
3242
#[derive(Default, Bundle)]
3343
pub struct DynamicSceneBundle {
3444
pub scene: Handle<DynamicScene>,
35-
pub instance_id: Option<InstanceId>,
45+
pub instance_id: HasSceneInstance,
3646
pub transform: Transform,
3747
pub global_transform: GlobalTransform,
3848
}
3949

4050
#[allow(clippy::type_complexity)]
4151
pub fn dynamic_scene_bundle_spawner(
4252
mut dynamic_scene_to_spawn: Query<
43-
(Entity, &Handle<DynamicScene>, &mut Option<InstanceId>),
53+
(Entity, &Handle<DynamicScene>, &mut HasSceneInstance),
4454
Changed<Handle<DynamicScene>>,
4555
>,
4656
mut scene_spawner: ResMut<SceneSpawner>,
4757
) {
4858
for (entity, dynamic_scene, mut instance) in dynamic_scene_to_spawn.iter_mut() {
49-
if let Some(id) =
50-
instance.replace(scene_spawner.spawn_dynamic_as_child(dynamic_scene.clone(), entity))
59+
if let Some(id) = instance
60+
.0
61+
.replace(scene_spawner.spawn_dynamic_as_child(dynamic_scene.clone(), entity))
5162
{
5263
scene_spawner.despawn_instance(id);
5364
}

examples/game/alien_cake_addict.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,6 @@ fn spawn_bonus(
346346
transform: Transform::from_xyz(0.0, 2.0, 0.0),
347347
..Default::default()
348348
});
349-
children.spawn_scene(game.bonus.handle.clone());
350349
})
351350
.id(),
352351
);

0 commit comments

Comments
 (0)