增加数据更新动画

This commit is contained in:
monitor1394
2019-12-03 07:49:37 +08:00
parent ab057cb623
commit 74b304a72d
15 changed files with 263 additions and 50 deletions

View File

@@ -1,6 +1,7 @@
# 更新日志 # 更新日志
* (2019.12.03) 增加数据更新动画
* (2019.11.30) 增加`GaugeChart`仪表盘 * (2019.11.30) 增加`GaugeChart`仪表盘
* (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题 * (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题
* (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题 * (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题

View File

@@ -0,0 +1,52 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo01_UpdateData : MonoBehaviour
{
private float updateTime = 0;
BaseChart chart;
void Awake()
{
chart = gameObject.GetComponent<BaseChart>();
}
void Update()
{
updateTime += Time.deltaTime;
if (chart && updateTime > 2)
{
updateTime = 0;
var serie = chart.series.GetSerie(0);
//serie.animation.updateAnimation = true;
var dataCount = serie.dataCount;
if (chart is RadarChart)
{
var dimension = serie.GetSerieData(0).data.Count - 1;
chart.UpdateData(0, 0, Random.Range(0, dimension + 1), Random.Range(0, 100));
}
else if (chart is HeatmapChart)
{
var dimension = serie.GetSerieData(0).data.Count - 1;
for (int i = 0; i < dataCount; i++)
{
chart.UpdateData(0, i, dimension, Random.Range(0, 10));
}
}
else
{
chart.UpdateData(0, Random.Range(0, dataCount), Random.Range(10, 90));
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e6faaaf3d4a8444b4b2736825e237fcf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -15,23 +15,33 @@ namespace XCharts
public class Demo_Test : MonoBehaviour public class Demo_Test : MonoBehaviour
{ {
private float updateTime = 0; private float updateTime = 0;
CoordinateChart chart; BaseChart chart;
void Awake() void Awake()
{ {
chart = gameObject.GetComponent<CoordinateChart>(); chart = gameObject.GetComponent<BaseChart>();
if (chart == null)
{
chart = gameObject.AddComponent<CoordinateChart>();
}
} }
void Update() void Update()
{ {
updateTime += Time.deltaTime; updateTime += Time.deltaTime;
if (updateTime > 2) if (chart && updateTime > 2)
{ {
updateTime = 0; updateTime = 0;
chart.UpdateData(0, Random.Range(0, 5), Random.Range(10, 90)); var serie = chart.series.GetSerie(0);
serie.animation.updateAnimation = true;
var dataCount = serie.dataCount;
if (chart is HeatmapChart)
{
var dimension = serie.GetSerieData(0).data.Count - 1;
for (int i = 0; i < dataCount; i++)
{
chart.UpdateData(0, i, dimension, Random.Range(0, 10));
}
}
else
{
chart.UpdateData(0, Random.Range(0, dataCount), Random.Range(10, 90));
}
} }
} }
} }

View File

@@ -277,6 +277,32 @@ namespace XCharts
RefreshChart(); RefreshChart();
} }
/// <summary>
/// 更新指定系列指定索引指定维数的数据。维数从0开始。
/// </summary>
/// <param name="serieName"></param>
/// <param name="dataIndex"></param>
/// <param name="dimension">指定维数从0开始</param>
/// <param name="value"></param>
public virtual void UpdateData(string serieName, int dataIndex, int dimension, float value)
{
m_Series.UpdateData(serieName, dataIndex, dimension, value);
RefreshChart();
}
/// <summary>
/// 更新指定系列指定索引指定维数的数据。维数从0开始。
/// </summary>
/// <param name="serieIndex"></param>
/// <param name="dataIndex"></param>
/// <param name="dimension">指定维数从0开始</param>
/// <param name="value"></param>
public virtual void UpdateData(int serieIndex, int dataIndex, int dimension, float value)
{
m_Series.UpdateData(serieIndex, dataIndex, dimension, value);
RefreshChart();
}
/// <summary> /// <summary>
/// Update serie data name. /// Update serie data name.
/// 更新指定系列中的指定索引数据名称。 /// 更新指定系列中的指定索引数据名称。
@@ -419,7 +445,7 @@ namespace XCharts
OnThemeChanged(); OnThemeChanged();
RefreshChart(); RefreshChart();
} }
/// <summary> /// <summary>
/// Update chart theme info. /// Update chart theme info.
/// 切换图表主题。 /// 切换图表主题。

View File

@@ -668,7 +668,7 @@ namespace XCharts
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show) if (sdata.show)
total += sdata.data[1]; total += sdata.GetCurrData(1, animation.GetUpdateAnimationDuration());
} }
return total; return total;
} }
@@ -724,9 +724,15 @@ namespace XCharts
} }
} }
int xValue = m_Data.Count; int xValue = m_Data.Count;
var serieData = new SerieData() { data = new List<float>() { xValue, value }, name = dataName }; var serieData = new SerieData()
{
data = new List<float>() { xValue, value },
lastData = new List<float>() { xValue, value },
name = dataName
};
serieData.index = xValue; serieData.index = xValue;
m_Data.Add(serieData); m_Data.Add(serieData);
m_ShowDataDimension = 1;
return serieData; return serieData;
} }
@@ -747,9 +753,15 @@ namespace XCharts
m_Data.RemoveAt(0); m_Data.RemoveAt(0);
} }
} }
var serieData = new SerieData() { data = new List<float>() { xValue, yValue }, name = dataName }; var serieData = new SerieData()
{
data = new List<float>() { xValue, yValue },
lastData = new List<float>() { xValue, yValue },
name = dataName
};
serieData.index = m_Data.Count; serieData.index = m_Data.Count;
m_Data.Add(serieData); m_Data.Add(serieData);
m_ShowDataDimension = 2;
return serieData; return serieData;
} }
@@ -781,12 +793,14 @@ namespace XCharts
m_Data.RemoveAt(0); m_Data.RemoveAt(0);
} }
} }
m_ShowDataDimension = valueList.Count;
var serieData = new SerieData(); var serieData = new SerieData();
serieData.name = dataName; serieData.name = dataName;
serieData.index = m_Data.Count; serieData.index = m_Data.Count;
for (int i = 0; i < valueList.Count; i++) for (int i = 0; i < valueList.Count; i++)
{ {
serieData.data.Add(valueList[i]); serieData.data.Add(valueList[i]);
serieData.lastData.Add(valueList[i]);
} }
m_Data.Add(serieData); m_Data.Add(serieData);
return serieData; return serieData;

