feat(render) Campaign FW1: pin the camera basis; outdoor adjudication state
The moving-fixture sweep pinned the pose decode (quat storage w,x,y,z; facing = rotated +X; the consistent triple right=-rot(Y), fwd=rot(X), up=rot(Z) - mean 20.8 deg vs motion, alternatives >=52). With it the street-outdoor BLD roster and order match retail EXACTLY except one ring-1 boundary pair (aab50002 extra / a9b3003c missing). Look-in punches fire at the wrong buildings under BOTH GfxObj plane-winding conventions (retail punched only 001a and 0022 into the a9b4016x cells) - the next adjudication targets the PortalRef.PortalIndex join and the BuildingPortal side-flag decode via a per-building dump. The driving diff test carries the state in its Skip note; the flip toggle stays for the next arm. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e3f0c6a1a1
commit
faba9be635
3 changed files with 25 additions and 6 deletions
|
|
@ -211,6 +211,12 @@ public static class WalkWorldDatAdapter
|
|||
: null);
|
||||
}
|
||||
|
||||
/// <summary>Adjudication toggle (2026-08-30): the GfxObj portal-poly
|
||||
/// plane winding vs the cell convention is under test — the street
|
||||
/// fixture shows retail punching far fewer look-ins than the first-3
|
||||
/// cross convention admits.</summary>
|
||||
public static bool FlipGfxPolygonPlanes;
|
||||
|
||||
private static WalkPolygon? BuildGfxPolygon(GfxObj gfxObj, ushort polygonId)
|
||||
{
|
||||
if (!gfxObj.Polygons.TryGetValue(polygonId, out Polygon? poly)
|
||||
|
|
@ -218,11 +224,14 @@ public static class WalkWorldDatAdapter
|
|||
{
|
||||
return null;
|
||||
}
|
||||
return BuildPolygonFromVertices(
|
||||
WalkPolygon? built = BuildPolygonFromVertices(
|
||||
poly.VertexIds,
|
||||
id => gfxObj.VertexArray.Vertices.TryGetValue((ushort)id, out SWVertex? v)
|
||||
? new Vector3(v.Origin.X, v.Origin.Y, v.Origin.Z)
|
||||
: null);
|
||||
if (built is not null && FlipGfxPolygonPlanes)
|
||||
built.Plane = new WalkPlane(-built.Plane.Normal, -built.Plane.D);
|
||||
return built;
|
||||
}
|
||||
|
||||
private static WalkPolygon? BuildPolygonFromVertices(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue