Beispiel #1
0
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Get pinch
            var pinch = Scale == ScaleType.PinchRatio == true?LeanGesture.GetPinchRatio(fingers, WheelSensitivity) : LeanGesture.GetPinchScale(fingers, WheelSensitivity);

            // Ignore?
            if (pinch == 1.0f)
            {
                return;
            }

            // This gives you a 0 based pinch value, allowing usage with translation and rotation
            if (Scale == ScaleType.PinchShift)
            {
                pinch -= 1.0f;
            }

            // Call events
            if (OnPinch != null)
            {
                OnPinch.Invoke(pinch);
            }
        }
Beispiel #2
0
        protected virtual void Update()
        {
            // Make sure the camera exists
            cachedCamera = LeanTouch.GetCamera(Camera, gameObject);

            if (cachedCamera != null)
            {
                // Get the fingers we want to use
                var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

                if (fingers.Count > 0)
                {
                    // If it's the first frame the fingers are down, grab the current screen point of this GameObject
                    if (targetSet == false)
                    {
                        targetSet         = true;
                        targetScreenPoint = cachedCamera.WorldToScreenPoint(transform.position);
                    }

                    // Shift target point based on finger deltas
                    targetScreenPoint += LeanGesture.GetScreenDelta(fingers);
                }
                // Unset if no fingers are down
                else
                {
                    targetSet = false;
                }
            }
        }
Beispiel #3
0
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                // Get delta
                var delta = LeanGesture.GetScreenDelta(fingers);

                // Ignore?
                if (delta.sqrMagnitude == 0.0f)
                {
                    return;
                }

                // Scale?
                if (DeltaCoordinates == DeltaCoordinatesType.Scaled)
                {
                    delta *= LeanTouch.ScalingFactor;
                }

                // Call events
                if (OnSetCenter != null)
                {
                    OnSetCenter.Invoke(LeanGesture.GetScreenCenter(fingers));
                }

                if (OnSetDelta != null)
                {
                    OnSetDelta.Invoke(delta);
                }
            }
        }
Beispiel #4
0
        protected virtual void Update()
        {
            // Получить пальцы, которые мы хотим использовать
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Рассчитайтываем масштаб щепотки и убедитесь, что он действителен
            var pinchScale = LeanGesture.GetPinchScale(fingers, WheelSensitivity);

            if (pinchScale != 1.0f)
            {
                // Выполните перевод, если это относительная шкала
                if (Relative == true)
                {
                    var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

                    if (transform is RectTransform)
                    {
                        TranslateUI(pinchScale, pinchScreenCenter);
                    }
                    else
                    {
                        Translate(pinchScale, pinchScreenCenter);
                    }
                }

                // Выполнить масштабирование
                Scale(transform.localScale * pinchScale);
            }
        }
Beispiel #5
0
        protected virtual void Update()
        {
            var camera = LeanTouch.GetCamera(Camera, gameObject);

            if (camera != null)
            {
                var finalTransform = Target != null ? Target.transform : transform;

                // Get the fingers we want to use
                var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

                // Get the pinch ratio of these fingers
                var pinchRatio = LeanGesture.GetPinchRatio(fingers, WheelSensitivity);

                var pinchShift = pinchRatio - 1.0f;
                var center     = LeanGesture.GetScreenCenter(fingers);

                if (fingers.Count == 0)
                {
                    center = Input.mousePosition;
                }

                var ray = camera.ScreenPointToRay(center);

                finalTransform.position -= ray.direction * pinchShift * SpeedMultiplier;
            }
        }
        protected virtual void Update()
        {
            // Make sure the camera exists
            var camera = LeanTouch.GetCamera(Camera, gameObject);

            if (camera != null)
            {
                // Get the fingers we want to use
                var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

                if (fingers.Count > 0)
                {
                    var screenPoint   = LeanGesture.GetScreenCenter(fingers);
                    var worldPosition = default(Vector3);

                    if (ScreenDepth.TryConvert(ref worldPosition, screenPoint, camera, gameObject) == true)
                    {
                        transform.position = worldPosition;
                    }
                }
            }
            else
            {
                Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
            }
        }
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                scale *= LeanGesture.GetPinchRatio(fingers);
                twist += LeanGesture.GetTwistDegrees(fingers);

                if (state == StateType.None)
                {
                    if (Mathf.Abs(scale - 1.0f) >= PinchThreshold)
                    {
                        state = PinchMode;
                    }
                    else if (Mathf.Abs(twist) >= TwistThreshold)
                    {
                        state = TwistMode;
                    }
                }
            }
            else
            {
                state = StateType.None;
                scale = 1.0f;
                twist = 0.0f;
            }

            switch (state)
            {
            case StateType.None:
            {
                PinchComponent.enabled = false;
                TwistComponent.enabled = false;
            }
            break;

            case StateType.Scale:
            {
                PinchComponent.enabled = true;
                TwistComponent.enabled = false;
            }
            break;

            case StateType.Rotate:
            {
                PinchComponent.enabled = false;
                TwistComponent.enabled = true;
            }
            break;

            case StateType.ScaleRotate:
            {
                PinchComponent.enabled = true;
                TwistComponent.enabled = true;
            }
            break;
            }
        }
Beispiel #8
0
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate pinch scale, and make sure it's valid
            var pinchScale = LeanGesture.GetPinchScale(fingers, WheelSensitivity);

            //if (pinchScale != 1.0f)
            //{
            //	// Perform the translation if this is a relative scale
            //	if (Relative == true)
            //	{
            //		var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

            //		if (transform is RectTransform)
            //		{
            //			TranslateUI(pinchScale, pinchScreenCenter);
            //		}
            //		else
            //		{
            //			Translate(pinchScale, pinchScreenCenter);
            //		}
            //	}

            // Perform the scaling
            Scale(transform.localScale * pinchScale);
            //}
        }
Beispiel #9
0
        protected virtual void Update()
        {
            // pega os dedos que queremos usar
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // calcula pinchScale e verifique se ela é válida
            var pinchScale = LeanGesture.GetPinchScale(fingers, WheelSensitivity);

            if (pinchScale != 1.0f)
            {
                // realiza a translacao se esta for uma escala relativa
                if (Relative == true)
                {
                    var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

                    if (transform is RectTransform)
                    {
                        TranslateUI(pinchScale, pinchScreenCenter);
                    }
                    else
                    {
                        Translate(pinchScale, pinchScreenCenter);
                    }
                }

                // realiza o dimensionamento
                Scale(transform.localScale * pinchScale);
            }
        }
        protected virtual void Update()
        {
            // Make sure the camera exists
            cachedCamera = LeanTouch.GetCamera(Camera, gameObject);

            if (cachedCamera != null)
            {
                // Get the fingers we want to use
                var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

                if (fingers.Count > 0)
                {
                    // If it's the first frame the fingers are down, grab the current screen point of this GameObject
                    if (targetSet == false)
                    {
                        targetSet         = true;
                        targetScreenPoint = cachedCamera.WorldToScreenPoint(transform.position);
                    }

                    // Shift target point based on finger deltas
                    // NOTE: targetScreenPoint.z already stores the depth
                    targetScreenPoint += (Vector3)LeanGesture.GetScreenDelta(fingers);
                }
                // Unset if no fingers are down
                else
                {
                    targetSet = false;
                }
            }
            else
            {
                Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
            }
        }
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            UpdateFingers(fingers);
        }
Beispiel #12
0
        protected virtual void FixedUpdate()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                var oldPosition = transform.position;
                var targetPoint = LeanGesture.GetScreenCenter(fingers);
                var newPosition = ScreenDepth.Convert(targetPoint, Camera, gameObject);
                var direction   = newPosition - oldPosition;
                var velocity    = direction / Time.fixedDeltaTime;

                // Apply the velocity
                velocity *= LeanTouch.GetDampenFactor(Dampening, Time.fixedDeltaTime);

                cachedRigidbody.velocity = velocity;

                /*
                 *              if (Rotation == true && direction != Vector3.zero)
                 *              {
                 *                      var angle           = Mathf.Atan2(direction.x, direction.y) * Mathf.Rad2Deg;
                 *                      var directionB      = (Vector2)transform.up;
                 *                      var angleB          = Mathf.Atan2(directionB.x, directionB.y) * Mathf.Rad2Deg;
                 *                      var delta           = Mathf.DeltaAngle(angle, angleB);
                 *                      var angularVelocity = delta / Time.fixedDeltaTime;
                 *
                 *                      angularVelocity *= LeanTouch.GetDampenFactor(RotationDampening, Time.fixedDeltaTime);
                 *
                 *                      //cachedRigidbody.angularVelocity = angularVelocity;
                 *              }
                 */
            }
        }
Beispiel #13
0
        protected virtual void LateUpdate()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Get the pinch ratio of these fingers
            var pinchRatio = LeanGesture.GetPinchRatio(fingers, WheelSensitivity);

            // Perform the translation if this is a relative scale
            if (Relative == true)
            {
                var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

                Translate(pinchRatio, pinchScreenCenter);
            }

            // Modify the zoom value
            Zoom *= pinchRatio;

            if (ZoomClamp == true)
            {
                Zoom = Mathf.Clamp(Zoom, ZoomMin, ZoomMax);
            }

            // Set the new zoom
            SetZoom(Zoom);
        }