View File

@@ -448,6 +448,38 @@ namespace XCharts
} }
} }
/// <summary>
/// 更新指定系列指定数据项指定维度的数据值
/// </summary>
/// <param name="serieIndex">系列</param>
/// <param name="dataIndex">数据项</param>
/// <param name="dimension">数据维数从0开始</param>
/// <param name="value">值</param>
public void UpdateData(int serieIndex, int dataIndex, int dimension, float value)
{
var serie = GetSerie(serieIndex);
if (serie != null)
{
serie.UpdateData(dataIndex, dimension, value);
}
}
/// <summary>
/// 更新指定系列指定数据项指定维度的数据值
/// </summary>
/// <param name="serieName"></param>
/// <param name="dataIndex"></param>
/// <param name="dimension">数据维数从0开始</param>
/// <param name="value"></param>
public void UpdateData(string serieName, int dataIndex, int dimension, float value)
{
var serie = GetSerie(serieName);
if (serie != null)
{
serie.UpdateData(dataIndex, dimension, value);
}
}
/// <summary> /// <summary>
/// 更新指定系列的维度X和维度Y数据 /// 更新指定系列的维度X和维度Y数据

View File

@@ -158,7 +158,7 @@ namespace XCharts
#if UNITY_EDITOR #if UNITY_EDITOR
if (!Application.isPlaying) return true; if (!Application.isPlaying) return true;
#endif #endif
return !enable || (m_CurrDataProgress > m_DestDataProgress && m_CurrDetailProgress > m_DestDetailProgress); return !enable || m_IsEnd || (m_CurrDataProgress > m_DestDataProgress && m_CurrDetailProgress > m_DestDetailProgress);
} }
public bool IsInDelay() public bool IsInDelay()

View File

