Skip to content

Commit d60b715

Browse files
authored
Add SceneInstanceReady (#9313)
# Objective Closes #9115, replaces #9117. ## Solution Emit event when scene is ready. --- ## Changelog ### Added - `SceneInstanceReady` event when scene becomes ready.
1 parent 55a7109 commit d60b715

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

crates/bevy_scene/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ impl Plugin for ScenePlugin {
4040
app.add_asset::<DynamicScene>()
4141
.add_asset::<Scene>()
4242
.init_asset_loader::<SceneLoader>()
43+
.add_event::<SceneInstanceReady>()
4344
.init_resource::<SceneSpawner>()
4445
.add_systems(SpawnScene, (scene_spawner, scene_spawner_system).chain());
4546
}

crates/bevy_scene/src/scene_spawner.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{DynamicScene, Scene};
22
use bevy_asset::{AssetEvent, Assets, Handle};
33
use bevy_ecs::{
44
entity::{Entity, EntityMap},
5-
event::{Events, ManualEventReader},
5+
event::{Event, Events, ManualEventReader},
66
reflect::AppTypeRegistry,
77
system::{Command, Resource},
88
world::{Mut, World},
@@ -12,6 +12,15 @@ use bevy_utils::{tracing::error, HashMap, HashSet};
1212
use thiserror::Error;
1313
use uuid::Uuid;
1414

15+
/// Emitted when [`crate::SceneInstance`] becomes ready to use.
16+
///
17+
/// See also [`SceneSpawner::instance_is_ready`].
18+
#[derive(Event)]
19+
pub struct SceneInstanceReady {
20+
/// Entity to which the scene was spawned as a child.
21+
pub parent: Entity,
22+
}
23+
1524
/// Information about a scene instance.
1625
#[derive(Debug)]
1726
pub struct InstanceInfo {
@@ -285,6 +294,8 @@ impl SceneSpawner {
285294
child: entity,
286295
}
287296
.apply(world);
297+
298+
world.send_event(SceneInstanceReady { parent });
288299
}
289300
}
290301
} else {

0 commit comments

Comments
 (0)