Harden base progression and cleanup; validate finite physical resupply
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Optional native flight input observations
|
||||
|
||||
Run the existing Core powered-flight case with `--flight-input-diagnostics` to
|
||||
append `-errFlightInputDiag 1`. Without that flag the new observations stay off.
|
||||
All code is WORKBENCH-only and uses the existing exact owned pilot/aircraft
|
||||
authority checks. It does not change controls, AI ownership, input bindings,
|
||||
settings, collective mode, rotor signals or the flight outcome.
|
||||
|
||||
The fixture owns one native `OnApplyControls` hook which calls vanilla first, then
|
||||
its exact-pilot `ApplyPilot` method. The optional observer overrides that probe
|
||||
method: it snapshots the native context before this callback's final writes,
|
||||
calls the normal implementation once, and captures immediate readback only if
|
||||
that call actually wrote. It does not add another native hook or integrate the
|
||||
controller a second time. Preparation is observed separately by the fixture.
|
||||
Existing two-second telemetry gains at most 120 batches of three lines:
|
||||
sequence/age, before-write and written inputs, and native rotor signals plus
|
||||
autohover and collective mode.
|
||||
|
||||
`writtenFRA` and `beforeWriteFRA` contain cyclic-forward, cyclic-aside and
|
||||
anti-torque in that order. `beforeWriteSequence` identifies the most recent
|
||||
previous write when the next native Apply callback began; the final written
|
||||
sequence normally advances afterward. These observations reveal native changes
|
||||
between callbacks, but neither snapshot by itself proves downstream force
|
||||
application. A callback count of zero or age -1 means no observation. There are
|
||||
no pass/fail assertions or control writes in this optional diagnostic file.
|
||||
The flight fixture's mandatory, flag-independent positive rotor-signal gate is
|
||||
described in [the flight experiment](native-powered-flight.md).
|
||||
|
||||
Installed source confirms:
|
||||
|
||||
* `SCR_CharacterControllerComponent.OnApplyControls(IEntity owner, float timeSlice)`
|
||||
at `scripts/Game/Character/SCR_CharacterControllerComponent.c:579`, matching
|
||||
the native declaration at `generated/Components/CharacterControllerComponent.c:474`.
|
||||
* `BaseVehicleControllerComponent.GetSignalsManager()` and helicopter
|
||||
`GetAutohoverEnabled()`/`GetCollectiveMode()` are real getters.
|
||||
* `SignalsManagerComponent.FindSignal` returns -1 when absent;
|
||||
`GetSignalValue` returns0 on an invalid index, so the helper checks the index
|
||||
and prints `missing` instead. No signal is added or assigned.
|
||||
* Stock `Mi8_base.et:878–891` connects native `MainRotorCollective`,
|
||||
`MainRotorCyclicForward`, `MainRotorCyclicAside`, and `TailRotorCollective`
|
||||
signals to its rotor animation variables. Those exact names are observed.
|
||||
|
||||
These signals are stronger downstream observations than an immediate input
|
||||
setter/getter equality. They still do not establish a documented numeric mapping
|
||||
from input to physical thrust, guarantee same-frame simulation ordering, or prove
|
||||
the simulation applied the expected force. The native APIs do not document that
|
||||
mapping or callback ordering sufficiently for those claims. Existing actual
|
||||
motion, RPM, fuel and contact assertions remain necessary. An autohover=true
|
||||
sample discloses another active controller; the diagnostic never toggles it.
|
||||
|
||||
Four local source/runner checks pass without launching the engine or audio.
|
||||
The earlier observer compiled and exposed real input overwrites in 100422/101342; the revised before-write/final-write observer awaits its next source-bound native run. A native
|
||||
failure must remain a failure; these observations neither filter errors nor
|
||||
convert missing signals into zeros or successful flight evidence.
|
||||
Reference in New Issue
Block a user