using System;
using UnityEngine;
namespace UniVRM10
{
[Serializable]
public class CurveMapper
{
///
/// v0.128.3 VRM10ObjectLookAtEditor
///
/// DegreeINput 0-90
///
public float CurveXRangeDegree;
///
/// v0.128.3 VRM10ObjectLookAtEditor
///
/// EyeBoneDegree 0-90
/// or
/// ExpressionWeight 0-1.0
///
public float CurveYRangeDegree;
public CurveMapper(float xRange, float yRange)
{
CurveXRangeDegree = xRange;
CurveYRangeDegree = yRange;
}
public void OnValidate()
{
if (CurveXRangeDegree == 0)
{
CurveXRangeDegree = 90.0f;
}
}
public float Map(float src)
{
// https://github.com/vrm-c/UniVRM/issues/2452
var t = Mathf.Clamp01(src / Mathf.Max(0.001f, CurveXRangeDegree));
return t * CurveYRangeDegree;
}
}
}