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); } }
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; } } }
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); } } }
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); } }
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; } }
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); //} }
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); }
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; * } */ } }
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); }
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); }
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); } }
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); } }
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); } }
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; }
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; } } }
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); } }
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); } } }
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); }
// 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); }
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); } } }