Beispiel #14
0
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate the rotation values based on these fingers
            var twistDegrees = LeanGesture.GetTwistDegrees(fingers);

            if (Relative == true)
            {
                var twistScreenCenter = LeanGesture.GetScreenCenter(fingers);

                if (transform is RectTransform)
                {
                    TranslateUI(twistDegrees, twistScreenCenter);
                    RotateUI(twistDegrees);
                }
                else
                {
                    Translate(twistDegrees, twistScreenCenter);
                    Rotate(twistDegrees);
                }
            }
            else
            {
                Rotate(twistDegrees);
            }
        }
        /// <summary>This method returns a list of all fingers based on the current settings.</summary>
        public List <LeanFinger> GetFingers(bool ignoreUpFingers = false)
        {
            if (fingers == null)
            {
                fingers = new List <LeanFinger>();
            }

            switch (Filter)
            {
            case FilterType.AllFingers:
            {
                fingers.Clear();

                fingers.AddRange(LeanSelectable.GetFingers(IgnoreStartedOverGui, false, RequiredFingerCount, RequiredSelectable));
            }
            break;
            }

            if (ignoreUpFingers == true)
            {
                for (var i = fingers.Count - 1; i >= 0; i--)
                {
                    if (fingers[i].Up == true)
                    {
                        fingers.RemoveAt(i);
                    }
                }
            }

            if (RequiredMouseButtons != 0)
            {
                var keep = true;

                for (var i = 0; i < 3; i++)
                {
                    var mask = 1 << i;

                    if ((RequiredMouseButtons & mask) != 0 && Input.GetMouseButton(i) == false)
                    {
                        keep = false; break;
                    }
                }

                if (keep == false)
                {
                    for (var i = fingers.Count - 1; i >= 0; i--)
                    {
                        if (fingers[i].Index < 0)
                        {
                            fingers.RemoveAt(i);
                        }
                    }
                }
            }

            return(fingers);
        }
        /// <summary>This method returns a list of all fingers based on the current settings.</summary>
        public List <LeanFinger> GetFingers(bool ignoreUpFingers = false)
        {
            if (fingers == null)
            {
                fingers = new List <LeanFinger>();
            }

            if (filteredFingers == null)
            {
                filteredFingers = new List <LeanFinger>();
            }

            filteredFingers.Clear();

            if (Filter == FilterType.AllFingers)
            {
                filteredFingers.AddRange(LeanSelectable.GetFingers(IgnoreStartedOverGui, false, 0, RequiredSelectable));
            }
            else
            {
                filteredFingers.AddRange(fingers);
            }

            if (ignoreUpFingers == true)
            {
                for (var i = filteredFingers.Count - 1; i >= 0; i--)
                {
                    if (filteredFingers[i].Up == true)
                    {
                        filteredFingers.RemoveAt(i);
                    }
                }
            }

            if (RequiredMouseButtons > 0 && SimulatedFingersExist(filteredFingers) == true)
            {
                for (var i = 0; i < 5; i++)
                {
                    var mask = 1 << i;

                    if ((RequiredMouseButtons & mask) != 0 && Lean.Common.LeanInput.GetMousePressed(i) == false)
                    {
                        filteredFingers.Clear();
                    }
                }

                return(filteredFingers);
            }

            if (RequiredFingerCount > 0 && filteredFingers.Count != RequiredFingerCount)
            {
                filteredFingers.Clear();
            }

            return(filteredFingers);
        }
        protected virtual void Update()
        {
            // pega os dedos que queremos usar
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calcula os valores de rotação baseados nesses dedos
            var twistDegrees = LeanGesture.GetTwistDegrees(fingers);

            // Realiza rotação
            transform.Rotate(Axis, twistDegrees, Space);
        }
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate the rotation values based on these fingers
            var twistDegrees = LeanGesture.GetTwistDegrees(fingers);

            // Perform rotation
            transform.Rotate(Axis, twistDegrees, Space);
        }
