102 lines
3.0 KiB
C#
102 lines
3.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|