perf(streaming): reserve destination reveal capacity
Join destination scheduling to the canonical reveal generation, protect its share across every typed frame-budget dimension, and prevent stale work from clearing a replacement reservation. Remove forced incomplete materialization and project retail's centered portal wait cue while the authored tunnel remains active. Tests: Release build clean; 91 focused reservation/reveal tests; full solution 8,158 passed, 5 skipped. Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
parent
98f1ac8934
commit
2ff8f844b0
33 changed files with 870 additions and 230 deletions
|
|
@ -9,6 +9,7 @@
|
|||
- `CObjectMaint::DestroyObjects @ 0x00508C30`
|
||||
- `CObjectMaint::AddObjectToBeDestroyed @ 0x00508F70`
|
||||
- `SmartBox::UseTime @ 0x00455410`
|
||||
- `gmSmartBoxUI::UseTime @ 0x004D6E30`
|
||||
|
||||
The Sept 2013 named pseudo-C is the behavioral oracle. WorldBuilder has no
|
||||
equivalent live-client teardown scheduler; its extracted mesh/cache owners are
|
||||
|
|
@ -125,6 +126,37 @@ object maintenance, physics, landscape, game time, or ambient sound. UI/event
|
|||
dispatch and the portal presentation continue. This is the retail basis for
|
||||
Slice E's immediate old-generation quiesce.
|
||||
|
||||
## `gmSmartBoxUI::UseTime` portal wait presentation
|
||||
|
||||
The portal `CreatureMode` remains live while `SmartBox` is blocked. Its camera
|
||||
continues one random roll segment at a time:
|
||||
|
||||
```text
|
||||
if now >= rotationStart + rotationDuration:
|
||||
currentAngle = rotationEndAngle
|
||||
rotationStart = now
|
||||
rotationDuration = RandomUniform(0.6, 1.8) seconds
|
||||
rotationStartAngle = currentAngle
|
||||
rotationEndAngle = RandomUniform(0, 360) degrees
|
||||
ECM_UI.SendNotice_DisplayStringInfo(
|
||||
channel = 0x1A,
|
||||
text = "In Portal Space - Please Wait...")
|
||||
else:
|
||||
level = UIGlobals.GetAnimLevel(
|
||||
(now - rotationStart) / rotationDuration)
|
||||
currentAngle = Lerp(
|
||||
rotationStartAngle,
|
||||
rotationEndAngle,
|
||||
level / 1024)
|
||||
|
||||
CreatureMode.SetCameraDirection_Degrees((0, currentAngle, 0))
|
||||
```
|
||||
|
||||
The notice is a centered UI display string, not chat. Slice E's asynchronous
|
||||
adaptation delays its first projection until the recorded five-second reveal
|
||||
stall threshold, then repeats it on the same rotation-segment boundary while
|
||||
the authored tunnel keeps animating.
|
||||
|
||||
## Acdream asynchronous adaptation
|
||||
|
||||
Retail performs each teardown synchronously and can synchronously block cell
|
||||
|
|
@ -156,6 +188,12 @@ reveal only when the one destination-generation readiness state proves:
|
|||
required Near scene ready
|
||||
required composite textures ready
|
||||
camera/player identity belongs to destination generation
|
||||
|
||||
if the portal reveal is still incomplete after five seconds:
|
||||
keep the DAT-authored portal scene animating
|
||||
display the centered retail wait notice
|
||||
emit one generation-scoped diagnostic
|
||||
do not materialize early
|
||||
```
|
||||
|
||||
Release-later never means run-later: an old owner may retain memory until its
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue