private IEnumerator RoutineMonitorTilt() { float tiltLowVelocity = 0f; float tiltHighVelocity = 0f; WaitForEndOfFrame waitHandle = new WaitForEndOfFrame(); yield return(waitHandle); while (true) { // Adapt the operating tilt range based on the operating height range, and if it's // over its limits, then move it towards it's target range. float t = operatingHeightRange.InverseLerp(CurrentHeight); t = Mathf.Clamp01(t); t = settings.EvaluateTiltTransition(t); ValueRange targetRange = ValueRange.Lerp(settings.TiltRangeLow, settings.TiltRangeHigh, t); operatingTiltRange.Set( Mathf.SmoothDampAngle(operatingTiltRange.Min, targetRange.Min, ref tiltLowVelocity, 0.2f), Mathf.SmoothDampAngle(operatingTiltRange.Max, targetRange.Max, ref tiltHighVelocity, 0.2f)); ApplyTiltFactor(); yield return(waitHandle); } }
private void ApplyTiltFactor() { CurrentTiltAngle = operatingTiltRange.Lerp(tiltFactor); }
private void UpdateOperatingTiltRange() { operatingTiltRange = ValueRange.Lerp(settings.TiltRangeLow, settings.TiltRangeHigh, operatingHeightRange.InverseLerp(CurrentHeight)); }