@@ -153,9 +153,10 @@ namespace XCharts
public float runtimePieOffsetRadius { get; internal set; } public float runtimePieOffsetRadius { get; internal set; }
public Vector3 runtiemPieOffsetCenter { get; internal set; } public Vector3 runtiemPieOffsetCenter { get; internal set; }
private bool m_DataChanged; private List<float> m_LastData = new List<float>();
private float m_LastData; private List<float> m_DataUpdateTime = new List<float>();
private float m_DataUpdateTime; private List<bool> m_DataUpdateFlag = new List<bool>();
public List<float> lastData { get { return m_LastData; } internal set { m_LastData = value; } }
public float GetData(int index) public float GetData(int index)
{ {
@@ -166,20 +167,30 @@ namespace XCharts
else return 0; else return 0;
} }
public float GetLastData(int index)
{
if (index >= 0 && index < lastData.Count)
{
return m_LastData[index];
}
else return 0;
}
public float GetCurrData(int index, float animationDuration = 500f) public float GetCurrData(int index, float animationDuration = 500f)
{ {
if (index == 1 && m_DataChanged) if (index < m_DataUpdateFlag.Count && m_DataUpdateFlag[index] && animationDuration > 0)
{ {
var time = Time.time - m_DataUpdateTime; var time = Time.time - m_DataUpdateTime[index];
var total = animationDuration / 1000; var total = animationDuration / 1000;
if (animationDuration > 0 && time <= total) if (time <= total)
{ {
var curr = Mathf.Lerp(m_LastData, GetData(index), time / total); CheckLastData();
var curr = Mathf.Lerp(GetLastData(index), GetData(index), time / total);
return curr; return curr;
} }
else else
{ {
m_DataChanged = false; m_DataUpdateFlag[index] = false;
return GetData(index); return GetData(index);
} }
} }
@@ -189,29 +200,37 @@ namespace XCharts
} }
} }
public float GetLastData(int index)
{
if (index == 1 && m_DataChanged) return m_LastData;
else return GetData(index);
}
public void UpdateData(int dimension, float value) public void UpdateData(int dimension, float value)
{ {
if (dimension >= 0 && dimension < data.Count) if (dimension >= 0 && dimension < data.Count)
{ {
if (dimension == 1) CheckLastData();
{ m_LastData[dimension] = data[dimension];
m_LastData = data[dimension]; m_DataUpdateTime[dimension] = Time.time;
m_DataUpdateTime = Time.time; m_DataUpdateFlag[dimension] = true;
m_DataChanged = true;
}
data[dimension] = value; data[dimension] = value;
} }
} }
private void CheckLastData()
{
if (m_LastData.Count != m_Data.Count)
{
m_LastData.Clear();
for (int i = 0; i < m_Data.Count; i++)
{
m_LastData.Add(m_Data[i]);
m_DataUpdateTime.Add(Time.time);
m_DataUpdateFlag.Add(false);
}
}
}
public bool IsDataChanged() public bool IsDataChanged()
{ {
return m_DataChanged; foreach (var b in m_DataUpdateFlag)
if (b) return true;
return false;
} }
public void InitLabel(GameObject labelObj, bool autoSize, float paddingLeftRight, float paddingTopBottom) public void InitLabel(GameObject labelObj, bool autoSize, float paddingLeftRight, float paddingTopBottom)

View File

