Class PointerDriver

A generic pointer driver.

Does nothing on its own, but provides an API for sending pointer events to registered roots and (un)registering pointers.

Hierarchy (view full)

Implements

Constructors

Properties

dragToScroll: Map<number, boolean> = ...

The dragToScroll value of every pointer ID. See PointerDriver#registerPointer.

hints: Map<number, PointerHint> = ...

The hints for each pointer. The keys are pointer IDs, while the values are that pointer's hint.

See PointerDriver#getPointerHint

nextPointerID: number = 0

The next available pointer ID. See PointerDriver#registerPointer

states: Map<Root, PointerDriverState> = ...

The current state for each registered and enabled root. Contains whether each root is pressing, hovering, and which pointer is bound to it

Methods

  • Check if a given pointer can dispatch an event to a given root. Also automatically assigns pointer to root if possible. For internal use only.

    Parameters

    • root: Root
    • pointer: number
    • state: PointerDriverState

      The root's state. Although the function could technically get the state itself, it's passed to avoid repetition since you will need the state yourself

    • givingActiveInput: boolean

      Is the pointer giving active input (pressing button or scrolling)? If so, then it can auto-assign if the root is not being pressed by another pointer

    Returns boolean

  • Denormalise normalised pointer coordinates. Internal use only.

    Parameters

    • root: Root
    • xNorm: number
    • yNorm: number

    Returns [number, number]

  • Dispatch a LeaveRootEvent event to any root with the given pointer assigned. Event will only be dispatched if the root was being hovered. Pointer will also be unassigned from root.

    Parameters

    • pointer: number

      The registered pointer ID

    Returns void

  • Dispatch a LeaveRootEvent event to a given root. Event will only be dispatched if the root was being hovered.

    Parameters

    • root: Root
    • pointer: number

      The registered pointer ID

    Returns boolean

    Returns true if the event was captured

  • Dispatch a pointer event to a given root. The type of PointerEvent is decided automatically based on the root's state and whether its pressing or not.

    If null, the last pressing state is used, meaning that the pressing state has not changed. Useful if getting pointer movement in an event based environment where you only know when a pointer press occurs, but not if the pointer is pressed or not

    Parameters

    • root: Root
    • pointer: number

      The registered pointer ID

    • xNorm: number

      The normalised (non-integer range from 0 to 1) X coordinate of the pointer event. 0 is the left edge of the root, while 1 is the right edge of the root.

    • yNorm: number

      The normalised (non-integer range from 0 to 1) Y coordinate of the pointer event. 0 is the top edge of the root, while 1 is the bottom edge of the root.

    • pressing: null | number

      Is the pointer pressed? If null, then the last pressing state will be used. A bitmask where each set bit represents a different button being pressed

    • shift: boolean

      Is shift being pressed?

    • ctrl: boolean

      Is control being pressed?

    • alt: boolean

      Is alt being pressed?

    Returns boolean

    Returns true if the pointer event was captured.

  • Register a new pointer.

    Parameters

    • dragToScroll: boolean = false

      If true, then dragging will result in PointerWheelEvent events if no widget captures the events.

    Returns number

    Returns PointerDriver#nextPointerID and increments it

  • Set a pointer's hint.

    Parameters

    • pointer: number

      The registered pointer ID

    • hint: PointerHint

      The new pointer hint

    Returns boolean

    Returns true if the pointer hint changed, else, false

  • Unregister a pointer.

    If a root has this pointer bound to it, the pointer is unbound from the root, a LeaveRootEvent event is dispatched to the root and the hovering and pressing state of the root is set to false.

    Parameters

    • pointer: number

    Returns void

  • Dispatch a mouse wheel event in a given 2D direction. Event will only be dispatched if the root was being hovered.

    Parameters

    • root: Root
    • pointer: number

      The registered pointer ID

    • xNorm: number

      The normalised (non-integer range from 0 to 1) X coordinate of the pointer event. 0 is the left edge of the root, while 1 is the right edge of the root.

    • yNorm: number

      The normalised (non-integer range from 0 to 1) Y coordinate of the pointer event. 0 is the top edge of the root, while 1 is the bottom edge of the root.

    • deltaX: number

      How much was scrolled horizontally, in pixels

    • deltaY: number

      How much was scrolled vertically, in pixels

    • deltaZ: number

      How much was scrolled in the Z axis, in pixels. Rarely used

    • deltaMode: PointerWheelMode

      How the delta values should be interpreted

    • shift: boolean

      Is shift being pressed?

    • ctrl: boolean

      Is control being pressed?

    • alt: boolean

      Is alt being pressed?

    Returns boolean

    Returns true if the pointer event was captured.