Beispiel #19
0
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                delta += LeanGesture.GetScaledDelta(fingers);
                scale *= LeanGesture.GetPinchRatio(fingers);
                twist += LeanGesture.GetTwistDegrees(fingers);

                if (state == StateType.None)
                {
                    if (DragComponent != null && delta.magnitude >= DragThreshold)
                    {
                        state = StateType.Drag;
                    }
                    else if (PinchComponent != null && Mathf.Abs(scale - 1.0f) >= PinchThreshold)
                    {
                        state = StateType.Pinch;
                    }
                    else if (TwistComponent != null && Mathf.Abs(twist) >= TwistThreshold)
                    {
                        state = StateType.Twist;
                    }
                }
            }
            else
            {
                state = StateType.None;
                delta = Vector2.zero;
                scale = 1.0f;
                twist = 0.0f;
            }

            if (DragComponent != null)
            {
                DragComponent.enabled = state == StateType.Drag || (EnableWithoutIsolation == true && state == StateType.None);
            }

            if (PinchComponent != null)
            {
                PinchComponent.enabled = state == StateType.Pinch || (EnableWithoutIsolation == true && state == StateType.None);
            }

            if (TwistComponent != null)
            {
                TwistComponent.enabled = state == StateType.Twist || (EnableWithoutIsolation == true && state == StateType.None) || (TwistWithPinch == true && state == StateType.Pinch);
            }
        }
Beispiel #20
0
        protected virtual void FixedUpdate()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                var targetPoint = LeanGesture.GetScreenCenter(fingers);
                var newPosition = ScreenDepth.Convert(targetPoint, Camera, gameObject);
                var factor      = LeanTouch.GetDampenFactor(Dampening, Time.fixedDeltaTime);

                transform.position = Vector3.Lerp(transform.position, newPosition, factor);
            }
        }
Beispiel #21
0
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate the screenDelta value based on these fingers
            var screenDelta = LeanGesture.GetScreenDelta(fingers);

            // Make sure the camera exists
            var camera = LeanTouch.GetCamera(ScreenDepth.Camera, gameObject);

            if (fingers.Count == 0)
            {
                deltaDifference = Vector2.zero;
            }

            if (camera != null)
            {
                if (TrackScreenPosition == true)
                {
                    var oldScreenPoint = camera.WorldToScreenPoint(transform.position);
                    var worldPosition  = default(Vector3);

                    if (ScreenDepth.TryConvert(ref worldPosition, oldScreenPoint + (Vector3)(screenDelta + deltaDifference), gameObject) == true)
                    {
                        transform.position = worldPosition;
                    }

                    var newScreenPoint = camera.WorldToScreenPoint(transform.position);
                    var oldNewDelta    = (Vector2)(newScreenPoint - oldScreenPoint);

                    deltaDifference += screenDelta - oldNewDelta;
                }
                else
                {
                    var oldScreenPoint = camera.WorldToScreenPoint(transform.position);
                    var worldPosition  = default(Vector3);

                    if (ScreenDepth.TryConvert(ref worldPosition, oldScreenPoint + (Vector3)screenDelta, gameObject) == true)
                    {
                        transform.position = worldPosition;
                    }
                }
            }
            else
            {
                Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
            }
        }
Beispiel #22
0
        protected virtual void Update()
        {
            // Get fingers and calculate how many are still touching the screen
            var fingers     = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);
            var fingerCount = GetFingerCount(fingers);

            // At least one finger set?
            if (fingerCount > 0)
            {
                // Did this just begin?
                if (lastFingerCount == 0)
                {
                    age = 0.0f;
                    HighestFingerCount = fingerCount;
                }
                else if (fingerCount > HighestFingerCount)
                {
                    HighestFingerCount = fingerCount;
                }
            }

            age += Time.unscaledDeltaTime;

            // Reset
            MultiTap = false;

            // Is a multi-tap still eligible?
            if (age <= LeanTouch.CurrentTapThreshold)
            {
                // All fingers released?
                if (fingerCount == 0 && lastFingerCount > 0)
                {
                    MultiTapCount += 1;

                    if (OnTap != null)
                    {
                        OnTap.Invoke(MultiTapCount, HighestFingerCount);
                    }
                }
            }
            // Reset
            else
            {
                MultiTapCount      = 0;
                HighestFingerCount = 0;
            }

            lastFingerCount = fingerCount;
        }
Beispiel #23
0
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                var screenPoint   = LeanGesture.GetScreenCenter(fingers);
                var worldPosition = default(Vector3);

                if (ScreenDepth.TryConvert(ref worldPosition, screenPoint, gameObject) == true)
                {
                    transform.position = worldPosition;
                }
            }
        }
