Class MultiIndexSet<IndexType>

A set of indices each associated with a number identifier.

Type Parameters

  • IndexType extends number

Constructors

Methods

Constructors

  • Construct this with a prefix sum table and matching elements table.

    Type Parameters

    • IndexType extends number

    Parameters

    • prefixSumTable_: Uint32Array<ArrayBufferLike>

      A prefix sum array where each item is its summed index, with an extra element at the end with the entire count.

    • elements_: Uint32Array<ArrayBufferLike>

      The elements in the index, matching the prefix sum indices * 2, where there's 2 elements in the array for each item, packed (first has the bottom 5 bits masked out, and is the top bits, the second is a bit field representing the elements for the top bit range, in a unioned-one-hot representation).

    Returns MultiIndexSet<IndexType>

Methods

  • Count of items for a set of types without materializing entities — popcounts the packed one-hot blocks per type (the prefix sums index 32-element blocks, not items), so it's O(blocks), thousands of times cheaper than iterating a cursor. Per-type ranges are disjoint, but an element multi-mapped under several of the queried types counts once per mapping (matching what a cursor union would visit), so treat multi-type counts as an upper bound (fine for progress totals, its motivating use).

    Parameters

    • Rest...indexTypes: IndexType[]

      The list of types to count.

    Returns number

    The summed count for the given types.

  • Get a cursor that lets you iterate over the union of the sets of multiple indices.

    Parameters

    • Rest...indexTypes: IndexType[]

      The list of types to build a cursor out of.

    Returns IIndexSetCursor

    The cursor for the list of types.

  • Does the set have a particular index for a particular type.

    Parameters

    • indexType: IndexType

      The index type to check for.

    • localID: number

      The dense index in the set to check.

    Returns boolean

    True if it has the type.

  • All the types with a non-zero size in the index.

    Returns IterableIterator<IndexType, any, any>