mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-18 22:40:10 +00:00
增加数据更新动画
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
|
||||
# 更新日志
|
||||
|
||||
* (2019.12.03) 增加数据更新动画
|
||||
* (2019.11.30) 增加`GaugeChart`仪表盘
|
||||
* (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题
|
||||
* (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题
|
||||
|
||||
52
Assets/XCharts/Demo/Runtime/Demo01_UpdateData.cs
Normal file
52
Assets/XCharts/Demo/Runtime/Demo01_UpdateData.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/XCharts/Demo/Runtime/Demo01_UpdateData.cs.meta
Normal file
11
Assets/XCharts/Demo/Runtime/Demo01_UpdateData.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6faaaf3d4a8444b4b2736825e237fcf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -15,23 +15,33 @@ namespace XCharts
|
||||
public class Demo_Test : MonoBehaviour
|
||||
{
|
||||
private float updateTime = 0;
|
||||
CoordinateChart chart;
|
||||
BaseChart chart;
|
||||
void Awake()
|
||||
{
|
||||
chart = gameObject.GetComponent<CoordinateChart>();
|
||||
if (chart == null)
|
||||
{
|
||||
chart = gameObject.AddComponent<CoordinateChart>();
|
||||
}
|
||||
chart = gameObject.GetComponent<BaseChart>();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
updateTime += Time.deltaTime;
|
||||
if (updateTime > 2)
|
||||
if (chart && updateTime > 2)
|
||||
{
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,6 +277,32 @@ namespace XCharts
|
||||
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>
|
||||
/// Update serie data name.
|
||||
/// 更新指定系列中的指定索引数据名称。
|
||||
@@ -419,7 +445,7 @@ namespace XCharts
|
||||
OnThemeChanged();
|
||||
RefreshChart();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update chart theme info.
|
||||
/// 切换图表主题。
|
||||
|
||||
@@ -668,7 +668,7 @@ namespace XCharts
|
||||
foreach (var sdata in data)
|
||||
{
|
||||
if (sdata.show)
|
||||
total += sdata.data[1];
|
||||
total += sdata.GetCurrData(1, animation.GetUpdateAnimationDuration());
|
||||
}
|
||||
return total;
|
||||
}
|
||||
@@ -724,9 +724,15 @@ namespace XCharts
|
||||
}
|
||||
}
|
||||
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;
|
||||
m_Data.Add(serieData);
|
||||
m_ShowDataDimension = 1;
|
||||
return serieData;
|
||||
}
|
||||
|
||||
@@ -747,9 +753,15 @@ namespace XCharts
|
||||
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;
|
||||
m_Data.Add(serieData);
|
||||
m_ShowDataDimension = 2;
|
||||
return serieData;
|
||||
}
|
||||
|
||||
@@ -781,12 +793,14 @@ namespace XCharts
|
||||
m_Data.RemoveAt(0);
|
||||
}
|
||||
}
|
||||
m_ShowDataDimension = valueList.Count;
|
||||
var serieData = new SerieData();
|
||||
serieData.name = dataName;
|
||||
serieData.index = m_Data.Count;
|
||||
for (int i = 0; i < valueList.Count; i++)
|
||||
{
|
||||
serieData.data.Add(valueList[i]);
|
||||
serieData.lastData.Add(valueList[i]);
|
||||
}
|
||||
m_Data.Add(serieData);
|
||||
return serieData;
|
||||
|
||||
@@ -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>
|
||||
/// 更新指定系列的维度X和维度Y数据
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace XCharts
|
||||
#if UNITY_EDITOR
|
||||
if (!Application.isPlaying) return true;
|
||||
#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()
|
||||
|
||||
@@ -153,9 +153,10 @@ namespace XCharts
|
||||
public float runtimePieOffsetRadius { get; internal set; }
|
||||
public Vector3 runtiemPieOffsetCenter { get; internal set; }
|
||||
|
||||
private bool m_DataChanged;
|
||||
private float m_LastData;
|
||||
private float m_DataUpdateTime;
|
||||
private List<float> m_LastData = new List<float>();
|
||||
private List<float> m_DataUpdateTime = new List<float>();
|
||||
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)
|
||||
{
|
||||
@@ -166,20 +167,30 @@ namespace XCharts
|
||||
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)
|
||||
{
|
||||
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;
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_DataChanged = false;
|
||||
m_DataUpdateFlag[index] = false;
|
||||
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)
|
||||
{
|
||||
if (dimension >= 0 && dimension < data.Count)
|
||||
{
|
||||
if (dimension == 1)
|
||||
{
|
||||
m_LastData = data[dimension];
|
||||
m_DataUpdateTime = Time.time;
|
||||
m_DataChanged = true;
|
||||
}
|
||||
CheckLastData();
|
||||
m_LastData[dimension] = data[dimension];
|
||||
m_DataUpdateTime[dimension] = Time.time;
|
||||
m_DataUpdateFlag[dimension] = true;
|
||||
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()
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -43,6 +43,10 @@ namespace XCharts
|
||||
}
|
||||
}
|
||||
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++)
|
||||
{
|
||||
if (i >= seriesHig.Count)
|
||||
@@ -51,7 +55,8 @@ namespace XCharts
|
||||
}
|
||||
var serieData = showData[i];
|
||||
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 pY = coordinateY + +i * categoryWidth;
|
||||
if (!yAxis.boundaryGap) pY -= categoryWidth / 2;
|
||||
@@ -66,9 +71,9 @@ namespace XCharts
|
||||
}
|
||||
else
|
||||
{
|
||||
valueTotal = xAxis.runtimeMaxValue - xAxis.runtimeMinValue;
|
||||
valueTotal = xMaxValue - xMinValue;
|
||||
if (valueTotal != 0)
|
||||
barHig = (xAxis.runtimeMinValue > 0 ? value - xAxis.runtimeMinValue : value)
|
||||
barHig = (xMinValue > 0 ? value - xMinValue : value)
|
||||
/ valueTotal * coordinateWidth;
|
||||
seriesHig[i] += barHig;
|
||||
}
|
||||
@@ -103,6 +108,10 @@ namespace XCharts
|
||||
{
|
||||
m_BarLastOffset += barGapWidth;
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
}
|
||||
|
||||
private float CheckAnimation(Serie serie, int dataIndex, float barHig)
|
||||
@@ -156,8 +165,10 @@ namespace XCharts
|
||||
}
|
||||
|
||||
var isPercentStack = m_Series.IsPercentStack(serie.stack, SerieType.Bar);
|
||||
float updateDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
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++)
|
||||
{
|
||||
if (i >= seriesHig.Count)
|
||||
@@ -181,9 +192,9 @@ namespace XCharts
|
||||
}
|
||||
else
|
||||
{
|
||||
valueTotal = yAxis.runtimeMaxValue - yAxis.runtimeMinValue;
|
||||
valueTotal = yMaxValue - yMinValue;
|
||||
if (valueTotal != 0)
|
||||
barHig = (yAxis.runtimeMinValue > 0 ? value - yAxis.runtimeMinValue : value)
|
||||
barHig = (yMinValue > 0 ? value - yMinValue : value)
|
||||
/ valueTotal * coordinateHeight;
|
||||
seriesHig[i] += barHig;
|
||||
}
|
||||
|
||||
@@ -135,6 +135,8 @@ namespace XCharts
|
||||
serie.dataPoints.Clear();
|
||||
serie.animation.InitProgress(1, 0, xCount);
|
||||
var animationIndex = serie.animation.GetCurrIndex();
|
||||
var updateDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
var dataChanging = false;
|
||||
for (int i = 0; i < xCount; i++)
|
||||
{
|
||||
for (int j = 0; j < yCount; j++)
|
||||
@@ -144,7 +146,8 @@ namespace XCharts
|
||||
var serieData = dataList[dataIndex];
|
||||
var dimension = m_VisualMap.enable && m_VisualMap.dimension > 0 ? m_VisualMap.dimension - 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);
|
||||
serie.dataPoints.Add(pos);
|
||||
serieData.canShowLabel = false;
|
||||
@@ -159,7 +162,7 @@ namespace XCharts
|
||||
if (!m_VisualMap.IsInSelectedValue(value)) continue;
|
||||
color = m_VisualMap.GetColor(value);
|
||||
}
|
||||
if(animationIndex>= 0 && i> animationIndex) continue;
|
||||
if (animationIndex >= 0 && i > animationIndex) continue;
|
||||
serieData.canShowLabel = true;
|
||||
var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.runtimeXValues[0] && j == (int)m_Tooltip.runtimeYValues[0])
|
||||
|| m_VisualMap.runtimeSelectedIndex > 0;
|
||||
@@ -186,6 +189,10 @@ namespace XCharts
|
||||
m_IsPlayingStartAnimation = true;
|
||||
RefreshChart();
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
}
|
||||
|
||||
protected void DrawVisualMap(VertexHelper vh)
|
||||
|
||||
@@ -368,28 +368,37 @@ namespace XCharts
|
||||
var sampleDist = serie.sampleDist;
|
||||
if (sampleDist > 0) rate = (int)((maxCount - serie.minShow) / (coordinateWidth / sampleDist));
|
||||
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)
|
||||
{
|
||||
if (i >= seriesHig.Count)
|
||||
{
|
||||
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 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);
|
||||
serie.dataPoints.Add(np);
|
||||
seriesHig[i] += dataHig;
|
||||
if (showData[i].IsDataChanged()) dataChanging = true;
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
if (maxCount % rate != 0)
|
||||
{
|
||||
i = maxCount - 1;
|
||||
seriesHig.Add(0);
|
||||
float value = showData[i].data[1];
|
||||
float value = showData[i].GetCurrData(1, updateDuration);
|
||||
float pY = startY + i * scaleWid;
|
||||
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);
|
||||
serie.dataPoints.Add(np);
|
||||
seriesHig[i] += dataHig;
|
||||
|
||||
@@ -23,11 +23,14 @@ namespace XCharts
|
||||
: serie.dataCount;
|
||||
serie.animation.InitProgress(1, 0, 1);
|
||||
var rate = serie.animation.GetCurrRate();
|
||||
var updateDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
var dataChanging = false;
|
||||
for (int n = serie.minShow; n < maxCount; n++)
|
||||
{
|
||||
var serieData = serie.GetDataList(m_DataZoom)[n];
|
||||
float xValue = serieData.data[0];
|
||||
float yValue = serieData.data[1];
|
||||
float xValue = serieData.GetCurrData(0, updateDuration);
|
||||
float yValue = serieData.GetCurrData(1, updateDuration);
|
||||
if (serieData.IsDataChanged()) dataChanging = true;
|
||||
float pX = coordinateX + xAxis.axisLine.width;
|
||||
float pY = coordinateY + yAxis.axisLine.width;
|
||||
float xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
|
||||
@@ -69,6 +72,10 @@ namespace XCharts
|
||||
m_IsPlayingStartAnimation = true;
|
||||
RefreshChart();
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,12 +76,15 @@ namespace XCharts
|
||||
if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++;
|
||||
sd.canShowLabel = false;
|
||||
}
|
||||
bool dataChanging = false;
|
||||
float updateDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
for (int n = 0; n < data.Count; n++)
|
||||
{
|
||||
if (!serie.animation.NeedAnimation(n)) break;
|
||||
var serieData = data[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);
|
||||
Color color = m_ThemeInfo.GetColor(serieNameCount);
|
||||
serieData.runtimePieStartAngle = startDegree;
|
||||
@@ -168,6 +171,10 @@ namespace XCharts
|
||||
serie.animation.CheckSymbol(Time.deltaTime * symbolSpeed, serie.symbol.size);
|
||||
RefreshChart();
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
}
|
||||
DrawLabelLine(vh);
|
||||
DrawLabelBackground(vh);
|
||||
|
||||
@@ -218,6 +218,8 @@ namespace XCharts
|
||||
continue;
|
||||
}
|
||||
var rate = serie.animation.GetCurrRate();
|
||||
var dataChanging = false;
|
||||
var updateDuration = serie.animation.GetUpdateAnimationDuration();
|
||||
for (int j = 0; j < serie.data.Count; j++)
|
||||
{
|
||||
var serieData = serie.data[j];
|
||||
@@ -262,7 +264,8 @@ namespace XCharts
|
||||
if (n >= serieData.data.Count) break;
|
||||
float min = radar.GetIndicatorMin(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)
|
||||
{
|
||||
serie.GetMinMaxData(n, out min, out max);
|
||||
@@ -320,6 +323,10 @@ namespace XCharts
|
||||
serie.animation.CheckProgress(Time.deltaTime * speed);
|
||||
RefreshChart();
|
||||
}
|
||||
if (dataChanging)
|
||||
{
|
||||
RefreshChart();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user