feat(render) Campaign FW1: street fixture retail-exact except flood depth
Three pinned corrections close the outdoor frame: (1) the camera basis RE-pinned to +Y-forward - the terrace-edge fixture EXTERNAL ground truth (the ledge faces the F518 vista, east) overrules the walkabout motion sweep, whose camera was mouse-turned off the run line; (2) alwaysDrawObjects (.data default 1 @0x00820ed4) drawn into the DrawSortCell gate - cell contents draw for every cell of an in-view block; (3) the building portal side decode data-pinned as the INVERSE of the cell 0x2 bit (the sweep winning arm). Street result: all 13 buildings in retail exact order (a9b3003c in, aab50002 correctly absent), punches at exactly 001a and 0022 opening the exact first cells 16e/164. SOLE remaining delta: look-in flood depth (mine 1 cell, retail 3-4) - the doorway-still fixture adjudicates the interior flood in isolation next. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
5f18ba5507
commit
28475d0544
4 changed files with 30 additions and 19 deletions
|
|
@ -50,6 +50,11 @@ public sealed class RetailFrameWalk
|
|||
public WalkPView InteriorPView => _interiorPView;
|
||||
public WalkPView OutdoorPView => _outdoorPView;
|
||||
|
||||
/// <summary>Retail global <c>alwaysDrawObjects</c> (.data default 1
|
||||
/// @0x00820ed4): cell contents draw for every cell of an in-view block
|
||||
/// regardless of per-cell visibility.</summary>
|
||||
public bool AlwaysDrawObjects = true;
|
||||
|
||||
/// <summary>The per-frame root (<c>SmartBox::RenderNormalMode</c>).
|
||||
/// <paramref name="cameraCell"/> may be null only when the camera is
|
||||
/// outdoors.</summary>
|
||||
|
|
@ -115,10 +120,15 @@ public sealed class RetailFrameWalk
|
|||
for (int k = 0; k < cellCount; k++)
|
||||
{
|
||||
int cellIndex = block.DrawArray[k];
|
||||
// DrawSortCell runs for in-view cells (alwaysDrawObjects
|
||||
// default 0); terrain (DrawLandCell) emits no walk event.
|
||||
if (block.CellInView[cellIndex] == WalkBoundingType.Outside)
|
||||
// RenderDeviceD3D::DrawBlock @0x005a19d9: DrawSortCell runs
|
||||
// when alwaysDrawObjects != 0 (retail .data default 1
|
||||
// @0x00820ed4) OR the cell IsInView; terrain (DrawLandCell)
|
||||
// emits no walk event.
|
||||
if (!AlwaysDrawObjects
|
||||
&& block.CellInView[cellIndex] == WalkBoundingType.Outside)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (block.CellBuildings[cellIndex] is WalkBuilding building)
|
||||
DrawBuilding(building, activeViews, ctx, sink);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue