// ------------------------------------------------------------------------------- public void ResetRotation(System.Action onCompleteCallback = null) { var targetrotation = Vector3.zero; var rotationDelta = 0.0f; if (IsUpsideDown) { targetrotation = transform.eulerAngles; targetrotation.y = 180.0f; rotationDelta = Mathf.Abs(targetrotation.y - transform.eulerAngles.y); } else { rotationDelta = Mathf.Abs(targetrotation.y - transform.eulerAngles.y) + Mathf.Abs(targetrotation.x - transform.eulerAngles.x) + Mathf.Abs(targetrotation.z - transform.eulerAngles.z); } var duration = (RotationTweenDurationCurve.keys.Length > 0) ? RotationTweenDurationCurve.Evaluate(rotationDelta) : 2.0f; Rotatable.PlaySFX(true); LeanTween.rotate(gameObject, targetrotation, duration).setEaseInOutBack().setOnComplete(() => { Rotatable.StopSFX(); if (onCompleteCallback != null) { onCompleteCallback.Invoke(); } }); }