AbstractReadonlyidStable identity (§53), assigned at construction from a monotonic counter
and formatted geometry-<n>. Unique within a process, ascending in
construction order, never reused — and, crucially, never copied: a
clone is a different geometry and gets the next id (see
Geometry.clone).
AbstractboundsThis geometry's BoundingVolume in its own local space, recomputed only when Geometry.version has advanced since the last computation.
The property spelling §53 declares; identical in every respect to calling Geometry.computeBounds, including the returned object's identity.
AbstractdisposedWhether Geometry.dispose has run.
AbstractversionCounter incremented on every mutation (§53). Backends cache GPU buffers
against it; treat it as opaque and compare for inequality, exactly like
Transform.version. Monotonic, never wraps in a realistic session.
AbstractcloneAn independent copy of this geometry, with a new Geometry.id
and a version of 0.
Deep in the data, shallow in nothing: see BufferGeometry.clone for the contract and the argument behind it.
AbstractcomputeRecomputes the bounding volume if the version has advanced, and returns it (§53). Allocates nothing: the returned object and its vectors are owned by the geometry and rewritten in place by the next recompute.
AbstractdisposeReleases this geometry's CPU-side data (§83). Idempotent.
§53's abstract root of the geometry family: stable identity, a mutation counter, a bounding volume, cloning, and disposal.
A backend that only needs identity and freshness — a cache, a diagnostic, a §83 accounting pass — should take a
Geometry. A backend that needs vertex data still takes the concrete BufferGeometry, because the attribute layout is what it reads and §53's other family members do not exist yet to abstract over.See the module header for why the family below this base is deliberately one class deep today.