The production TileAssetExtractor (Phase B3): drives the per-product demand extraction seam (Phase B2) and commits the resulting meshes into the wasm tile pool.

Asset identity: one asset per produced mesh, keyed by the mesh's localID (the representation item). Mapped items reuse representation geometry across products, so shared representations become shared assets — the sharing the pools refcount.

Contract notes:

  • assetsOf runs the (expensive) per-product extraction on first call and caches the asset list; sizes are exact reified byte costs, so the TS accounting layer admits with real numbers. This front-loads cost into assetsOf by design — see GeometryTilePool.extract's pricing pass.
  • materialize commits an already-extracted mesh into the pool; discard releases the wasm tile. The CPU-side canonical mesh is left in place in this phase (serving uploads from tiles — and dropping the fat working geometry — is the Phase C flip).

Implements

Constructors

Methods

  • The assets (meshes) a product references, extracting it on first ask.

    Attribution walks the product's representation-item closure (recursing through mapped items into their shared source representations) and claims every item that has an extracted mesh — NOT a before/after diff of the mesh set. The distinction is the mapped-item case: a shared source's meshes already exist when the second product asks, so a diff would omit them and its tile would not hold references to geometry it renders. Closure attribution is extraction-order independent.

    Parameters

    • productLocalID: number

      The product's local ID.

    Returns GeometryAsset<number>[]

    One asset per referenced mesh, keyed by the mesh's representation-item localID (shared across products for mapped sources), sized at exact reified cost.

  • Commit one extracted mesh into the wasm tile pool.

    Parameters

    • assetID: number

      The mesh (representation item) localID.

    Returns void