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