using System;
using UnityEngine;

namespace Leap.Unity
{
	[Serializable]
	public class SmoothedQuaternion
	{
		public void SetBlend(float blend, float deltaTime = 1f)
		{
			this.delay = deltaTime * blend / (1f - blend);
		}

		public Quaternion Update(Quaternion input, float deltaTime = 1f)
		{
			if (deltaTime > 0f && !this.reset)
			{
				float num = this.delay / deltaTime;
				float num2 = num / (1f + num);
				this.value = Quaternion.Slerp(this.value, input, 1f - num2);
			}
			else
			{
				this.value = input;
				this.reset = false;
			}
			return this.value;
		}

		public Quaternion value = Quaternion.identity;

		public float delay;

		public bool reset = true;
	}
}
