import { MaterialEffect } from "../../materials/MaterialEffect.js"; import { Trait, World } from "koota"; //#region src/ecs/systems/batchAssignSystem.d.ts /** * Create a batch-assign system bound to its own scratch state. * * Each SpriteGroup constructs one. The returned function takes a world * + effect-trait map and assigns newly renderable sprites to batches. * * Triggered by Added(IsRenderable). Computes the run key from * (sortLayer, materialId, layers.mask), finds or creates a batch in that run, allocates * a slot, and sets the InBatch relation with slot data. Also performs * a one-time full buffer sync from trait state. * * Closes over its own `Added` subscription + `dirtyMeshes`/`pendingCounts` * scratch collections so multiple SpriteGroups don't share Koota * change-tracking state and the collections are cleared-and-reused * instead of allocated per frame. */ declare function createBatchAssignSystem(): (world: World, effectTraits: ReadonlyMap) => boolean; //#endregion export { createBatchAssignSystem }; //# sourceMappingURL=batchAssignSystem.d.ts.map