@@ -43,6 +43,10 @@ namespace XCharts
} }
} }
var isPercentStack = m_Series.IsPercentStack(serie.stack, SerieType.Bar); var isPercentStack = m_Series.IsPercentStack(serie.stack, SerieType.Bar);
bool dataChanging = false;
float updateDuration = serie.animation.GetUpdateAnimationDuration();
float xMinValue = xAxis.GetCurrMinValue(updateDuration);
float xMaxValue = xAxis.GetCurrMaxValue(updateDuration);
for (int i = serie.minShow; i < maxCount; i++) for (int i = serie.minShow; i < maxCount; i++)
{ {
if (i >= seriesHig.Count) if (i >= seriesHig.Count)
@@ -51,7 +55,8 @@ namespace XCharts
} }
var serieData = showData[i]; var serieData = showData[i];
serieData.canShowLabel = true; serieData.canShowLabel = true;
float value = showData[i].data[1]; float value = showData[i].GetCurrData(1, updateDuration);
if (showData[i].IsDataChanged()) dataChanging = true;
float pX = seriesHig[i] + coordinateX + xAxis.runtimeZeroXOffset + yAxis.axisLine.width; float pX = seriesHig[i] + coordinateX + xAxis.runtimeZeroXOffset + yAxis.axisLine.width;
float pY = coordinateY + +i * categoryWidth; float pY = coordinateY + +i * categoryWidth;
if (!yAxis.boundaryGap) pY -= categoryWidth / 2; if (!yAxis.boundaryGap) pY -= categoryWidth / 2;
@@ -66,9 +71,9 @@ namespace XCharts
} }
else else
{ {
valueTotal = xAxis.runtimeMaxValue - xAxis.runtimeMinValue; valueTotal = xMaxValue - xMinValue;
if (valueTotal != 0) if (valueTotal != 0)
barHig = (xAxis.runtimeMinValue > 0 ? value - xAxis.runtimeMinValue : value) barHig = (xMinValue > 0 ? value - xMinValue : value)
/ valueTotal * coordinateWidth; / valueTotal * coordinateWidth;
seriesHig[i] += barHig; seriesHig[i] += barHig;
} }
@@ -103,6 +108,10 @@ namespace XCharts
{ {
m_BarLastOffset += barGapWidth; m_BarLastOffset += barGapWidth;
} }
if (dataChanging)
{
RefreshChart();
}
} }
private float CheckAnimation(Serie serie, int dataIndex, float barHig) private float CheckAnimation(Serie serie, int dataIndex, float barHig)
@@ -156,8 +165,10 @@ namespace XCharts
} }
var isPercentStack = m_Series.IsPercentStack(serie.stack, SerieType.Bar); var isPercentStack = m_Series.IsPercentStack(serie.stack, SerieType.Bar);
float updateDuration = serie.animation.GetUpdateAnimationDuration();
bool dataChanging = false; bool dataChanging = false;
float updateDuration = serie.animation.GetUpdateAnimationDuration();
float yMinValue = yAxis.GetCurrMinValue(updateDuration);
float yMaxValue = yAxis.GetCurrMaxValue(updateDuration);
for (int i = serie.minShow; i < maxCount; i++) for (int i = serie.minShow; i < maxCount; i++)
{ {
if (i >= seriesHig.Count) if (i >= seriesHig.Count)
@@ -181,9 +192,9 @@ namespace XCharts
} }
else else
{ {
valueTotal = yAxis.runtimeMaxValue - yAxis.runtimeMinValue; valueTotal = yMaxValue - yMinValue;
if (valueTotal != 0) if (valueTotal != 0)
barHig = (yAxis.runtimeMinValue > 0 ? value - yAxis.runtimeMinValue : value) barHig = (yMinValue > 0 ? value - yMinValue : value)
/ valueTotal * coordinateHeight; / valueTotal * coordinateHeight;
seriesHig[i] += barHig; seriesHig[i] += barHig;
} }

View File

