using System.Collections.Generic; using UnityEngine; [System.Serializable] public struct GraphData { public string _desc; public List StageValues; public float _value; public float Rate { get { return CalculateRate(); } } public GraphData(string desc, float value, List stageValues) { _desc = desc; _value = value; this.StageValues = stageValues; } private float CalculateRate() { if (StageValues == null || StageValues.Count < 2) { return 0; } if(double.IsNaN(_value) || double.IsInfinity(_value)) { return 0; } float rate = 0f; float stagePer = 1f / (StageValues.Count - 1); for(int i = 0; i < StageValues.Count - 1; i++) { rate += (Mathf.InverseLerp(StageValues[i], StageValues[i + 1], _value) * stagePer); } return rate; } }