import { SpriteBatch } from "../pipeline/SpriteBatch.js"; import { Sprite2D } from "../sprites/Sprite2D.js"; //#region src/react/batchPicking.d.ts /** * True when a sprite is R3F-managed (`object.__r3f` present). A NON-proxied * such sprite handles its own picking through R3F's per-object interaction * list — so `SpriteBatch.raycast` must skip it as a grid candidate, or it * would be hit-tested twice (once by R3F, once by the batch). Vanilla * (three.js) sprites lack `__r3f` and are picked ONLY via the batch grid. */ declare function isR3FManaged(sprite: Sprite2D): boolean; /** * Route an R3F-managed sprite's picking through its batch. Called by the * batching systems whenever a sprite lands in a batch (assign/reassign). * No-op for vanilla sprites (no `__r3f`) and for sprites whose `raycast` * is already nulled by the user or `hitTestMode = 'none'` — that null is * an opt-out this proxy must respect, not replace. */ declare function proxyPickToBatch(sprite: Sprite2D, batch: SpriteBatch): void; /** * Undo {@link proxyPickToBatch} when a sprite leaves its batch * (remove/reassign/evict/unenroll). Restores the prototype `raycast` * (unless `hitTestMode = 'none'` owns the null), re-lists the sprite in * R3F's interaction list if it still has handlers, and unregisters the * batch when its last proxied member leaves. */ declare function unproxyPickFromBatch(sprite: Sprite2D, batch: SpriteBatch): void; /** * Force-unregister a batch from its R3F interaction list. Called when * the last proxied member leaves, and defensively on batch recycle / * dispose so a pooled or torn-down mesh never lingers in a live store. */ declare function retireBatchPicking(batch: SpriteBatch): void; //#endregion export { isR3FManaged, proxyPickToBatch, retireBatchPicking, unproxyPickFromBatch }; //# sourceMappingURL=batchPicking.d.ts.map