Beispiel #24
0
        protected virtual void Update()
        {
            if (Camera.main == null)
            {
                return;
            }

            // Get the fingers we want to use
            var fingers =
                LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate pinch scale, and make sure it's valid
            var pinchScale = LeanGesture.GetPinchScale(fingers, WheelSensitivity);

            var newScale = transform.localScale * pinchScale;

            if (newScale.x < ScaleMin.x || newScale.x > ScaleMax.x)
            {
                return;
            }

            if (pinchScale > 0.0f)
            {
                // Perform the translation if this is a relative scale
                if (Relative == true)
                {
                    var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

                    if (!Physics.Raycast(Camera.main.ScreenPointToRay(pinchScreenCenter)))
                    {
                        return;
                    }

                    if (transform is RectTransform)
                    {
                        TranslateUI(pinchScale, pinchScreenCenter);
                    }
                    else
                    {
                        Translate(pinchScale, pinchScreenCenter);
                    }
                }

                // Perform the scaling
                Scale(transform.localScale * pinchScale);
            }
        }
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate the screenDelta value based on these fingers
            var screenDelta = LeanGesture.GetScreenDelta(fingers);

            // Perform the translation
            if (transform is RectTransform)
            {
                TranslateUI(screenDelta);
            }
            else
            {
                Translate(screenDelta);
            }
        }
Beispiel #26
0
        protected virtual void LateUpdate()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Get the pinch ratio of these fingers
            var pinchRatio = LeanGesture.GetPinchRatio(fingers, WheelSensitivity);

            // Modify the zoom value
            Zoom *= pinchRatio;

            if (ZoomClamp == true)
            {
                Zoom = Mathf.Clamp(Zoom, ZoomMin, ZoomMax);
            }

            // Set the new zoom
            SetZoom(Zoom);
        }
        protected virtual void FixedUpdate()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (fingers.Count > 0)
            {
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var oldPosition = transform.position;
                    var screenPoint = camera.WorldToScreenPoint(oldPosition);
                    var targetPoint = LeanGesture.GetScreenCenter(fingers);
                    var newPosition = camera.ScreenToWorldPoint(new Vector3(targetPoint.x, targetPoint.y, screenPoint.z));
                    var direction   = (Vector2)(newPosition - oldPosition);
                    var velocity    = direction / Time.fixedDeltaTime;

                    // Apply the velocity
                    velocity *= LeanTouch.GetDampenFactor(Dampening, Time.fixedDeltaTime);

                    cachedRigidbody.velocity = velocity;

                    if (Rotation == true && direction != Vector2.zero)
                    {
                        var angle           = Mathf.Atan2(direction.x, direction.y) * Mathf.Rad2Deg;
                        var directionB      = (Vector2)transform.up;
                        var angleB          = Mathf.Atan2(directionB.x, directionB.y) * Mathf.Rad2Deg;
                        var delta           = Mathf.DeltaAngle(angle, angleB);
                        var angularVelocity = delta / Time.fixedDeltaTime;

                        angularVelocity *= LeanTouch.GetDampenFactor(RotationDampening, Time.fixedDeltaTime);

                        cachedRigidbody.angularVelocity = angularVelocity;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
        }
Beispiel #28
0
        protected virtual void Update()
        {
            // Get fingers
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            if (RequiredMouseButton > 0)
            {
                for (var i = fingers.Count - 1; i >= 0; i--)
                {
                    var finger = fingers[i];

                    if (finger.Index < 0 && Input.GetMouseButton(RequiredMouseButton - 1) == false)
                    {
                        fingers.RemoveAt(i);
                    }
                }
            }

            UpdateFingers(fingers);
        }
Beispiel #29
0
        // Update is called once per frame
        void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount,
                                                    RequiredSelectable);

            // Calculate pinch scale, and make sure it's valid
            var pinchScale = LeanGesture.GetPinchScale(fingers, 0);

            if (pinchScale > 0.0f)
            {
                var pinchScreenCenter = LeanGesture.GetScreenCenter(fingers);

                Translate(pinchScale, pinchScreenCenter);
            }


            // Perform the scaling
            Scale(transform.localScale * pinchScale);
        }
Beispiel #30
0
        protected virtual void Update()
        {
            // Get the fingers we want to use
            var fingers = LeanSelectable.GetFingers(IgnoreStartedOverGui, IgnoreIsOverGui, RequiredFingerCount, RequiredSelectable);

            // Calculate the rotation values based on these fingers
            var twistDegrees = LeanGesture.GetTwistDegrees(fingers);

            // Perform rotation
            //transform.Rotate(Axis, twistDegrees, Space);
            if (GameObject.FindGameObjectsWithTag("Polygon").Length != 0)
            {
                GameObject[] polygon;
                polygon = GameObject.FindGameObjectsWithTag("Polygon");
                foreach (GameObject goPoly in polygon)
                {
                    goPoly.GetComponent <MeshRenderer>().material.SetFloat("_Rotation", twistDegrees);
                }
            }
        }