private GameObject GetRayIntersection(RaycastSource source)
        {
            GameObject hit = null;

            // Move camera to position and rotation for the ray origin
            m_EventCamera.transform.position = source.rayOrigin.position;
            m_EventCamera.transform.rotation = source.rayOrigin.rotation;

            RayEventData eventData = source.eventData;

            eventData.Reset();
            eventData.delta       = Vector2.zero;
            eventData.position    = m_EventCamera.pixelRect.center;
            eventData.scrollDelta = Vector2.zero;

            List <RaycastResult> results = new List <RaycastResult>();

            eventSystem.RaycastAll(eventData, results);
            eventData.pointerCurrentRaycast = FindFirstRaycast(results);
            hit = eventData.pointerCurrentRaycast.gameObject;

            m_RaycastResultCache.Clear();
            return(hit);
        }