144 lines
4.8 KiB
C#
144 lines
4.8 KiB
C#
namespace UnityEngine.EventSystems
|
|
{
|
|
/// <summary>
|
|
/// A hit result from a BaseRaycaster.
|
|
/// </summary>
|
|
public struct RaycastResult
|
|
{
|
|
private GameObject m_GameObject; // Game object hit by the raycast
|
|
|
|
/// <summary>
|
|
/// The GameObject that was hit by the raycast.
|
|
/// </summary>
|
|
public GameObject gameObject
|
|
{
|
|
get { return m_GameObject; }
|
|
set { m_GameObject = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// BaseRaycaster that raised the hit.
|
|
/// </summary>
|
|
public BaseRaycaster module;
|
|
|
|
/// <summary>
|
|
/// Distance to the hit.
|
|
/// </summary>
|
|
public float distance;
|
|
|
|
/// <summary>
|
|
/// Hit index
|
|
/// </summary>
|
|
public float index;
|
|
|
|
/// <summary>
|
|
/// Used by raycasters where elements may have the same unit distance, but have specific ordering.
|
|
/// </summary>
|
|
public int depth;
|
|
|
|
/// <summary>
|
|
/// The sorting group ID when the hit object is influenced by a SortingGroup.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// For UI.Graphic elements will always be 0.
|
|
/// For 3D objects this will always be 0.
|
|
/// For 2D objects if a SortingOrder is influencing the same object as the hit collider then the renderers sortingGroupID will be used; otherwise SortingGroup.invalidSortingGroupID.
|
|
/// </remarks>
|
|
public int sortingGroupID;
|
|
|
|
/// <summary>
|
|
/// The sorting group order when the hit object is influenced by a SortingGroup.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// For UI.Graphic elements this will always be 0.
|
|
/// For 3D objects this will always be 0.
|
|
/// For 2D objects if a SortingOrder is influencing the same object as the hit collider then the renderers sortingGroupOrder will be used.
|
|
/// </remarks>
|
|
public int sortingGroupOrder;
|
|
|
|
/// <summary>
|
|
/// The SortingLayer of the hit object.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// For UI.Graphic elements this will be the values from that graphic's Canvas
|
|
/// For 3D objects this will always be 0.
|
|
/// For 2D objects if a 2D Renderer (Sprite, Tilemap, SpriteShape) is attached to the same object as the hit collider that sortingLayerID will be used.
|
|
/// </remarks>
|
|
public int sortingLayer;
|
|
|
|
/// <summary>
|
|
/// The SortingOrder for the hit object.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// For Graphic elements this will be the values from that graphics Canvas
|
|
/// For 3D objects this will always be 0.
|
|
/// For 2D objects if a 2D Renderer (Sprite, Tilemap, SpriteShape) is attached to the same object as the hit collider that sortingOrder will be used.
|
|
/// </remarks>
|
|
public int sortingOrder;
|
|
|
|
/// <summary>
|
|
/// The world position of the where the raycast has hit.
|
|
/// </summary>
|
|
public Vector3 worldPosition;
|
|
|
|
/// <summary>
|
|
/// The normal at the hit location of the raycast.
|
|
/// </summary>
|
|
public Vector3 worldNormal;
|
|
|
|
/// <summary>
|
|
/// The screen position from which the raycast was generated.
|
|
/// </summary>
|
|
public Vector2 screenPosition;
|
|
|
|
/// <summary>
|
|
/// The display index from which the raycast was generated.
|
|
/// </summary>
|
|
public int displayIndex;
|
|
|
|
/// <summary>
|
|
/// Is there an associated module and a hit GameObject.
|
|
/// </summary>
|
|
public bool isValid
|
|
{
|
|
get { return module != null && gameObject != null; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reset the result.
|
|
/// </summary>
|
|
public void Clear()
|
|
{
|
|
gameObject = null;
|
|
module = null;
|
|
distance = 0;
|
|
index = 0;
|
|
depth = 0;
|
|
sortingLayer = 0;
|
|
sortingOrder = 0;
|
|
worldNormal = Vector3.up;
|
|
worldPosition = Vector3.zero;
|
|
screenPosition = Vector3.zero;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
if (!isValid)
|
|
return "";
|
|
|
|
return "Name: " + gameObject + "\n" +
|
|
"module: " + module + "\n" +
|
|
"distance: " + distance + "\n" +
|
|
"index: " + index + "\n" +
|
|
"depth: " + depth + "\n" +
|
|
"worldNormal: " + worldNormal + "\n" +
|
|
"worldPosition: " + worldPosition + "\n" +
|
|
"screenPosition: " + screenPosition + "\n" +
|
|
"module.sortOrderPriority: " + module.sortOrderPriority + "\n" +
|
|
"module.renderOrderPriority: " + module.renderOrderPriority + "\n" +
|
|
"sortingLayer: " + sortingLayer + "\n" +
|
|
"sortingOrder: " + sortingOrder;
|
|
}
|
|
}
|
|
}
|