mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-26 10:50:08 +00:00
增加数据更新动画
This commit is contained in:
@@ -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`等参数不生效的问题
|
||||||
|
|||||||
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
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
/// 切换图表主题。
|
/// 切换图表主题。
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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数据
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user