b3d-destroyable

A thing that can take damage and be destroyed — the scene-side bridge to the pure CombatWorld (see destroyable.ts / COMBAT-DESIGN.md). Drop it into a <tosi-b3d> and it registers a Destroyable in the scene's combat world, drives a placeholder cube mesh (real meshes/GLB later), and runs its death outcome when killed — whether by a direct hit or a chain reaction resolved in the combat tick.

It participates in the floating origin: because AbstractMesh treats the x/y/z attributes as the source of truth for the mesh position, this uses onOriginShift to shift BOTH the mesh node and its x/z attributes on a rebase (NOT registerWorldRoot, which would leave the attributes stale so a later render would un-shift the mesh).

Attributes: capacity, armor, regenRate, regenDelay, protectedBy, protection, plus size/color for the placeholder cube and the usual x/y/z/meshName. Set .chain (a ChainLink[]) in code for chain reactions. Call .damage(n) to hurt it (a warhead will do this on contact).