/** * Yaw-frame steering math. The engine's heading convention is * `forward = (sin yaw, cos yaw)` on the XZ plane with +Y up, which makes a * positive yaw increment rotate counterclockwise seen from above — a turn to * the entity's LEFT on screen. Every hand-written `heading += steer * rate * dt` * therefore turns the wrong way; integrate steering through `steerYaw` instead. */ export type YawVectorXZ = readonly [number, number]; /** XZ forward direction of a yaw (`rotationY`): `(sin yaw, cos yaw)`. */ export declare function yawForward(yaw: number): YawVectorXZ; /** XZ screen-right of a yaw — `forward × up` with up = +Y: `(-cos yaw, sin yaw)`. */ export declare function yawRight(yaw: number): YawVectorXZ; /** * Integrate one steering step. `steerRight` is the signed steer input * (+1 = turn right, matching `DRIVE_AXIS_BINDINGS`' KeyD/ArrowRight), * `turnRatePerSecond` is radians per second at full lock. Steering right * decreases yaw in the engine frame; this helper owns that sign so game * code never re-derives it. */ export declare function steerYaw(yaw: number, steerRight: number, turnRatePerSecond: number, dt: number): number; /** * Signed steer-right input that closes on `desiredYaw` when integrated * through `steerYaw` — the seek half every AI driver and homing script * needs. Magnitude is the wrapped radian error in (−π, π]; scale and clamp * it into [-1, 1] at the call site. */ export declare function steerToward(yaw: number, desiredYaw: number): number; /** * @internal Rotate `yaw` toward `targetYaw` by at most `turnRatePerSecond * dt` * radians, always along the shortest arc, snapping exactly onto the target once * within a single step so it converges without overshoot or jitter — the * smoothing behind a rendered body-turn (`PlayerMovementConfig.turnSpeed`). A * large enough rate (or `dt`) reaches the target in one call, matching a snap. */ export declare function approachYaw(yaw: number, targetYaw: number, turnRatePerSecond: number, dt: number): number;