/**
 * Body posture — discrete shape the body holds. Drives eye height and
 * gait gating (stride / footstep / bob).
 *
 * The base controller computes posture from intent each tick (Stand vs.
 * Crouch). Abilities own the posture while they're active and can force
 * Prone (slide) or Hang (ledge-grab). When an ability releases, the
 * next base tick re-derives posture from intent.
 *
 * Why a single enum field rather than override sentinels: a uniform
 * channel that every consumer (eye-height spring, stride gate, future
 * skeleton animator) reads from one place. Adding a new posture means
 * adding one enum value + one mapping, not threading "is X overriding
 * Y" sentinels through L2.
 *
 * @readonly enum
 */
export const FirstPersonPosture = {
    /** Upright on both feet — the default. Strides normally. */
    Stand: 0,
    /** Knees bent, head dropped — feet still strike the ground. */
    Crouch: 1,
    /** Body horizontal — sliding or diving. No stride; eye near ground. */
    Prone: 2,
    /** Suspended from hands — hanging on a ledge. No stride. */
    Hang: 3,
};
