#define Graph_And_Chart_PRO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace ChartAndGraph
{
///
/// base class for some chart datasources
///
[Serializable]
public abstract class AbstractChartData
{
protected class Slider
{
public string category;
public string group;
public double from;
public double to;
public float startTime;
public float totalTime;
public float timeScale = 1f;
public AnimationCurve curve;
public bool UpdateSlider(AbstractChartData data)
{
float time = Time.time;
float elasped = time - startTime;
elasped *= timeScale;
if (elasped > totalTime)
{
data.SetValueInternal(category, group, to);
return true;
}
float factor = elasped / totalTime;
if (curve != null)
factor = curve.Evaluate(factor);
double newValue = from * (1.0 - factor) + to * factor;
data.SetValueInternal(category, group, newValue);
return false;
}
}
protected List mSliders = new List();
protected void RemoveSliderForGroup(string group)
{
mSliders.RemoveAll(x => { return x.group == group; });
}
protected void RemoveSliderForCategory(string category)
{
mSliders.RemoveAll(x => { return x.category == category; });
}
protected void RemoveSlider(string category,string group)
{
mSliders.RemoveAll(x=> { return x.category == category && x.group == group; });
}
bool DoSlider(Slider s)
{
return s.UpdateSlider(this);
}
protected void UpdateSliders()
{
mSliders.RemoveAll(DoSlider);
}
protected abstract void SetValueInternal(string column, string row, double value);
}
}