From 5607e0f039fa50c6ed2fc65af2866d60ac64bf8b Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 26 Feb 2025 16:35:23 +0300 Subject: [PATCH] fix: entity:despawn in on_save not preventing entity save --- src/objects/Entities.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/objects/Entities.cpp b/src/objects/Entities.cpp index 09bb7dbb..4e9f8894 100644 --- a/src/objects/Entities.cpp +++ b/src/objects/Entities.cpp @@ -370,11 +370,14 @@ dv::value Entities::serialize(const Entity& entity) { dv::value Entities::serialize(const std::vector& entities) { auto list = dv::list(); for (auto& entity : entities) { - if (!entity.getDef().save.enabled) { + const EntityId& eid = entity.getID(); + if (!entity.getDef().save.enabled || eid.destroyFlag) { continue; } level.entities->onSave(entity); - list.add(level.entities->serialize(entity)); + if (!eid.destroyFlag) { + list.add(level.entities->serialize(entity)); + } } return list; } @@ -597,9 +600,9 @@ bool Entities::hasBlockingInside(AABB aabb) { std::vector Entities::getAllInside(AABB aabb) { std::vector collected; - auto view = registry.view(); - for (auto [entity, transform] : view.each()) { - if (aabb.contains(transform.pos)) { + auto view = registry.view(); + for (auto [entity, eid, transform] : view.each()) { + if (!eid.destroyFlag && aabb.contains(transform.pos)) { const auto& found = uids.find(entity); if (found == uids.end()) { continue;