using UnityEngine;
namespace Rokid.UXR.Interaction
{
///
/// Mouse Ray Caster
///
public class MouseRayCaster : BaseRayCaster
{
protected override void Init()
{
base.Init();
pointerEnter = "OnMousePointerEnter";
pointerExit = "OnMousePointerExit";
pointerHover = "OnMousePointerHover";
pointerClick = "OnMousePointerClick";
dragBegin = "OnMouseBeginDrag";
drag = "OnMouseRayDrag";
dragEnd = "OnMouseEndDrag";
}
protected override bool ProcessDrag(Ray ray)
{
// 计算拖拽点的目标位置
var targetHitPosition = transform.position + ray.direction * oriHitPointDis;
var delta = targetHitPosition - oriHitPoint;
m_SelectedObj.SendMessageUpwards(drag, delta, SendMessageOptions.DontRequireReceiver);
oriHitPoint = targetHitPosition;
return true;
}
protected override bool CanDrag(Vector3 delta)
{
return !dragging && (m_SelectedObj.GetComponent() != null || m_SelectedObj.GetComponentInParent() != null) && Vector3.SqrMagnitude(delta) >= m_DragThreshold * m_DragThreshold;
}
}
}