Auto-fix for GEOMETRY_NON_WATERTIGHT — flips a SceneGeometry's
primitive from SolidPrimitive to SurfacePrimitive. The
inspection has already proven the geometry isn't a closed
manifold, so the solid claim is wrong; surface is the honest
label and downstream pipelines (back-face culling decisions,
BVH closed-cell containment, IFC inside / outside) get correct
semantics.
Index stride and per-vertex requirements are the same for both
primitives — the change is purely semantic. Mutates primitive
in place via typed cast (same pattern the rest of the
geometry-fix family uses for indices / *Compressed).
Idempotent: returns {fixed: false} when the geometry is
already SurfacePrimitive (or any other primitive).
Auto-fix for
GEOMETRY_NON_WATERTIGHT— flips a SceneGeometry'sprimitivefromSolidPrimitivetoSurfacePrimitive. The inspection has already proven the geometry isn't a closed manifold, so the solid claim is wrong; surface is the honest label and downstream pipelines (back-face culling decisions, BVH closed-cell containment, IFC inside / outside) get correct semantics.Index stride and per-vertex requirements are the same for both primitives — the change is purely semantic. Mutates
primitivein place via typed cast (same pattern the rest of the geometry-fix family uses forindices/*Compressed).Idempotent: returns
{fixed: false}when the geometry is alreadySurfacePrimitive(or any other primitive).