61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
|
|
#define Graph_And_Chart_PRO
|
||
|
|
using UnityEngine;
|
||
|
|
namespace ChartAndGraph
|
||
|
|
{
|
||
|
|
public class PieAnimation : MonoBehaviour
|
||
|
|
{
|
||
|
|
public bool AnimateOnStart = true;
|
||
|
|
public bool AnimateOnEnable = true;
|
||
|
|
[Range(0f,360f)]
|
||
|
|
public float AnimateSpan = 360f;
|
||
|
|
public float AnimationTime =2f;
|
||
|
|
public AnimationCurve Curve = AnimationCurve.Linear(0f, 0f, 1f, 1f);
|
||
|
|
PieChart pieChart;
|
||
|
|
float StartTime = -1f;
|
||
|
|
|
||
|
|
void Start()
|
||
|
|
{
|
||
|
|
pieChart = GetComponent<PieChart>();
|
||
|
|
if(AnimateOnStart)
|
||
|
|
Animate();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnEnable()
|
||
|
|
{
|
||
|
|
pieChart = GetComponent<PieChart>();
|
||
|
|
if (AnimateOnEnable)
|
||
|
|
Animate();
|
||
|
|
}
|
||
|
|
public void Animate()
|
||
|
|
{
|
||
|
|
if (pieChart != null)
|
||
|
|
{
|
||
|
|
if(StartTime <0f)
|
||
|
|
AnimateSpan = pieChart.AngleSpan;
|
||
|
|
pieChart.AngleSpan = Curve.Evaluate(0f);
|
||
|
|
StartTime = Time.time;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void Update()
|
||
|
|
{
|
||
|
|
if(StartTime >= 0f && pieChart != null)
|
||
|
|
{
|
||
|
|
float curveTime = 0f;
|
||
|
|
if (Curve.length > 0)
|
||
|
|
curveTime = Curve.keys[Curve.length - 1].time;
|
||
|
|
float elasped = Time.time - StartTime;
|
||
|
|
elasped /= AnimationTime;
|
||
|
|
float blend = elasped;
|
||
|
|
elasped *= curveTime;
|
||
|
|
elasped = Curve.Evaluate(elasped);
|
||
|
|
if (blend >= 1f)
|
||
|
|
{
|
||
|
|
pieChart.AngleSpan = AnimateSpan;
|
||
|
|
StartTime = -1f;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
pieChart.AngleSpan = Mathf.Lerp(0f, AnimateSpan, elasped);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|