From 302ffbf698a2dc4734d23147e397d8d51063ae47 Mon Sep 17 00:00:00 2001 From: Hennadii Chernyshchyk Date: Mon, 31 Jul 2023 10:45:55 +0300 Subject: [PATCH] Add `SceneInstanceReady` --- crates/bevy_scene/src/lib.rs | 1 + crates/bevy_scene/src/scene_spawner.rs | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/bevy_scene/src/lib.rs b/crates/bevy_scene/src/lib.rs index e3ca8a2fee573..ca8968bf837c1 100644 --- a/crates/bevy_scene/src/lib.rs +++ b/crates/bevy_scene/src/lib.rs @@ -39,6 +39,7 @@ impl Plugin for ScenePlugin { app.add_asset::() .add_asset::() .init_asset_loader::() + .add_event::() .init_resource::() .add_systems(Update, scene_spawner_system) // Systems `*_bundle_spawner` must run before `scene_spawner_system` diff --git a/crates/bevy_scene/src/scene_spawner.rs b/crates/bevy_scene/src/scene_spawner.rs index 732b8593f1a21..8af5a4a54abfe 100644 --- a/crates/bevy_scene/src/scene_spawner.rs +++ b/crates/bevy_scene/src/scene_spawner.rs @@ -2,7 +2,7 @@ use crate::{DynamicScene, Scene}; use bevy_asset::{AssetEvent, Assets, Handle}; use bevy_ecs::{ entity::{Entity, EntityMap}, - event::{Events, ManualEventReader}, + event::{Event, Events, ManualEventReader}, reflect::AppTypeRegistry, system::{Command, Resource}, world::{Mut, World}, @@ -12,6 +12,12 @@ use bevy_utils::{tracing::error, HashMap, HashSet}; use thiserror::Error; use uuid::Uuid; +/// Emitted when [`crate::SceneInstance`] becomes ready to use. +/// +/// See also [`SceneSpawner::instance_is_ready`]. +#[derive(Event)] +pub struct SceneInstanceReady(pub Entity); + /// Information about a scene instance. #[derive(Debug)] pub struct InstanceInfo { @@ -285,6 +291,7 @@ impl SceneSpawner { child: entity, } .apply(world); + world.send_event(SceneInstanceReady(parent)); } } } else {