From 73ede5c603a127e6c5834e9736766f9438658eef Mon Sep 17 00:00:00 2001 From: Danny McGee Date: Wed, 20 Mar 2024 18:19:20 -0400 Subject: [PATCH] Fix `SceneState` transition flow --- studio/src/scene.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/studio/src/scene.rs b/studio/src/scene.rs index 8ea8da9..0365db2 100644 --- a/studio/src/scene.rs +++ b/studio/src/scene.rs @@ -143,8 +143,19 @@ pub struct LoadingQueue { fn check_loading( mut loading_queue: ResMut, mut st_next: ResMut>, + r_scene_state: Res>, asset_server: Res, ) { + // Avoid transitioning from `SceneState::None` directly to `SceneState::Active`. + // We will always be initializing the scene with _something_, so if the + // `LoadingQueue` is empty when we're in `SceneState::None`, it just means + // our startup routine hasn't yet gotten to the point of processing any + // `Handle`s yet. + if loading_queue.queue.is_empty() && **r_scene_state == SceneState::Loading { + st_next.set(SceneState::Active); + return; + } + if !loading_queue.queue.is_empty() { //filter queue to only include notloaded assets @@ -177,8 +188,6 @@ fn check_loading( } else { st_next.set(SceneState::Loading); } - } else { - st_next.set(SceneState::Active); } }