@@ -135,6 +135,8 @@ namespace XCharts
serie.dataPoints.Clear(); serie.dataPoints.Clear();
serie.animation.InitProgress(1, 0, xCount); serie.animation.InitProgress(1, 0, xCount);
var animationIndex = serie.animation.GetCurrIndex(); var animationIndex = serie.animation.GetCurrIndex();
var updateDuration = serie.animation.GetUpdateAnimationDuration();
var dataChanging = false;
for (int i = 0; i < xCount; i++) for (int i = 0; i < xCount; i++)
{ {
for (int j = 0; j < yCount; j++) for (int j = 0; j < yCount; j++)
@@ -144,7 +146,8 @@ namespace XCharts
var serieData = dataList[dataIndex]; var serieData = dataList[dataIndex];
var dimension = m_VisualMap.enable && m_VisualMap.dimension > 0 ? m_VisualMap.dimension - 1 : var dimension = m_VisualMap.enable && m_VisualMap.dimension > 0 ? m_VisualMap.dimension - 1 :
serieData.data.Count - 1; serieData.data.Count - 1;
var value = serieData.data[dimension]; var value = serieData.GetCurrData(dimension, updateDuration);
if (serieData.IsDataChanged()) dataChanging = true;
var pos = new Vector3(zeroX + (i + 0.5f) * xWidth, zeroY + (j + 0.5f) * yWidth); var pos = new Vector3(zeroX + (i + 0.5f) * xWidth, zeroY + (j + 0.5f) * yWidth);
serie.dataPoints.Add(pos); serie.dataPoints.Add(pos);
serieData.canShowLabel = false; serieData.canShowLabel = false;
@@ -159,7 +162,7 @@ namespace XCharts
if (!m_VisualMap.IsInSelectedValue(value)) continue; if (!m_VisualMap.IsInSelectedValue(value)) continue;
color = m_VisualMap.GetColor(value); color = m_VisualMap.GetColor(value);
} }
if(animationIndex>= 0 && i> animationIndex) continue; if (animationIndex >= 0 && i > animationIndex) continue;
serieData.canShowLabel = true; serieData.canShowLabel = true;
var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.runtimeXValues[0] && j == (int)m_Tooltip.runtimeYValues[0]) var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.runtimeXValues[0] && j == (int)m_Tooltip.runtimeYValues[0])
|| m_VisualMap.runtimeSelectedIndex > 0; || m_VisualMap.runtimeSelectedIndex > 0;
@@ -186,6 +189,10 @@ namespace XCharts
m_IsPlayingStartAnimation = true; m_IsPlayingStartAnimation = true;
RefreshChart(); RefreshChart();
} }
if (dataChanging)
{
RefreshChart();
}
} }
protected void DrawVisualMap(VertexHelper vh) protected void DrawVisualMap(VertexHelper vh)

View File

@@ -368,28 +368,37 @@ namespace XCharts
var sampleDist = serie.sampleDist; var sampleDist = serie.sampleDist;
if (sampleDist > 0) rate = (int)((maxCount - serie.minShow) / (coordinateWidth / sampleDist)); if (sampleDist > 0) rate = (int)((maxCount - serie.minShow) / (coordinateWidth / sampleDist));
if (rate < 1) rate = 1; if (rate < 1) rate = 1;
var dataChanging = false;
float updateDuration = serie.animation.GetUpdateAnimationDuration();
float xMinValue = xAxis.GetCurrMinValue(updateDuration);
float xMaxValue = xAxis.GetCurrMaxValue(updateDuration);
for (i = serie.minShow; i < maxCount; i += rate) for (i = serie.minShow; i < maxCount; i += rate)
{ {
if (i >= seriesHig.Count) if (i >= seriesHig.Count)
{ {
for (int j = 0; j < rate; j++) seriesHig.Add(0); for (int j = 0; j < rate; j++) seriesHig.Add(0);
} }
float value = showData[i].data[1]; float value = showData[i].GetCurrData(1, updateDuration);
float pY = startY + i * scaleWid; float pY = startY + i * scaleWid;
float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width; float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width;
float dataHig = (value - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth; float dataHig = (value - xMinValue) / (xMaxValue - xMinValue) * coordinateWidth;
np = new Vector3(pX + dataHig, pY); np = new Vector3(pX + dataHig, pY);
serie.dataPoints.Add(np); serie.dataPoints.Add(np);
seriesHig[i] += dataHig; seriesHig[i] += dataHig;
if (showData[i].IsDataChanged()) dataChanging = true;
}
if (dataChanging)
{
RefreshChart();
} }
if (maxCount % rate != 0) if (maxCount % rate != 0)
{ {
i = maxCount - 1; i = maxCount - 1;
seriesHig.Add(0); seriesHig.Add(0);
float value = showData[i].data[1]; float value = showData[i].GetCurrData(1, updateDuration);
float pY = startY + i * scaleWid; float pY = startY + i * scaleWid;
float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width; float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width;
float dataHig = (value - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth; float dataHig = (value - xMinValue) / (xMaxValue - xMinValue) * coordinateWidth;
np = new Vector3(pX + dataHig, pY); np = new Vector3(pX + dataHig, pY);
serie.dataPoints.Add(np); serie.dataPoints.Add(np);
seriesHig[i] += dataHig; seriesHig[i] += dataHig;

View File

@@ -23,11 +23,14 @@ namespace XCharts
: serie.dataCount; : serie.dataCount;
serie.animation.InitProgress(1, 0, 1); serie.animation.InitProgress(1, 0, 1);
var rate = serie.animation.GetCurrRate(); var rate = serie.animation.GetCurrRate();
var updateDuration = serie.animation.GetUpdateAnimationDuration();
var dataChanging = false;
for (int n = serie.minShow; n < maxCount; n++) for (int n = serie.minShow; n < maxCount; n++)
{ {
var serieData = serie.GetDataList(m_DataZoom)[n]; var serieData = serie.GetDataList(m_DataZoom)[n];
float xValue = serieData.data[0]; float xValue = serieData.GetCurrData(0, updateDuration);
float yValue = serieData.data[1]; float yValue = serieData.GetCurrData(1, updateDuration);
if (serieData.IsDataChanged()) dataChanging = true;
float pX = coordinateX + xAxis.axisLine.width; float pX = coordinateX + xAxis.axisLine.width;
float pY = coordinateY + yAxis.axisLine.width; float pY = coordinateY + yAxis.axisLine.width;
float xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth; float xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
@@ -69,6 +72,10 @@ namespace XCharts
m_IsPlayingStartAnimation = true; m_IsPlayingStartAnimation = true;
RefreshChart(); RefreshChart();
} }
if (dataChanging)
{
RefreshChart();
}
} }
} }
} }

