private bool getAirXRPointerData(AirXRPointer pointer, int pointerId, out AirXRPointerEventData data, bool create)
    {
        if (_pointerData.ContainsKey(pointer.GetHashCode()) == false || _pointerData[pointer.GetHashCode()].TryGetValue(pointerId, out data) == false)
        {
            if (create)
            {
                if (_pointerData.ContainsKey(pointer.GetHashCode()) == false)
                {
                    _pointerData.Add(pointer.GetHashCode(), new Dictionary <int, AirXRPointerEventData>());
                }
                data = new AirXRPointerEventData(eventSystem)
                {
                    pointerId = pointer.GetHashCode()
                };

                _pointerData[pointer.GetHashCode()].Add(pointerId, data);
                return(true);
            }
            else
            {
                data = null;
            }
        }
        return(false);
    }
 private void copyAirXRPointerEventData(AirXRPointerEventData from, AirXRPointerEventData to)
 {
     to.position              = from.position;
     to.delta                 = from.delta;
     to.scrollDelta           = from.scrollDelta;
     to.pointerCurrentRaycast = from.pointerCurrentRaycast;
     to.pointerEnter          = from.pointerEnter;
     to.worldSpaceRay         = from.worldSpaceRay;
 }