Пример #1
0
 protected override void OnHandleDragEnded(BaseHandle handle, HandleEventData eventData)
 {
     base.OnHandleDragEnded(handle, eventData);
     if (m_TemporaryUIModule != null)
     {
         m_TemporaryUIModule.RemoveLineSegment(handle);
         m_TemporaryUIModule.RemoveGuideLine(handle);
     }
 }
Пример #2
0
        protected override void OnHandleDragStarted(HandleEventData eventData)
        {
            var linearEventData = (LinearHandleEventData)eventData;

            m_LastPositions[eventData.rayOrigin] = linearEventData.raycastHitWorldPosition;
            UpdateEventData(linearEventData);

            base.OnHandleDragStarted(eventData);
        }
Пример #3
0
 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);
        }
Пример #5
0
        protected override void OnHandleHovering(HandleEventData eventData)
        {
            if (!hasDragSource)
            {
                UpdateEventData((LinearHandleEventData)eventData);
            }

            base.OnHandleHovering(eventData);
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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();
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #17
0
        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);
        }
Пример #19
0
 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)
 {
 }
Пример #22
0
        protected override void OnHandleDragging(HandleEventData eventData)
        {
            UpdateEventData((LinearHandleEventData)eventData);

            base.OnHandleDragging(eventData);
        }