Maze / Library /PackageCache /com.unity.ugui@1.0.0 /Runtime /EventSystem /Raycasters /BaseRaycaster.cs
| using System; | |
| using System.Collections.Generic; | |
| namespace UnityEngine.EventSystems | |
| { | |
| /// <summary> | |
| /// Base class for any RayCaster. | |
| /// </summary> | |
| /// <remarks> | |
| /// A Raycaster is responsible for raycasting against scene elements to determine if the cursor is over them. Default Raycasters include PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster. | |
| /// Custom raycasters can be added by extending this class. | |
| /// </remarks> | |
| public abstract class BaseRaycaster : UIBehaviour | |
| { | |
| private BaseRaycaster m_RootRaycaster; | |
| /// <summary> | |
| /// Raycast against the scene. | |
| /// </summary> | |
| /// <param name="eventData">Current event data.</param> | |
| /// <param name="resultAppendList">List of hit Objects.</param> | |
| public abstract void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList); | |
| /// <summary> | |
| /// The camera that will generate rays for this raycaster. | |
| /// </summary> | |
| public abstract Camera eventCamera { get; } | |
| [] | |
| public virtual int priority | |
| { | |
| get { return 0; } | |
| } | |
| /// <summary> | |
| /// Priority of the raycaster based upon sort order. | |
| /// </summary> | |
| public virtual int sortOrderPriority | |
| { | |
| get { return int.MinValue; } | |
| } | |
| /// <summary> | |
| /// Priority of the raycaster based upon render order. | |
| /// </summary> | |
| public virtual int renderOrderPriority | |
| { | |
| get { return int.MinValue; } | |
| } | |
| /// <summary> | |
| /// Raycaster on root canvas | |
| /// </summary> | |
| public BaseRaycaster rootRaycaster | |
| { | |
| get | |
| { | |
| if (m_RootRaycaster == null) | |
| { | |
| var baseRaycasters = GetComponentsInParent<BaseRaycaster>(); | |
| if (baseRaycasters.Length != 0) | |
| m_RootRaycaster = baseRaycasters[baseRaycasters.Length - 1]; | |
| } | |
| return m_RootRaycaster; | |
| } | |
| } | |
| public override string ToString() | |
| { | |
| return "Name: " + gameObject + "\n" + | |
| "eventCamera: " + eventCamera + "\n" + | |
| "sortOrderPriority: " + sortOrderPriority + "\n" + | |
| "renderOrderPriority: " + renderOrderPriority; | |
| } | |
| protected override void OnEnable() | |
| { | |
| base.OnEnable(); | |
| RaycasterManager.AddRaycaster(this); | |
| } | |
| protected override void OnDisable() | |
| { | |
| RaycasterManager.RemoveRaycasters(this); | |
| base.OnDisable(); | |
| } | |
| protected override void OnCanvasHierarchyChanged() | |
| { | |
| base.OnCanvasHierarchyChanged(); | |
| m_RootRaycaster = null; | |
| } | |
| protected override void OnTransformParentChanged() | |
| { | |
| base.OnTransformParentChanged(); | |
| m_RootRaycaster = null; | |
| } | |
| } | |
| } | |