Documentation
    Preparing search index...

    Interface PointerInputOptions

    Construction options for PointerInput.

    interface PointerInputOptions {
        camera: Camera;
        clickMoveThreshold?: number;
        depthRange?: DepthRange;
        pickables: () => readonly Pickable[];
        pickProvider?: PickProvider;
    }
    Index
    camera: Camera

    The camera whose rays resolve pointer positions into the scene (§71).

    clickMoveThreshold?: number

    Click movement tolerance in NDC. Defaults to DEFAULT_CLICK_MOVE_THRESHOLD.

    depthRange?: DepthRange

    Clip-space depth convention the camera's projection was built with (plan D8). Defaults to "negative-one-to-one", matching Camera.updateProjectionMatrix and the WebGL 2 MVP (§120); WebGPU callers pass "zero-to-one".

    pickables: () => readonly Pickable[]

    The current picking candidates, called once per platform event.

    A function rather than an array so the caller can rebuild the list when the set of candidates changes without re-creating the input; returning a stable array is the cheap case and is expected.

    pickProvider?: PickProvider

    Optional GPU/pixel pick seam (§71 "gpu", RFC 0005). When omitted, every platform handler stays fully synchronous — the ray/bounds pick path only, which already skips hitTestMode === "gpu" nodes. Existing callers observe byte-identical timing: no await, no microtask.

    When present, each handler copies the event fields PointerInput actually reads and enqueues work per pointerId: overlapping down/move/up/cancel on one pointer cannot race or resolve the same node twice (in-flight GPU picks must not reorder), independent pointers may overlap, and a dispose that lands mid-await drops the dispatch. GPU-mode nodes resolve only through this seam; a provider miss (undefined or an id that is not in PointerInputOptions.pickables) falls back to the ray tier. Capture still skips picking — the provider is not consulted while a pointer is captured.