NowhereRocketAudio — KSP 1.12.x audio handoff controller

Build against the managed assemblies in your own KSP 1.12.x installation:
  msbuild NowhereRocketAudio.csproj /p:KspManagedPath="C:\Games\KSP\KSP_x64_Data\Managed"

The project emits ../../GameData/NowhereRocket/Plugins/NowhereRocketAudio.dll.
Referenced KSP/Unity assemblies are compile-time inputs and are NOT distributed.
Only stock KSP and Unity APIs are used. No ModuleManager or external audio plugin
is required. The supplied DLL is built against KSP 1.12.5 reference assemblies.

Config fields (on the same PART as ModuleEnginesFX):
  name = NR_EngineAudioSequence
  engineID = exact engineID of the target ModuleEnginesFX
  ignitionClip = NowhereRocket/Sounds/sustainer_ignition
  loopEffectName = nrEngineLoop
  ignitionVolume = 0.8
  crossfadeSeconds = 0.20
  minimumThrottle = 0.001
  maxVolumeDistance = 500

Use booster_ignition and a lower ignitionVolume for a booster. The loop effect
must contain the stock running AUDIO; its volume/pitch curves are evaluated at
currentThrottle multiplied by the handoff fade. Keep the original running
particle effect separate. Do not also assign ignition audio to engage, because
the controller owns its playback and shutdown cancellation.

The controller preserves normal engine physics. It waits for the first positive
throttle of a newly enabled engine, plays the custom clip at pitch 1, and blends
the stock loop in over the final 0.20 seconds of that clip's actual playback
clock. Shutdown/flameout cancels playback and rearms startup. A throttle cut
silences audio without rearming the enabled cycle. An active engine loaded from
a save starts with stock audio, without replaying the startup recording. Pause
preserves the custom clip position. Unload/destruction stops owned audio.

Pure state-machine checks (Mono or a compatible C# compiler/runtime):
  mcs -out:SequenceTests.exe IgnitionSequence.cs Tests/SequenceTests.cs
  mono SequenceTests.exe

These checks cover sequencing and envelope logic only. Real KSP sound loading,
mixing, pause/unload callbacks, four-booster gain and in-game playback remain
runtime validation items.

SPDX-License-Identifier: GPL-2.0-or-later
