fix: complete retail parity stability pass
This commit is contained in:
parent
d3df4cb20a
commit
f7aa8e0eb7
131 changed files with 7765 additions and 1190 deletions
|
|
@ -462,6 +462,7 @@ internal sealed class RuntimeWorldFrameEnvironmentPreparation
|
|||
private readonly SceneLightingUboBinding? _lightingUbo;
|
||||
private readonly IWorldRenderRangeSource _ranges;
|
||||
private readonly SkyPesFrameController? _skyPes;
|
||||
private readonly Func<bool> _persistentDaylight;
|
||||
private readonly HashSet<uint> _visibleCells = [];
|
||||
private bool _visibleCellsValid;
|
||||
|
||||
|
|
@ -473,7 +474,8 @@ internal sealed class RuntimeWorldFrameEnvironmentPreparation
|
|||
EnvCellRenderer? environmentCells,
|
||||
SceneLightingUboBinding? lightingUbo,
|
||||
IWorldRenderRangeSource ranges,
|
||||
SkyPesFrameController? skyPes)
|
||||
SkyPesFrameController? skyPes,
|
||||
Func<bool>? persistentDaylight = null)
|
||||
{
|
||||
_options = options ?? throw new ArgumentNullException(nameof(options));
|
||||
_worldTime = worldTime ?? throw new ArgumentNullException(nameof(worldTime));
|
||||
|
|
@ -483,6 +485,7 @@ internal sealed class RuntimeWorldFrameEnvironmentPreparation
|
|||
_lightingUbo = lightingUbo;
|
||||
_ranges = ranges ?? throw new ArgumentNullException(nameof(ranges));
|
||||
_skyPes = skyPes;
|
||||
_persistentDaylight = persistentDaylight ?? (static () => false);
|
||||
}
|
||||
|
||||
public void Prepare(
|
||||
|
|
@ -500,7 +503,14 @@ internal sealed class RuntimeWorldFrameEnvironmentPreparation
|
|||
activeDayGroup,
|
||||
camera.Position);
|
||||
|
||||
UpdateSunFromSky(foundation.Sky, roots.PlayerInsideCell);
|
||||
// LScape::set_landscape_lighting @0x005054D0 keeps the live sky/fog
|
||||
// clock but, when PersistentAtDay is set, asks the active region for
|
||||
// lighting at exactly 0.5 (noon). Do not pin WorldTime.DayFraction:
|
||||
// clouds, celestial objects, fog, and scripts must keep advancing.
|
||||
SkyKeyframe landscapeLighting = _persistentDaylight()
|
||||
? _worldTime.SkyAtDayFraction(0.5f)
|
||||
: foundation.Sky;
|
||||
UpdateSunFromSky(landscapeLighting, roots.PlayerInsideCell);
|
||||
_lighting.UpdateViewerLight(roots.PlayerViewPosition);
|
||||
_lighting.Tick(camera.Position);
|
||||
_lighting.BuildPointLightSnapshot(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue