You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.3 KiB
95 lines
3.3 KiB
3 years ago
|
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. ===========
|
||
|
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.EventSystems;
|
||
|
|
||
|
namespace HTC.UnityPlugin.Pointer3D
|
||
|
{
|
||
|
public static class Pointer3DEventDataExtension
|
||
|
{
|
||
|
public static Pointer3DRaycaster GetRaycaster3D(this PointerEventData eventData)
|
||
|
{
|
||
|
if (!(eventData is Pointer3DEventData)) { return null; }
|
||
|
|
||
|
var eventData3D = eventData as Pointer3DEventData;
|
||
|
|
||
|
return eventData3D.raycaster;
|
||
|
}
|
||
|
|
||
|
public static bool TryGetRaycaster3D(this PointerEventData eventData, out Pointer3DRaycaster raycaster)
|
||
|
{
|
||
|
raycaster = null;
|
||
|
|
||
|
if (!(eventData is Pointer3DEventData)) { return false; }
|
||
|
|
||
|
var eventData3D = eventData as Pointer3DEventData;
|
||
|
raycaster = eventData3D.raycaster;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public static TRaycaster3D GetRaycaster3D<TRaycaster3D>(this PointerEventData eventData) where TRaycaster3D : Pointer3DRaycaster
|
||
|
{
|
||
|
if (!(eventData is Pointer3DEventData)) { return null; }
|
||
|
|
||
|
var eventData3D = eventData as Pointer3DEventData;
|
||
|
if (!(eventData3D.raycaster is TRaycaster3D)) { return null; }
|
||
|
|
||
|
return eventData3D.raycaster as TRaycaster3D;
|
||
|
}
|
||
|
|
||
|
public static bool TryGetRaycaster3D<TRaycaster3D>(this PointerEventData eventData, out TRaycaster3D raycaster) where TRaycaster3D : Pointer3DRaycaster
|
||
|
{
|
||
|
raycaster = null;
|
||
|
|
||
|
if (!(eventData is Pointer3DEventData)) { return false; }
|
||
|
|
||
|
var eventData3D = eventData as Pointer3DEventData;
|
||
|
if (!(eventData3D.raycaster is TRaycaster3D)) { return false; }
|
||
|
|
||
|
raycaster = eventData3D.raycaster as TRaycaster3D;
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class Pointer3DEventData : PointerEventData
|
||
|
{
|
||
|
public readonly Pointer3DRaycaster raycaster;
|
||
|
|
||
|
public Vector3 position3D;
|
||
|
public Quaternion rotation;
|
||
|
|
||
|
public Vector3 position3DDelta;
|
||
|
public Quaternion rotationDelta;
|
||
|
|
||
|
public Vector3 pressPosition3D;
|
||
|
public Quaternion pressRotation;
|
||
|
|
||
|
public float pressDistance;
|
||
|
public GameObject pressEnter;
|
||
|
public bool pressPrecessed;
|
||
|
|
||
|
public Pointer3DEventData(Pointer3DRaycaster ownerRaycaster, EventSystem eventSystem) : base(eventSystem)
|
||
|
{
|
||
|
raycaster = ownerRaycaster;
|
||
|
Pointer3DInputModule.AssignPointerId(this);
|
||
|
}
|
||
|
|
||
|
public virtual bool GetPress() { return false; }
|
||
|
|
||
|
public virtual bool GetPressDown() { return false; }
|
||
|
|
||
|
public virtual bool GetPressUp() { return false; }
|
||
|
|
||
|
public override string ToString()
|
||
|
{
|
||
|
var str = string.Empty;
|
||
|
str += "eligibleForClick: " + eligibleForClick + "\n";
|
||
|
str += "pointerEnter: " + Pointer3DInputModule.PrintGOPath(pointerEnter) + "\n";
|
||
|
str += "pointerPress: " + Pointer3DInputModule.PrintGOPath(pointerPress) + "\n";
|
||
|
str += "lastPointerPress: " + Pointer3DInputModule.PrintGOPath(lastPress) + "\n";
|
||
|
str += "pressEnter: " + Pointer3DInputModule.PrintGOPath(pressEnter) + "\n";
|
||
|
str += "pointerDrag: " + Pointer3DInputModule.PrintGOPath(pointerDrag) + "\n";
|
||
|
return str;
|
||
|
}
|
||
|
}
|
||
|
}
|