/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * Licensed under the Oculus SDK License Agreement (the "License"); * you may not use the Oculus SDK except in compliance with the License, * which is provided at the time of installation or download, or which * otherwise accompanies this software in either electronic or hard copy form. * * You may obtain a copy of the License at * * https://developer.oculus.com/licenses/oculussdk/ * * Unless required by applicable law or agreed to in writing, the Oculus SDK * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Text; using UnityEngine; using UnityEngine.Assertions; namespace UnityEngine.EventSystems { /// /// Extension of Unity's PointerEventData to support ray based pointing and also touchpad swiping /// public class OVRPointerEventData : PointerEventData { public OVRPointerEventData(EventSystem eventSystem) : base(eventSystem) { } public Ray worldSpaceRay; public Vector2 swipeStart; public override string ToString() { var sb = new StringBuilder(); sb.AppendLine("Position: " + position); sb.AppendLine("delta: " + delta); sb.AppendLine("eligibleForClick: " + eligibleForClick); sb.AppendLine("pointerEnter: " + pointerEnter); sb.AppendLine("pointerPress: " + pointerPress); sb.AppendLine("lastPointerPress: " + lastPress); sb.AppendLine("pointerDrag: " + pointerDrag); sb.AppendLine("worldSpaceRay: " + worldSpaceRay); sb.AppendLine("swipeStart: " + swipeStart); sb.AppendLine("Use Drag Threshold: " + useDragThreshold); return sb.ToString(); } } /// /// Static helpers for OVRPointerEventData. /// public static class PointerEventDataExtension { public static bool IsVRPointer(this PointerEventData pointerEventData) { return (pointerEventData is OVRPointerEventData); } public static Ray GetRay(this PointerEventData pointerEventData) { OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; Assert.IsNotNull(vrPointerEventData); return vrPointerEventData.worldSpaceRay; } public static Vector2 GetSwipeStart(this PointerEventData pointerEventData) { OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; Assert.IsNotNull(vrPointerEventData); return vrPointerEventData.swipeStart; } public static void SetSwipeStart(this PointerEventData pointerEventData, Vector2 start) { OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; Assert.IsNotNull(vrPointerEventData); vrPointerEventData.swipeStart = start; } } }