A game about forced loneliness, made by TACStudios
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}