From 0fdf8d369a4a4e50d562bcdc5446081827ff0d19 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sat, 22 Feb 2025 00:28:51 +0700 Subject: [PATCH] update roadmap --- ROADMAP.md | 8 +++++++- evolved.lua | 38 +++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 427d378..5884f54 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,11 +2,17 @@ ## Backlog -- add system groups (for disabling for example) - add destroing policies (fragments, phases, systems) +## Known issues + +- destroying of fragments leave chunks with dead fragments (destroing policies) +- destroying of systems can leave dead systems in the library state (destroying policies) +- destroying of phases can leave dead phases in the library state (destroying policies) + ## After first release +- add system groups - auto chunk count reducing - add INDEX fragment trait - add REQUIRES fragment trait diff --git a/evolved.lua b/evolved.lua index 50a4126..2f29328 100644 --- a/evolved.lua +++ b/evolved.lua @@ -1192,36 +1192,36 @@ local __defer_remove_hook ---@param chunk evolved.chunk ---@param place integer local function __detach_entity(chunk, place) - local chunk_entities = chunk.__entities - local chunk_entity_count = chunk.__entity_count + local entities = chunk.__entities + local entity_count = chunk.__entity_count - local chunk_component_count = chunk.__component_count - local chunk_component_storages = chunk.__component_storages + local component_count = chunk.__component_count + local component_storages = chunk.__component_storages - chunk.__entity_count = chunk_entity_count - 1 + if place == entity_count then + entities[place] = nil - if place == chunk_entity_count then - chunk_entities[place] = nil - - for component_index = 1, chunk_component_count do - local component_storage = chunk_component_storages[component_index] + for component_index = 1, component_count do + local component_storage = component_storages[component_index] component_storage[place] = nil end else - local last_entity = chunk_entities[chunk_entity_count] + local last_entity = entities[entity_count] local last_entity_index = last_entity % 0x100000 __entity_places[last_entity_index] = place - chunk_entities[place] = last_entity - chunk_entities[chunk_entity_count] = nil + entities[place] = last_entity + entities[entity_count] = nil - for component_index = 1, chunk_component_count do - local component_storage = chunk_component_storages[component_index] - local last_component = component_storage[chunk_entity_count] + for component_index = 1, component_count do + local component_storage = component_storages[component_index] + local last_component = component_storage[entity_count] component_storage[place] = last_component - component_storage[chunk_entity_count] = nil + component_storage[entity_count] = nil end end + + chunk.__entity_count = entity_count - 1 end ---@param chunk evolved.chunk @@ -1229,10 +1229,6 @@ local function __detach_all_entities(chunk) local entities = chunk.__entities local entity_count = chunk.__entity_count - if entity_count == 0 then - return - end - local component_count = chunk.__component_count local component_storages = chunk.__component_storages