Context
Recoil, weapon sway, breathing bob, damage flinch and scare rumbles are all the same primitive: procedural, time-decaying transform noise composited onto a camera or socket offset. Per the gameplay-in-scripts philosophy the recoil LOGIC belongs in project scripts — but scripts need engine primitives: perlin/curve noise utilities, a spring-damper, and a composable offset stack so recoil + sway + bob don't fight each other or the socket transform.
Goal
Vortex.CameraFX (or equivalent) utility layer: additive offset channels on camera and attachment transforms with spring-damper recovery, seeded noise, and amplitude/frequency/decay parameters — deterministic, allocation-free, callable per frame from VortexBehaviour.
Acceptance Criteria
Technical Notes
Keep it math-utility-level in the engine (no gameplay semantics — 'recoil' is a template script concept). The offset stack must compose AFTER the socket transform so attachments stay glued.
Dependencies
- animation: bone socket system (offset composition point)
- scripting: runtime light control API (flashlight sway pairing, soft)
Context
Recoil, weapon sway, breathing bob, damage flinch and scare rumbles are all the same primitive: procedural, time-decaying transform noise composited onto a camera or socket offset. Per the gameplay-in-scripts philosophy the recoil LOGIC belongs in project scripts — but scripts need engine primitives: perlin/curve noise utilities, a spring-damper, and a composable offset stack so recoil + sway + bob don't fight each other or the socket transform.
Goal
Vortex.CameraFX(or equivalent) utility layer: additive offset channels on camera and attachment transforms with spring-damper recovery, seeded noise, and amplitude/frequency/decay parameters — deterministic, allocation-free, callable per frame from VortexBehaviour.Acceptance Criteria
Kick(rotational, positional)) and continuous noise (Sway(amp, freq)); engine composes and recovers via spring-damperTechnical Notes
Keep it math-utility-level in the engine (no gameplay semantics — 'recoil' is a template script concept). The offset stack must compose AFTER the socket transform so attachments stay glued.
Dependencies