acdream/src/AcDream.Core/Meshing
Erik e2543d0ef0 fix(content): S1 review round - retail default sides shape, mask hoist, upload order
Campaign OVERHAUL S1 review fixes (two Opus lens reviews, findings verified
by the lead against the decomp):

- a raw sides_type outside 0/1/2 constructs retail's default single-side
  shape (ConstructMesh @0x0059DFA0 loop bounds default to 1) instead of
  dropping the polygon; still counted as a data anomaly (corpus has none);
- the positive-surface stippling mask OR runs once per polygon before the
  degenerate-fan guard, as retail's count loop does (pseudo-C 426859-426866);
- untextured slots keep their mask accounting but bake no texture and no
  vertices (contract §9 item 3); the dev pak shrinks by 114 KB;
- failed surface-override / Surface / texture-dependency lookups are
  attempted and logged once per slot, not once per candidate;
- cell-shell batches upload in ascending source surface index, retail's
  built-EnvCell subset draw order (ConstructMesh attribute-range scan,
  DrawMesh @0x0059D4A0); ordinary GfxObj meshes keep storage order;
- CellMesh.HasDrawableGeometry documented as the admission rule without
  texture-dependency resolution (a conservative superset of emission);
- the stippling/surface equivalence sweep's cell half is pinned at zero
  again; InAscendingSurfaceOrder is marked bake/upload/test-only;
- plan §5: reviewer findings are verified by the lead, one skeptic at most
  for a blocking finding, never more than five agents per step.

Three new Content tests pin the mask hoist, the vertex-free untextured
slot, and the single-side fallback. Content 213/213, Core Meshing and
Conformance green, App hermetic 6,757/6,757, Release build 0/0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 19:37:25 +02:00
..
CellMesh.cs fix(content): S1 review round - retail default sides shape, mask hoist, upload order 2026-09-02 19:37:25 +02:00
CellStructSideCandidates.cs fix(content): S1 review round - retail default sides shape, mask hoist, upload order 2026-09-02 19:37:25 +02:00
EntityHydrationRules.cs fix(#79/#93): mesh-empty hydration gate was dropping light-only fixtures 2026-07-09 11:11:16 +02:00
EquippedChildAttachment.cs feat(vfx): bind effects to live animated poses 2026-07-14 10:56:01 +02:00
GfxObjBounds.cs #119: entity bounds from dat vertex data - works for every case, not just multi-part 2026-06-11 22:39:05 +02:00
GfxObjDegradeResolver.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
GfxObjMesh.cs fix #426: extract solid-colour (NO_POS_UVS) faces; skip untextured subsets only on building shells and cells like retail 2026-08-23 11:20:24 +02:00
GfxObjSubMesh.cs feat(vfx): Phase C.1 — PES particle renderer + post-review fixes 2026-04-28 22:47:11 +02:00
MotionResolver.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
RetailUntexturedSurfacePolicy.cs feat(core): S1 one CellStruct interpretation, installed-DAT scan, retire AP-234 2026-09-02 19:11:17 +02:00
SetupMesh.cs fix(core): ACME cross-check fixes — normals, placement, scenery 2026-04-12 22:52:08 +02:00
SetupPartTransforms.cs feat(vfx): bind effects to live animated poses 2026-07-14 10:56:01 +02:00
TranslucencyKind.cs feat(vfx): Phase C.1 — PES particle renderer + post-review fixes 2026-04-28 22:47:11 +02:00