private bool PanGestureHasEnoughMovementOnOneAxis(ref float xVelocity, ref float yVelocity)
        {
            if (AllowMovementOnBothAxisSimultaneously)
            {
                return(true);
            }

            float unitsX = Mathf.Abs(DeviceInfo.PixelsToUnits(PanGesture.DistanceX));
            float unitsY = Mathf.Abs(DeviceInfo.PixelsToUnits(PanGesture.DistanceY));

            if (lockedAxis == 0 && unitsX <= PanGesture.ThresholdUnits && unitsY <= PanGesture.ThresholdUnits)
            {
                return(false);
            }
            else if (lockedAxis == 1 || (lockedAxis == 0 && unitsX > unitsY * 3.0f))
            {
                lockedAxis = 1;
                yVelocity  = 0.0f;
                return(true);
            }
            else if (lockedAxis == 2 || (lockedAxis == 0 && unitsY > unitsX * 3.0f))
            {
                lockedAxis = 2;
                xVelocity  = 0.0f;
                return(true);
            }
            return(false);
        }
 private void XAxisStateUpdated(GestureRecognizer r)
 {
     if (TransformToScale == null)
     {
         return;
     }
     else if (r.State == GestureRecognizerState.Began)
     {
         // if moved too much up/down, reset gesture
         float vertUnits = DeviceInfo.PixelsToUnits(r.DistanceY);
         if (vertUnits > 0.15f)
         {
             r.Reset();
         }
         else
         {
             // reset y axis gesture, we only want one scale direction at a time
             YAxisScaleGesture.Reset();
         }
     }
     else if (r.State == GestureRecognizerState.Executing)
     {
         Vector3 scale = TransformToScale.localScale;
         scale.x *= XAxisScaleGesture.ScaleMultiplierX;
         TransformToScale.localScale = scale;
     }
 }
 private void YAxisStateUpdated(GestureRecognizer r)
 {
     if (TransformToScale == null)
     {
         return;
     }
     else if (r.State == GestureRecognizerState.Began)
     {
         // if moved too much left/right, reset gesture
         float horizUnits = DeviceInfo.PixelsToUnits(r.DistanceX);
         if (horizUnits > 0.15f)
         {
             r.Reset();
         }
         else
         {
             // reset x axis gesture, we only want one scale direction at a time
             XAxisScaleGesture.Reset();
         }
     }
     else if (r.State == GestureRecognizerState.Executing)
     {
         Vector3 scale = TransformToScale.localScale;
         scale.y *= YAxisScaleGesture.ScaleMultiplierY;
         TransformToScale.localScale = scale;
     }
 }
 private void TiltGesture_StateUpdated(GestureRecognizer gesture)
 {
     if (PlayerCamera != null && gesture.State == GestureRecognizerState.Executing)
     {
         Vector3 currentRotation = PlayerCamera.transform.localRotation.eulerAngles;
         if (currentRotation.x > 270.0f)
         {
             currentRotation.x -= 360.0f;
         }
         if (currentRotation.y > 270.0f)
         {
             currentRotation.y -= 360.0f;
         }
         float amountX = DeviceInfo.PixelsToUnits(tiltGesture.DeltaY) * Time.deltaTime * TiltSpeed * 1000.0f;
         float amountY = DeviceInfo.PixelsToUnits(tiltGesture.DeltaX) * Time.deltaTime * TiltSpeed * -1000.0f;
         currentRotation.x = Mathf.Clamp(currentRotation.x + amountX, TiltLimits.x, TiltLimits.y);
         currentRotation.y = Mathf.Clamp(currentRotation.y + amountY, TiltLimits.x, TiltLimits.y);
         PlayerCamera.transform.localRotation = Quaternion.Euler(currentRotation);
         resetTilt = false;
     }
     else if (gesture.State == GestureRecognizerState.Ended)
     {
         resetTilt = true;
     }
 }
 private void TiltGestureCallback(GestureRecognizer gesture)
 {
     if (gesture.State == GestureRecognizerState.Executing)
     {
         tiltVelocity += (DeviceInfo.PixelsToUnits(gesture.DeltaY) * Time.deltaTime * TiltSpeed * 25.0f);
     }
 }
 private void PanGestureCallback(GestureRecognizer gesture)
 {
     if (gesture.State == GestureRecognizerState.Executing)
     {
         Quaternion q = Target.rotation;
         q             = Quaternion.Euler(0.0f, q.eulerAngles.y, 0.0f);
         moveVelocity += (q * Vector3.right * DeviceInfo.PixelsToUnits(gesture.DeltaX) * Time.deltaTime * PanSpeed * 500.0f);
         moveVelocity += (q * Vector3.forward * DeviceInfo.PixelsToUnits(gesture.DeltaY) * Time.deltaTime * PanSpeed * 500.0f);
     }
 }
