ZeroVR/ZeroPacientVR/Assets/CodeRespawn/DungeonArchitect/Scripts/Modules/Common/SmoothValue.cs

52 lines
1.1 KiB
C#

//$ Copyright 2015-22, Code Respawn Technologies Pvt Ltd - All Rights Reserved $//
using UnityEngine;
namespace DungeonArchitect.Utils
{
public class SmoothValue
{
private float targetValue = 0;
private float currentValue = 0;
private float t = 0;
public float TimeToArrive = 0.1f;
public float Value
{
get => currentValue;
set
{
targetValue = value;
t = 0;
}
}
public float TargetValue
{
get => targetValue;
}
public SmoothValue(float value)
{
Set(value);
}
public void Set(float value)
{
currentValue = value;
targetValue = value;
t = 0;
}
public void Update(float deltaTime)
{
if (t < 1)
{
t += deltaTime / TimeToArrive;
t = Mathf.Clamp01(t);
currentValue = Mathf.Lerp(currentValue, targetValue, t);
}
}
}
}