protected override void OnHandleDragEnded(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragEnded(handle, eventData); if (m_TemporaryUIModule != null) { m_TemporaryUIModule.RemoveLineSegment(handle); m_TemporaryUIModule.RemoveGuideLine(handle); } }
protected override void OnHandleDragStarted(HandleEventData eventData) { var linearEventData = (LinearHandleEventData)eventData; m_LastPositions[eventData.rayOrigin] = linearEventData.raycastHitWorldPosition; UpdateEventData(linearEventData); base.OnHandleDragStarted(eventData); }
protected override void OnHandleDragStarted(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragStarted(handle, eventData); if (m_TemporaryUIModule != null) { m_TemporaryUIModule.AddLineSegment(handle, () => m_StartPosition, () => transform.position); m_TemporaryUIModule.AddGuideLine(handle, () => handle.transform.position, () => handle.transform.forward); } }
protected override void OnHandleDragStarted(HandleEventData eventData) { var rayOrigin = eventData.rayOrigin; m_CurrentRadius = Vector3.Distance(eventData.worldPosition, rayOrigin.position); m_ScrollRate = HandleSettings.instance.SphereHandleSettings.InitialScrollRate; m_LastPosition = GetRayPoint(eventData); base.OnHandleDragStarted(eventData); }
protected override void OnHandleHovering(HandleEventData eventData) { if (!hasDragSource) { UpdateEventData((LinearHandleEventData)eventData); } base.OnHandleHovering(eventData); }
protected override void OnHandleDragStarted(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragStarted(handle, eventData); m_TotalRotationAmount = Quaternion.identity; if (m_TemporaryUIModule != null) { m_TemporaryUIModule.AddAngle(handle, () => m_HandleStartPosition, () => transform.position, () => handle.transform.position); m_TemporaryUIModule.AddGuideCircle(handle, () => transform.position, () => m_HandleStartPosition, () => handle.transform.up); } }
protected override void OnHandleDragStarted(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragStarted(handle, eventData); if (m_TemporaryUIModule != null) { m_TotalScalingAmount = 1f; var extent = m_HandleStartPosition - m_StartPosition; m_TemporaryUIModule.AddLineSegment(handle, () => m_StartPosition, () => m_StartPosition + extent * m_TotalScalingAmount); m_TemporaryUIModule.AddGuideLine(handle, () => handle.transform.position, () => handle.transform.forward); } }
protected virtual void OnHandleDragEnded(BaseHandle handle, HandleEventData eventData) { dragging = false; dragEnded?.Invoke(); if (m_TemporaryUIModule != null) { m_TemporaryUIModule.RemoveLabel(handle); } m_ZoneScale.enabled = true; }
protected override void OnHandleDragStarted(HandleEventData eventData) { var rayOrigin = eventData.rayOrigin; var radialEventData = (RadialHandleEventData)eventData; m_LastPositions[rayOrigin] = radialEventData.raycastHitWorldPosition; var thisTransform = transform; m_Plane.SetNormalAndPosition(thisTransform.up, thisTransform.position); base.OnHandleDragStarted(eventData); }
void OnHandleDragging(BaseHandle handle, HandleEventData eventData) { if (Vector3.SqrMagnitude(eventData.worldPosition - m_StartPosition) > m_MoveThreshold) { m_Dragging = true; m_Rigidbody.isKinematic = false; } if (m_Dragging) { m_CurrentHandleDelta = eventData.deltaPosition; // Force vector will be applied in fixed updated } UpdateBoundingBox(); }
protected override void OnHandleDragging(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragging(handle, eventData); var handleTransform = handle.transform; var inverseRotation = Quaternion.Inverse(handleTransform.rotation); var thisTransform = transform; var localStartDragPosition = inverseRotation * (m_HandleStartPosition - thisTransform.position); var delta = (inverseRotation * eventData.deltaPosition).z / localStartDragPosition.z; m_TotalScalingAmount += delta; DoScale(Quaternion.Inverse(thisTransform.rotation) * handleTransform.forward * delta); }
protected virtual HandleEventData GetHandleEventData(XRBaseInteractor interactor) { var rayOrigin = GetRayOriginFromInteractor(interactor); if (!m_HandleEventData.TryGetValue(interactor, out var eventData)) { m_HandleEventData.Add(interactor, eventData = new HandleEventData(null, false)); } eventData.rayOrigin = rayOrigin; if (interactor is ILineRenderable lineRenderable && lineRenderable.TryGetHitInfo(out var position, out _, out _, out _)) { eventData.direct = false; eventData.worldPosition = position; }
protected override void OnHandleDragStarted(HandleEventData eventData) { var planeEventData = (PlaneHandleEventData)eventData; var position = planeEventData.raycastHitWorldPosition; // Force local z to 0 because hit point will be on the handle mesh, the drag plane var handleTransform = transform; position = handleTransform.InverseTransformPoint(position); position.z = 0; position = handleTransform.TransformPoint(position); m_LastPositions[eventData.rayOrigin] = position; m_Plane.SetNormalAndPosition(handleTransform.forward, handleTransform.position); base.OnHandleDragStarted(eventData); }
void OnHandleDragEnded(BaseHandle handle, HandleEventData eventData) { m_Dragging = false; m_Rigidbody.isKinematic = true; if (m_ScrollInputController != null) { m_ScrollInputController.RemoveActions(); m_ScrollInputController.enabled = false; } m_CurrentHandleDelta = Vector3.zero; foreach (var c in m_Handle.colliders) { c.isTrigger = true; } dragEnded?.Invoke(); }
protected virtual void OnHandleDragStarted(BaseHandle handle, HandleEventData eventData) { m_HandleStartPosition = handle.transform.position; m_StartPosition = transform.position; m_ActiveHandle = handle; dragging = true; if (dragStarted != null) { dragStarted(); } if (m_TemporaryUIModule != null) { m_TemporaryUIModule.AddLabel(handle, LabelText, LabelPosition); } m_ZoneScale.enabled = false; }
protected override void OnHandleDragging(HandleEventData eventData) { var rayOrigin = eventData.rayOrigin; var lastPosition = m_LastPositions[rayOrigin]; var worldPosition = lastPosition; // Raycast against the plane and get the hit point var ray = eventData.GetRay(); if (m_Plane.Raycast(ray, out var distance)) { worldPosition = ray.GetPoint(Mathf.Min(Mathf.Abs(distance), HandleSettings.instance.MaxDragDistance * this.GetViewerScale())); } var deltaPosition = worldPosition - lastPosition; m_LastPositions[rayOrigin] = worldPosition; eventData.deltaPosition = deltaPosition; base.OnHandleDragging(eventData); }
protected override void OnHandleDragStarted(HandleEventData eventData) { var mainCamera = Camera.main; if (mainCamera == null) { return; } var rayOrigin = eventData.rayOrigin; var position = rayOrigin.position; var rayOriginPosition = position; var rigidBodyPosition = transform.position; m_DefaultHoldingDistance = Vector3.Distance(rayOriginPosition, eventData.worldPosition); var cameraRig = mainCamera.transform.parent; m_RelativeStartOrigin = cameraRig.InverseTransformPoint(position); m_InitialPushPullAmount = CalculatePushPullAmount(rayOrigin); m_GrabOffset = eventData.worldPosition - rigidBodyPosition; base.OnHandleDragStarted(eventData); }
protected override void OnHandleDragging(HandleEventData eventData) { var rayOrigin = eventData.rayOrigin; var lastPosition = m_LastPositions[rayOrigin]; var worldPosition = lastPosition; float distance; var ray = eventData.GetRay(); if (m_Plane.Raycast(ray, out distance)) { worldPosition = ray.GetPoint(Mathf.Abs(distance)); } var thisTransform = transform; var up = thisTransform.up; var pivot = thisTransform.parent.position; var angle = Vector3.SignedAngle(worldPosition - pivot, m_LastPositions[rayOrigin] - pivot, -up); eventData.deltaRotation = Quaternion.AngleAxis(angle, up); m_LastPositions[rayOrigin] = worldPosition; base.OnHandleDragging(eventData); }
protected override void OnHandleDragging(BaseHandle handle, HandleEventData eventData) { base.OnHandleDragging(handle, eventData); DoTranslate(eventData.deltaPosition); }
Vector3 GetRayPoint(HandleEventData eventData) { return(eventData.GetRay().GetPoint(m_CurrentRadius)); }
protected virtual void OnHandleDragging(BaseHandle handle, HandleEventData eventData) { }
protected override void OnHandleDragging(HandleEventData eventData) { UpdateEventData((LinearHandleEventData)eventData); base.OnHandleDragging(eventData); }