123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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; }
-
- [Obsolete("Please use sortOrderPriority and renderOrderPriority", false)]
- 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;
- }
- }
- }
|