No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BaseRaycaster.cs 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. namespace UnityEngine.EventSystems
  4. {
  5. /// <summary>
  6. /// Base class for any RayCaster.
  7. /// </summary>
  8. /// <remarks>
  9. /// A Raycaster is responsible for raycasting against scene elements to determine if the cursor is over them. Default Raycasters include PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster.
  10. /// Custom raycasters can be added by extending this class.
  11. /// </remarks>
  12. public abstract class BaseRaycaster : UIBehaviour
  13. {
  14. private BaseRaycaster m_RootRaycaster;
  15. /// <summary>
  16. /// Raycast against the scene.
  17. /// </summary>
  18. /// <param name="eventData">Current event data.</param>
  19. /// <param name="resultAppendList">List of hit Objects.</param>
  20. public abstract void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList);
  21. /// <summary>
  22. /// The camera that will generate rays for this raycaster.
  23. /// </summary>
  24. public abstract Camera eventCamera { get; }
  25. [Obsolete("Please use sortOrderPriority and renderOrderPriority", false)]
  26. public virtual int priority
  27. {
  28. get { return 0; }
  29. }
  30. /// <summary>
  31. /// Priority of the raycaster based upon sort order.
  32. /// </summary>
  33. public virtual int sortOrderPriority
  34. {
  35. get { return int.MinValue; }
  36. }
  37. /// <summary>
  38. /// Priority of the raycaster based upon render order.
  39. /// </summary>
  40. public virtual int renderOrderPriority
  41. {
  42. get { return int.MinValue; }
  43. }
  44. /// <summary>
  45. /// Raycaster on root canvas
  46. /// </summary>
  47. public BaseRaycaster rootRaycaster
  48. {
  49. get
  50. {
  51. if (m_RootRaycaster == null)
  52. {
  53. var baseRaycasters = GetComponentsInParent<BaseRaycaster>();
  54. if (baseRaycasters.Length != 0)
  55. m_RootRaycaster = baseRaycasters[baseRaycasters.Length - 1];
  56. }
  57. return m_RootRaycaster;
  58. }
  59. }
  60. public override string ToString()
  61. {
  62. return "Name: " + gameObject + "\n" +
  63. "eventCamera: " + eventCamera + "\n" +
  64. "sortOrderPriority: " + sortOrderPriority + "\n" +
  65. "renderOrderPriority: " + renderOrderPriority;
  66. }
  67. protected override void OnEnable()
  68. {
  69. base.OnEnable();
  70. RaycasterManager.AddRaycaster(this);
  71. }
  72. protected override void OnDisable()
  73. {
  74. RaycasterManager.RemoveRaycasters(this);
  75. base.OnDisable();
  76. }
  77. protected override void OnCanvasHierarchyChanged()
  78. {
  79. base.OnCanvasHierarchyChanged();
  80. m_RootRaycaster = null;
  81. }
  82. protected override void OnTransformParentChanged()
  83. {
  84. base.OnTransformParentChanged();
  85. m_RootRaycaster = null;
  86. }
  87. }
  88. }