View File

@@ -76,12 +76,15 @@ namespace XCharts
if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++; if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++;
sd.canShowLabel = false; sd.canShowLabel = false;
} }
bool dataChanging = false;
float updateDuration = serie.animation.GetUpdateAnimationDuration();
for (int n = 0; n < data.Count; n++) for (int n = 0; n < data.Count; n++)
{ {
if (!serie.animation.NeedAnimation(n)) break; if (!serie.animation.NeedAnimation(n)) break;
var serieData = data[n]; var serieData = data[n];
serieData.index = n; serieData.index = n;
float value = serieData.data[1]; float value = serieData.GetCurrData(1, updateDuration);
if (serieData.IsDataChanged()) dataChanging = true;
serieNameCount = m_LegendRealShowName.IndexOf(serieData.legendName); serieNameCount = m_LegendRealShowName.IndexOf(serieData.legendName);
Color color = m_ThemeInfo.GetColor(serieNameCount); Color color = m_ThemeInfo.GetColor(serieNameCount);
serieData.runtimePieStartAngle = startDegree; serieData.runtimePieStartAngle = startDegree;
@@ -168,6 +171,10 @@ namespace XCharts
serie.animation.CheckSymbol(Time.deltaTime * symbolSpeed, serie.symbol.size); serie.animation.CheckSymbol(Time.deltaTime * symbolSpeed, serie.symbol.size);
RefreshChart(); RefreshChart();
} }
if (dataChanging)
{
RefreshChart();
}
} }
DrawLabelLine(vh); DrawLabelLine(vh);
DrawLabelBackground(vh); DrawLabelBackground(vh);

View File

@@ -218,6 +218,8 @@ namespace XCharts
continue; continue;
} }
var rate = serie.animation.GetCurrRate(); var rate = serie.animation.GetCurrRate();
var dataChanging = false;
var updateDuration = serie.animation.GetUpdateAnimationDuration();
for (int j = 0; j < serie.data.Count; j++) for (int j = 0; j < serie.data.Count; j++)
{ {
var serieData = serie.data[j]; var serieData = serie.data[j];
@@ -262,7 +264,8 @@ namespace XCharts
if (n >= serieData.data.Count) break; if (n >= serieData.data.Count) break;
float min = radar.GetIndicatorMin(n); float min = radar.GetIndicatorMin(n);
float max = radar.GetIndicatorMax(n); float max = radar.GetIndicatorMax(n);
float value = serieData.data[n]; float value = serieData.GetCurrData(n, updateDuration);
if (serieData.IsDataChanged()) dataChanging = true;
if (max == 0) if (max == 0)
{ {
serie.GetMinMaxData(n, out min, out max); serie.GetMinMaxData(n, out min, out max);
@@ -320,6 +323,10 @@ namespace XCharts
serie.animation.CheckProgress(Time.deltaTime * speed); serie.animation.CheckProgress(Time.deltaTime * speed);
RefreshChart(); RefreshChart();
} }
if (dataChanging)
{
RefreshChart();
}
} }
} }