Esempio n. 7
0
        private void PanGestureUpdated(GestureRecognizer r)
        {
            if (TransformToRotate == null)
            {
                return;
            }

            if (r.State == GestureRecognizerState.Executing)
            {
                rotationVelocity = Vector2.zero;
                ApplyRotation(DeviceInfo.PixelsToUnits(r.DeltaX) * RotationSpeed, DeviceInfo.PixelsToUnits(r.DeltaY) * RotationSpeed);
            }
            else if (r.State == GestureRecognizerState.Ended)
            {
                rotationVelocity = new Vector2(DeviceInfo.PixelsToUnits(r.VelocityX) * RotationSpeed * 0.01f, DeviceInfo.PixelsToUnits(r.VelocityY) * RotationSpeed * 0.01f);
            }
        }
Esempio n. 8
0
 private void Panned(GestureRecognizer panGesture)
 {
     if (panGesture.State == GestureRecognizerState.Began)
     {
         if (PanAnchor != null)
         {
             PanAnchor.enabled            = true;
             PanAnchor.transform.position = new Vector3(panGesture.StartFocusX, panGesture.StartFocusY, PanAnchor.transform.position.z);
         }
         if (PanAnchorLine != null)
         {
             PanAnchorLine.enabled = true;
             PanAnchorLine.DrawLine(Vector2.zero, Vector2.zero, 0.0f);
         }
     }
     else if (panGesture.State == GestureRecognizerState.Executing)
     {
         float unitsX = DeviceInfo.PixelsToUnits(panGesture.DistanceX);
         float unitsY = DeviceInfo.PixelsToUnits(panGesture.DistanceY);
         float panX   = Mathf.Sign(unitsX) * Mathf.Lerp(0.0f, 1.0f, Mathf.Abs(unitsX) / PanUnitsForMaxMove);
         float panY   = Mathf.Sign(unitsY) * Mathf.Lerp(0.0f, 1.0f, Mathf.Abs(unitsY) / PanUnitsForMaxMove);
         if (PanCallback != null)
         {
             PanCallback.Invoke(new Vector2(panX, panY));
         }
         if (crossPlatformInputHorizontalAxisObject != null)
         {
             FingersCrossPlatformInputReflectionScript.UpdateVirtualAxis(crossPlatformInputHorizontalAxisObject, panX);
         }
         if (crossPlatformInputVerticalAxisObject != null)
         {
             FingersCrossPlatformInputReflectionScript.UpdateVirtualAxis(crossPlatformInputVerticalAxisObject, panY);
         }
         if (PanAnchor != null)
         {
             panLocation = new Vector2(panGesture.FocusX, panGesture.FocusY);
         }
     }
     else if (panGesture.State == GestureRecognizerState.Ended || panGesture.State == GestureRecognizerState.Failed)
     {
         if (PanCallback != null)
         {
             PanCallback.Invoke(new Vector2(0.0f, 0.0f));
         }
         if (crossPlatformInputHorizontalAxisObject != null)
         {
             FingersCrossPlatformInputReflectionScript.UpdateVirtualAxis(crossPlatformInputHorizontalAxisObject, 0.0f);
         }
         if (crossPlatformInputVerticalAxisObject != null)
         {
             FingersCrossPlatformInputReflectionScript.UpdateVirtualAxis(crossPlatformInputVerticalAxisObject, 0.0f);
         }
         if (PanAnchor != null)
         {
             PanAnchor.enabled = false;
             panLocation       = Vector2.zero;
         }
         if (PanAnchorLine != null)
         {
             PanAnchorLine.enabled = false;
         }
     }
 }