private Vector3 GetEndPoint(LeanFinger finger, Vector3 start) { // Make sure the camera exists var camera = LeanTouch.GetCamera(Camera, gameObject); if (camera != null) { // Cauculate distance based on start position, because the Target point may override Distance var end = ScreenDepth.Convert(finger.ScreenPosition, Camera, gameObject); var length = Vector3.Distance(start, end); // Limit the length? if (LengthMin > 0.0f && length < LengthMin) { length = LengthMin; } if (LengthMax > 0.0f && length > LengthMax) { length = LengthMax; } // Recalculate end return(start + Vector3.Normalize(end - start) * length); } return(default(Vector3)); }
protected override void UpdateLine(FingerData fingerData, LeanFinger finger, LineRenderer line) { var color0 = StartColor; var color1 = EndColor; var width = fingerData.Width; if (finger != null) { // Reserve points line.positionCount = 2; // Calculate preliminary points var point0 = ScreenDepth.Convert(finger.StartScreenPosition, gameObject); var point1 = ScreenDepth.Convert(finger.ScreenPosition, gameObject); if (StartAtOrigin == true) { point0 = transform.position; } // Get length, and clamp? var length = Vector3.Distance(point0, point1); if (LengthMin >= 0.0f && length < LengthMin) { length = LengthMin; } if (LengthMax >= 0.0f && length > LengthMax) { length = LengthMax; } // Write straight line line.SetPosition(0, point0); line.SetPosition(1, point0 + Vector3.Normalize(point1 - point0) * length); } else { fingerData.Age += Time.deltaTime; var alpha = Mathf.InverseLerp(FadeTime, 0.0f, fingerData.Age); color0.a *= alpha; color1.a *= alpha; } if (WidthScale != 0.0f && line.positionCount == 2) { var point0 = line.GetPosition(0); var point1 = line.GetPosition(1); var length = Vector3.Distance(point0, point1); width += length * WidthScale; } line.startColor = color0; line.endColor = color1; line.widthMultiplier = width; }
private Vector3 GetStartPoint(LeanFinger finger) { // Use target position? if (Target != null) { return(Target.position); } // Convert return(ScreenDepth.Convert(finger.StartScreenPosition, Camera, gameObject)); }
private Vector3 GetEndPoint(LeanFinger finger, Vector3 start) { // Cauculate distance based on start position, because the Target point may override Distance var end = ScreenDepth.Convert(finger.ScreenPosition, gameObject); var length = Vector3.Distance(start, end); // Limit the length? if (LengthMin > 0.0f && length < LengthMin) { length = LengthMin; } if (LengthMax > 0.0f && length > LengthMax) { length = LengthMax; } // Recalculate end return(start + Vector3.Normalize(end - start) * length); }