| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using System.Collections.Generic;
- using UnityEngine;
- [System.Serializable]
- public struct GraphData
- {
- public string _desc;
- public List<float> StageValues;
- public float _value;
- public float Rate
- {
- get
- {
- return CalculateRate();
- }
- }
- public GraphData(string desc, float value, List<float> 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;
- }
- }
|