Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    State and callbacks the pointer/touch handlers need, built once per call by the LuxarOrbitControls orchestrator. Read-only flags and speeds are copied by value; mutable object refs (pointer array/map, the rotate/pan/ dolly start vectors, rotationDelta) are shared so mutation flows back to the instance; primitive state (state, zoom delta) is read/written via accessors. Touch entry points and pan/dispatch are cross-cutting callbacks the orchestrator supplies.

    interface OrbitInputCtx {
        enabled: boolean;
        enableRotate: boolean;
        enablePan: boolean;
        enableZoom: boolean;
        isOrthographic: boolean;
        mouseButtons: {
            LEFT: MOUSE | null;
            MIDDLE: MOUSE | null;
            RIGHT: MOUSE | null;
        };
        domElement: HTMLElement;
        trackballRadius: number;
        rotateSpeed: number;
        zoomSpeed: number;
        wheelZoomSensitivity: number;
        boundOnPointerMove: (e: PointerEvent) => void;
        boundOnPointerUp: (e: PointerEvent) => void;
        pointers: PointerEvent[];
        pointerPositions: Map<number, Vector2>;
        rotateStart: Vector2;
        panStart: Vector2;
        dollyStart: Vector2;
        rotationDelta: Quaternion;
        getState: () => ControlAction;
        setState: (s: ControlAction) => void;
        addZoomDelta: (delta: number) => void;
        addRollDelta: (delta: number) => void;
        pan: (deltaX: number, deltaY: number) => void;
        dispatch: (type: ControlEventName) => void;
        onTouchStart: () => void;
        onTouchMove: (event: PointerEvent) => void;
        setPointers: (pointers: PointerEvent[]) => void;
    }
    Index
    enabled: boolean
    enableRotate: boolean
    enablePan: boolean
    enableZoom: boolean
    isOrthographic: boolean

    True when the active camera is orthographic (ortho mode reuses this controls class). Modifier-carrying wheel events are ceded to the window-level FOV handler only for perspective cameras — adjustFOV no-ops on ortho, so zoom keeps ownership there (trackpad pinch must still zoom in ortho mode).

    mouseButtons: { LEFT: MOUSE | null; MIDDLE: MOUSE | null; RIGHT: MOUSE | null }
    domElement: HTMLElement
    trackballRadius: number
    rotateSpeed: number
    zoomSpeed: number
    wheelZoomSensitivity: number

    Global per-machine multiplier on WHEEL zoom only (Settings > Input > Zoom Sensitivity; config.controls.wheelZoomSensitivity). Pointer-drag dolly is untouched: a drag's delta is screen pixels the user controls directly, whereas a wheel notch's delta is whatever the mouse driver decided, which is the thing this knob exists to tame.

    boundOnPointerMove: (e: PointerEvent) => void
    boundOnPointerUp: (e: PointerEvent) => void
    pointers: PointerEvent[]
    pointerPositions: Map<number, Vector2>
    rotateStart: Vector2
    panStart: Vector2
    dollyStart: Vector2
    rotationDelta: Quaternion
    getState: () => ControlAction
    setState: (s: ControlAction) => void
    addZoomDelta: (delta: number) => void
    addRollDelta: (delta: number) => void

    Accumulate a view-axis roll (radians; damped in update()) — two-finger twist.

    pan: (deltaX: number, deltaY: number) => void
    dispatch: (type: ControlEventName) => void
    onTouchStart: () => void
    onTouchMove: (event: PointerEvent) => void
    setPointers: (pointers: PointerEvent[]) => void