From a7b61ff6422d2f0bfe8dd0d8b524aa84fa9cd532 Mon Sep 17 00:00:00 2001 From: cohaereo Date: Mon, 25 Mar 2024 22:48:32 +0100 Subject: [PATCH] Fix global entity persistence with new loading system --- src/map.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/map.rs b/src/map.rs index 5a0e3dbd..db18116b 100755 --- a/src/map.rs +++ b/src/map.rs @@ -7,7 +7,7 @@ use rustc_hash::FxHashMap; use crate::{ discord, - ecs::Scene, + ecs::{components::Global, Scene}, mapload_temporary::{self, LoadMapData}, render::{dcs::DcsShared, renderer::RendererShared, EntityRenderer}, resources::Resources, @@ -40,8 +40,21 @@ impl Map { if let Some(promise) = self.promise.take() { if promise.ready().is_some() { match promise.block_and_take() { - Ok(map) => { - self.scene = map.scene; + Ok(mut map) => { + let mut ent_list = vec![]; + + // Get all non-global entities + for (entity, global) in map.scene.query::>().iter() { + if !global.map_or(false, |g| g.0) { + ent_list.push(entity); + } + } + + // Insert all entities from the loaded map into the current scene + for entity in ent_list { + self.scene.spawn(map.scene.take(entity).ok().unwrap()); + } + self.entity_renderers = map.entity_renderers; self.load_state = MapLoadState::Loaded; }