ecspresso
Version:
A minimal Entity-Component-System library for typescript and javascript.
18 lines (17 loc) • 784 B
TypeScript
/**
* Lazy monotonic registry mapping layer name → unique bit. Lets pair
* filtering use a single `(a.collidesWithMask & b.layerBit)` check
* instead of `Array.includes` on every collision pair.
*
* One registry per dimension (2D and 3D) — user-defined layer namespaces
* are independent, so bits should not be shared across systems.
*
* Maximum 32 layers per registry (one per bit in a 32-bit signed int).
* Crossing the limit throws on the next `getLayerBit` call.
*/
export interface LayerBitRegistry {
getLayerBit(layer: string): number;
/** OR of `getLayerBit` for every entry. Cached by array reference. */
getCollidesWithMask(collidesWith: readonly string[]): number;
}
export declare function createLayerBitRegistry(label: string): LayerBitRegistry;