UnityEngine.EventSystems.BaseInputModule.HandlePointerExitAndEnter C# (CSharp) Method

HandlePointerExitAndEnter() protected method

Handle sending enter and exit events when a new enter targer is found.

protected HandlePointerExitAndEnter ( PointerEventData currentPointerData, GameObject newEnterTarget ) : void
currentPointerData PointerEventData
newEnterTarget UnityEngine.GameObject
return void
        protected void HandlePointerExitAndEnter(PointerEventData currentPointerData, GameObject newEnterTarget)
        {
            if ((newEnterTarget == null) || (currentPointerData.pointerEnter == null))
            {
                for (int i = 0; i < currentPointerData.hovered.Count; i++)
                {
                    ExecuteEvents.Execute<IPointerExitHandler>(currentPointerData.hovered[i], currentPointerData, ExecuteEvents.pointerExitHandler);
                }
                currentPointerData.hovered.Clear();
                if (newEnterTarget == null)
                {
                    currentPointerData.pointerEnter = newEnterTarget;
                    return;
                }
            }
            if ((currentPointerData.pointerEnter != newEnterTarget) || (newEnterTarget == null))
            {
                GameObject obj2 = FindCommonRoot(currentPointerData.pointerEnter, newEnterTarget);
                if (currentPointerData.pointerEnter != null)
                {
                    for (Transform transform = currentPointerData.pointerEnter.transform; transform != null; transform = transform.parent)
                    {
                        if ((obj2 != null) && (obj2.transform == transform))
                        {
                            break;
                        }
                        ExecuteEvents.Execute<IPointerExitHandler>(transform.gameObject, currentPointerData, ExecuteEvents.pointerExitHandler);
                        currentPointerData.hovered.Remove(transform.gameObject);
                    }
                }
                currentPointerData.pointerEnter = newEnterTarget;
                if (newEnterTarget != null)
                {
                    for (Transform transform2 = newEnterTarget.transform; (transform2 != null) && (transform2.gameObject != obj2); transform2 = transform2.parent)
                    {
                        ExecuteEvents.Execute<IPointerEnterHandler>(transform2.gameObject, currentPointerData, ExecuteEvents.pointerEnterHandler);
                        currentPointerData.hovered.Add(transform2.gameObject);
                    }
                }
            }
        }