import { Entity, World } from "koota"; //#region src/ecs/systems/batchRemoveSystem.d.ts /** * Create a batch-remove system bound to its own change-tracking * subscription. * * Each SpriteGroup constructs one. Removes sprites from batches when * they lose IsRenderable. * * Triggered by Removed(IsRenderable). Reads the InBatch relation to find * the batch entity and slot, frees the slot, removes the relation, * and recycles the batch if empty. * * Entity destruction is deferred — zombie entities are returned to the * caller and destroyed at the top of the next frame by * `deferredDestroySystem`. This pushes koota's cascading trait removal * cost out of the hot render frame. */ declare function createBatchRemoveSystem(): (world: World, pendingDestroy: Entity[]) => void; /** * Destroy entities deferred from the previous frame's batchRemoveSystem. * * Runs at the top of the frame before any other system, so koota's * cascading trait removal cost is paid outside the hot render path. * The zombie entities are invisible to all systems (no IsRenderable, * no IsBatched) so the one-frame delay is safe. */ declare function deferredDestroySystem(pendingDestroy: Entity[]): void; //#endregion export { createBatchRemoveSystem, deferredDestroySystem }; //# sourceMappingURL=batchRemoveSystem.d.ts.map