File size: 3,103 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | 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;
}
}
}
|