mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 18:30:14 +00:00
性能优化
This commit is contained in:
@@ -626,8 +626,8 @@ namespace XCharts
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsInChart(Vector2 local)
|
public bool IsInChart(Vector2 local)
|
||||||
{
|
{
|
||||||
if (local.x < m_ChartX || local.x > m_ChartX + chartWidth ||
|
if (local.x < m_ChartX || local.x > m_ChartX + m_ChartWidth ||
|
||||||
local.y < m_ChartY || local.y > m_ChartY + chartHeight)
|
local.y < m_ChartY || local.y > m_ChartY + m_ChartHeight)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -747,7 +747,7 @@ namespace XCharts
|
|||||||
m_TooltipLabel = label;
|
m_TooltipLabel = label;
|
||||||
m_TooltipLabelRect = label.GetComponent<RectTransform>();
|
m_TooltipLabelRect = label.GetComponent<RectTransform>();
|
||||||
m_TooltipLabelText = label.GetComponentInChildren<Text>();
|
m_TooltipLabelText = label.GetComponentInChildren<Text>();
|
||||||
m_TooltipLabel.SetActive(true);
|
ChartHelper.SetActive(m_TooltipLabel, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void SetTooltipLabelColor(Color bgColor, Color textColor)
|
internal void SetTooltipLabelColor(Color bgColor, Color textColor)
|
||||||
@@ -760,7 +760,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (m_TooltipLabel && m_TooltipLabel.activeInHierarchy != flag)
|
if (m_TooltipLabel && m_TooltipLabel.activeInHierarchy != flag)
|
||||||
{
|
{
|
||||||
m_TooltipLabel.SetActive(flag);
|
ChartHelper.SetActive(m_TooltipLabel, flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1016,6 +1016,10 @@ namespace XCharts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void ClearData()
|
public void ClearData()
|
||||||
{
|
{
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
{
|
||||||
|
SerieDataPool.Release(serieData);
|
||||||
|
}
|
||||||
m_Data.Clear();
|
m_Data.Clear();
|
||||||
SetVerticesDirty();
|
SetVerticesDirty();
|
||||||
}
|
}
|
||||||
@@ -1049,15 +1053,15 @@ namespace XCharts
|
|||||||
while (m_Data.Count > m_MaxCache)
|
while (m_Data.Count > m_MaxCache)
|
||||||
{
|
{
|
||||||
m_NeedUpdateFilterData = true;
|
m_NeedUpdateFilterData = true;
|
||||||
|
SerieDataPool.Release(m_Data[0]);
|
||||||
m_Data.RemoveAt(0);
|
m_Data.RemoveAt(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int xValue = m_Data.Count;
|
int xValue = m_Data.Count;
|
||||||
var serieData = new SerieData()
|
var serieData = SerieDataPool.Get();
|
||||||
{
|
serieData.data.Add(xValue);
|
||||||
data = new List<float>() { xValue, value },
|
serieData.data.Add(value);
|
||||||
name = dataName
|
serieData.name = dataName;
|
||||||
};
|
|
||||||
serieData.index = xValue;
|
serieData.index = xValue;
|
||||||
m_Data.Add(serieData);
|
m_Data.Add(serieData);
|
||||||
m_ShowDataDimension = 1;
|
m_ShowDataDimension = 1;
|
||||||
@@ -1087,19 +1091,11 @@ namespace XCharts
|
|||||||
/// <param name="maxDataNumber"></param>
|
/// <param name="maxDataNumber"></param>
|
||||||
public SerieData AddXYData(float xValue, float yValue, string dataName = null)
|
public SerieData AddXYData(float xValue, float yValue, string dataName = null)
|
||||||
{
|
{
|
||||||
if (m_MaxCache > 0)
|
CheckMaxCache();
|
||||||
{
|
var serieData = SerieDataPool.Get();
|
||||||
while (m_Data.Count > m_MaxCache)
|
serieData.data.Add(xValue);
|
||||||
{
|
serieData.data.Add(yValue);
|
||||||
m_NeedUpdateFilterData = true;
|
serieData.name = dataName;
|
||||||
m_Data.RemoveAt(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var serieData = new SerieData()
|
|
||||||
{
|
|
||||||
data = 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;
|
m_ShowDataDimension = 2;
|
||||||
@@ -1128,16 +1124,9 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_MaxCache > 0)
|
CheckMaxCache();
|
||||||
{
|
|
||||||
while (m_Data.Count > m_MaxCache)
|
|
||||||
{
|
|
||||||
m_NeedUpdateFilterData = true;
|
|
||||||
m_Data.RemoveAt(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_ShowDataDimension = valueList.Count;
|
m_ShowDataDimension = valueList.Count;
|
||||||
var serieData = new SerieData();
|
var serieData = SerieDataPool.Get();
|
||||||
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++)
|
||||||
@@ -1151,6 +1140,17 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckMaxCache()
|
||||||
|
{
|
||||||
|
if (m_MaxCache <= 0) return;
|
||||||
|
while (m_Data.Count > m_MaxCache)
|
||||||
|
{
|
||||||
|
m_NeedUpdateFilterData = true;
|
||||||
|
SerieDataPool.Release(m_Data[0]);
|
||||||
|
m_Data.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获得维度Y索引对应的数据
|
/// 获得维度Y索引对应的数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1572,7 +1572,7 @@ namespace XCharts
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置指定index的数据图标的尺寸
|
/// 设置指定index的数据图标的尺寸
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ namespace XCharts
|
|||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
if (!Application.isPlaying) return true;
|
if (!Application.isPlaying) return true;
|
||||||
#endif
|
#endif
|
||||||
return !enable || m_IsEnd || (m_CurrDataProgress > m_DestDataProgress && m_CurrDetailProgress > m_DestDetailProgress);
|
return !m_Enable || m_IsEnd || (m_CurrDataProgress > m_DestDataProgress && m_CurrDetailProgress > m_DestDetailProgress);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsInDelay()
|
public bool IsInDelay()
|
||||||
|
|||||||
@@ -177,6 +177,17 @@ namespace XCharts
|
|||||||
private List<float> m_DataUpdateTime = new List<float>();
|
private List<float> m_DataUpdateTime = new List<float>();
|
||||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
m_Name = string.Empty;
|
||||||
|
m_Selected = false;
|
||||||
|
m_Radius = 0;
|
||||||
|
m_Data.Clear();
|
||||||
|
m_PreviousData.Clear();
|
||||||
|
m_DataUpdateTime.Clear();
|
||||||
|
m_DataUpdateFlag.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
public float GetData(int index, bool inverse = false)
|
public float GetData(int index, bool inverse = false)
|
||||||
{
|
{
|
||||||
if (index >= 0 && index < m_Data.Count)
|
if (index >= 0 && index < m_Data.Count)
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
public partial class CoordinateChart : BaseChart
|
public partial class CoordinateChart : BaseChart
|
||||||
{
|
{
|
||||||
private static readonly string s_DefaultAxisY = "axis_y";
|
|
||||||
private static readonly string s_DefaultAxisX = "axis_x";
|
|
||||||
private static readonly string s_DefaultDataZoom = "datazoom";
|
private static readonly string s_DefaultDataZoom = "datazoom";
|
||||||
|
private static readonly string s_DefaultAxisName = "name";
|
||||||
|
private static readonly string s_DefaultAxisLabel = "label";
|
||||||
|
|
||||||
[SerializeField] protected Grid m_Grid = Grid.defaultGrid;
|
[SerializeField] protected Grid m_Grid = Grid.defaultGrid;
|
||||||
[SerializeField] protected List<XAxis> m_XAxises = new List<XAxis>();
|
[SerializeField] protected List<XAxis> m_XAxises = new List<XAxis>();
|
||||||
@@ -513,9 +513,7 @@ namespace XCharts
|
|||||||
private void InitYAxis(int yAxisIndex, YAxis yAxis)
|
private void InitYAxis(int yAxisIndex, YAxis yAxis)
|
||||||
{
|
{
|
||||||
yAxis.axisLabelTextList.Clear();
|
yAxis.axisLabelTextList.Clear();
|
||||||
|
string objName = ChartCached.GetYAxisName(yAxisIndex);
|
||||||
string objName = yAxisIndex > 0 ? s_DefaultAxisY + "2" : s_DefaultAxisY;
|
|
||||||
|
|
||||||
var axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
|
var axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
|
||||||
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
|
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
|
||||||
axisObj.transform.localPosition = Vector3.zero;
|
axisObj.transform.localPosition = Vector3.zero;
|
||||||
@@ -567,7 +565,7 @@ namespace XCharts
|
|||||||
switch (yAxis.axisName.location)
|
switch (yAxis.axisName.location)
|
||||||
{
|
{
|
||||||
case AxisName.Location.Start:
|
case AxisName.Location.Start:
|
||||||
axisName = ChartHelper.AddTextObject(objName + "_name", axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
||||||
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
||||||
@@ -576,7 +574,7 @@ namespace XCharts
|
|||||||
new Vector2(zeroPos.x + offset.x, coordinateY - offset.y);
|
new Vector2(zeroPos.x + offset.x, coordinateY - offset.y);
|
||||||
break;
|
break;
|
||||||
case AxisName.Location.Middle:
|
case AxisName.Location.Middle:
|
||||||
axisName = ChartHelper.AddTextObject(objName + "_name", axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
|
||||||
new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
||||||
@@ -585,7 +583,7 @@ namespace XCharts
|
|||||||
new Vector2(coordinateX - offset.x, coordinateY + coordinateHeight / 2 + offset.y);
|
new Vector2(coordinateX - offset.x, coordinateY + coordinateHeight / 2 + offset.y);
|
||||||
break;
|
break;
|
||||||
case AxisName.Location.End:
|
case AxisName.Location.End:
|
||||||
axisName = ChartHelper.AddTextObject(objName + "_name", axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
||||||
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
yAxis.axisName.rotate, yAxis.axisName.fontStyle);
|
||||||
@@ -601,7 +599,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
Vector2 privot = yAxisIndex > 0 ? new Vector2(0, 0.5f) : new Vector2(1, 0.5f);
|
Vector2 privot = yAxisIndex > 0 ? new Vector2(0, 0.5f) : new Vector2(1, 0.5f);
|
||||||
var labelParent = m_Tooltip.runtimeGameObject.transform;
|
var labelParent = m_Tooltip.runtimeGameObject.transform;
|
||||||
GameObject labelObj = ChartHelper.AddTooltipLabel(objName + "_label", labelParent, m_ThemeInfo.font, privot);
|
GameObject labelObj = ChartHelper.AddTooltipLabel(ChartCached.GetAxisTooltipLabel(objName), labelParent, m_ThemeInfo.font, privot);
|
||||||
yAxis.SetTooltipLabel(labelObj);
|
yAxis.SetTooltipLabel(labelObj);
|
||||||
yAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
|
yAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
|
||||||
yAxis.SetTooltipLabelActive(yAxis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
|
yAxis.SetTooltipLabelActive(yAxis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
|
||||||
@@ -620,7 +618,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
xAxis.axisLabelTextList.Clear();
|
xAxis.axisLabelTextList.Clear();
|
||||||
|
|
||||||
string objName = xAxisIndex > 0 ? ChartHelper.Cancat(s_DefaultAxisX, 2) : s_DefaultAxisX;
|
string objName = ChartCached.GetXAxisName(xAxisIndex);
|
||||||
var axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
|
var axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
|
||||||
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
|
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
|
||||||
axisObj.transform.localPosition = Vector3.zero;
|
axisObj.transform.localPosition = Vector3.zero;
|
||||||
@@ -635,7 +633,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
float labelWidth = xAxis.GetScaleWidth(coordinateWidth, i, m_DataZoom);
|
float labelWidth = xAxis.GetScaleWidth(coordinateWidth, i, m_DataZoom);
|
||||||
bool inside = xAxis.axisLabel.inside;
|
bool inside = xAxis.axisLabel.inside;
|
||||||
Text txt = ChartHelper.AddTextObject(ChartHelper.Cancat(objName, i), axisObj.transform,
|
Text txt = ChartHelper.AddTextObject(ChartCached.GetXAxisName(xAxisIndex, i), axisObj.transform,
|
||||||
m_ThemeInfo.font, labelColor, TextAnchor.MiddleCenter, new Vector2(0, 1),
|
m_ThemeInfo.font, labelColor, TextAnchor.MiddleCenter, new Vector2(0, 1),
|
||||||
new Vector2(0, 1), new Vector2(1, 0.5f), new Vector2(labelWidth, 20),
|
new Vector2(0, 1), new Vector2(1, 0.5f), new Vector2(labelWidth, 20),
|
||||||
xAxis.axisLabel.fontSize, xAxis.axisLabel.rotate, xAxis.axisLabel.fontStyle);
|
xAxis.axisLabel.fontSize, xAxis.axisLabel.rotate, xAxis.axisLabel.fontStyle);
|
||||||
@@ -661,7 +659,7 @@ namespace XCharts
|
|||||||
switch (xAxis.axisName.location)
|
switch (xAxis.axisName.location)
|
||||||
{
|
{
|
||||||
case AxisName.Location.Start:
|
case AxisName.Location.Start:
|
||||||
axisName = ChartHelper.AddTextObject(ChartHelper.Cancat(objName, "_name"), axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
|
||||||
new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
||||||
@@ -670,7 +668,7 @@ namespace XCharts
|
|||||||
new Vector2(zeroPos.x - offset.x, zeroPos.y + offset.y);
|
new Vector2(zeroPos.x - offset.x, zeroPos.y + offset.y);
|
||||||
break;
|
break;
|
||||||
case AxisName.Location.Middle:
|
case AxisName.Location.Middle:
|
||||||
axisName = ChartHelper.AddTextObject(ChartHelper.Cancat(objName, "_name"), axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
|
||||||
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
||||||
@@ -679,7 +677,7 @@ namespace XCharts
|
|||||||
new Vector2(coordinateX + coordinateWidth / 2 + offset.x, coordinateY - offset.y);
|
new Vector2(coordinateX + coordinateWidth / 2 + offset.x, coordinateY - offset.y);
|
||||||
break;
|
break;
|
||||||
case AxisName.Location.End:
|
case AxisName.Location.End:
|
||||||
axisName = ChartHelper.AddTextObject(ChartHelper.Cancat(objName, "_name"), axisObj.transform,
|
axisName = ChartHelper.AddTextObject(s_DefaultAxisName, axisObj.transform,
|
||||||
m_ThemeInfo.font, color, TextAnchor.MiddleLeft, new Vector2(0, 0.5f),
|
m_ThemeInfo.font, color, TextAnchor.MiddleLeft, new Vector2(0, 0.5f),
|
||||||
new Vector2(0, 0.5f), new Vector2(0, 0.5f), new Vector2(100, 20), fontSize,
|
new Vector2(0, 0.5f), new Vector2(0, 0.5f), new Vector2(100, 20), fontSize,
|
||||||
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
xAxis.axisName.rotate, xAxis.axisName.fontStyle);
|
||||||
@@ -694,7 +692,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
Vector2 privot = xAxisIndex > 0 ? new Vector2(0.5f, 1) : new Vector2(0.5f, 1);
|
Vector2 privot = xAxisIndex > 0 ? new Vector2(0.5f, 1) : new Vector2(0.5f, 1);
|
||||||
var labelParent = m_Tooltip.runtimeGameObject.transform;
|
var labelParent = m_Tooltip.runtimeGameObject.transform;
|
||||||
GameObject labelObj = ChartHelper.AddTooltipLabel(ChartHelper.Cancat(objName, "_label"), labelParent, m_ThemeInfo.font, privot);
|
GameObject labelObj = ChartHelper.AddTooltipLabel(ChartCached.GetAxisTooltipLabel(objName), labelParent, m_ThemeInfo.font, privot);
|
||||||
xAxis.SetTooltipLabel(labelObj);
|
xAxis.SetTooltipLabel(labelObj);
|
||||||
xAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
|
xAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
|
||||||
xAxis.SetTooltipLabelActive(xAxis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
|
xAxis.SetTooltipLabelActive(xAxis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
|
||||||
|
|||||||
33
Runtime/Internal/SerieDataPool.cs
Normal file
33
Runtime/Internal/SerieDataPool.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/******************************************/
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) 2018 monitor1394 */
|
||||||
|
/* https://github.com/monitor1394 */
|
||||||
|
/* */
|
||||||
|
/******************************************/
|
||||||
|
|
||||||
|
namespace XCharts
|
||||||
|
{
|
||||||
|
internal static class SerieDataPool
|
||||||
|
{
|
||||||
|
private static readonly ObjectPool<SerieData> s_ListPool = new ObjectPool<SerieData>(null, OnClear);
|
||||||
|
|
||||||
|
static void OnGet(SerieData serieData)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OnClear(SerieData serieData)
|
||||||
|
{
|
||||||
|
serieData.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SerieData Get()
|
||||||
|
{
|
||||||
|
return s_ListPool.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Release(SerieData toRelease)
|
||||||
|
{
|
||||||
|
s_ListPool.Release(toRelease);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Runtime/Internal/SerieDataPool.cs.meta
Normal file
11
Runtime/Internal/SerieDataPool.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6bd0d723595ba485dbe696491cf978f3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -17,11 +17,17 @@ namespace XCharts
|
|||||||
private const string NUMERIC_FORMATTER_d = "d";
|
private const string NUMERIC_FORMATTER_d = "d";
|
||||||
private const string NUMERIC_FORMATTER_X = "X";
|
private const string NUMERIC_FORMATTER_X = "X";
|
||||||
private const string NUMERIC_FORMATTER_x = "x";
|
private const string NUMERIC_FORMATTER_x = "x";
|
||||||
|
private static readonly string s_DefaultAxisY = "axis_y";
|
||||||
|
private static readonly string s_DefaultAxisX = "axis_x";
|
||||||
private static CultureInfo ci = new CultureInfo("en-us");// "en-us", "zh-cn", "ar-iq", "de-de"
|
private static CultureInfo ci = new CultureInfo("en-us");// "en-us", "zh-cn", "ar-iq", "de-de"
|
||||||
private static Dictionary<Color, string> s_ColorToStr = new Dictionary<Color, string>(100);
|
private static Dictionary<Color, string> s_ColorToStr = new Dictionary<Color, string>(100);
|
||||||
private static Dictionary<int, string> s_SerieLabelName = new Dictionary<int, string>(1000);
|
private static Dictionary<int, string> s_SerieLabelName = new Dictionary<int, string>(1000);
|
||||||
private static Dictionary<int, string> s_AxisLabelName = new Dictionary<int, string>(1000);
|
private static Dictionary<int, string> s_AxisLabelName = new Dictionary<int, string>(1000);
|
||||||
private static Dictionary<Color, string> s_ColorDotStr = new Dictionary<Color, string>(100);
|
private static Dictionary<Color, string> s_ColorDotStr = new Dictionary<Color, string>(100);
|
||||||
|
private static Dictionary<int, string> s_XAxisName = new Dictionary<int, string>();
|
||||||
|
private static Dictionary<int, string> s_YAxisName = new Dictionary<int, string>();
|
||||||
|
private static Dictionary<string, string> s_AxisLabel = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
|
||||||
private static Dictionary<float, Dictionary<string, string>> s_NumberToStr = new Dictionary<float, Dictionary<string, string>>();
|
private static Dictionary<float, Dictionary<string, string>> s_NumberToStr = new Dictionary<float, Dictionary<string, string>>();
|
||||||
private static Dictionary<int, Dictionary<string, string>> s_PrecisionToStr = new Dictionary<int, Dictionary<string, string>>();
|
private static Dictionary<int, Dictionary<string, string>> s_PrecisionToStr = new Dictionary<int, Dictionary<string, string>>();
|
||||||
@@ -119,19 +125,51 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetAxisLabelName(string prefix, bool isYAxis, int axisIndex, int i)
|
internal static string GetXAxisName(int axisIndex, int index = -1)
|
||||||
{
|
{
|
||||||
int key = (isYAxis ? 2 : 1) * 1000000 + (axisIndex + 1) * 100000 + i;
|
if (axisIndex > 0) axisIndex = 2;
|
||||||
if (s_AxisLabelName.ContainsKey(key))
|
if (index >= 0)
|
||||||
{
|
{
|
||||||
return s_AxisLabelName[key];
|
int key = (axisIndex + 1) * 10000 + index;
|
||||||
|
if (!s_XAxisName.ContainsKey(key))
|
||||||
|
{
|
||||||
|
s_XAxisName[key] = axisIndex > 0 ? s_DefaultAxisX + axisIndex + index : s_DefaultAxisX + index;
|
||||||
|
}
|
||||||
|
return s_XAxisName[key];
|
||||||
}
|
}
|
||||||
else
|
else if (!s_XAxisName.ContainsKey(axisIndex))
|
||||||
{
|
{
|
||||||
string name = prefix + "_" + axisIndex + "_" + i;
|
s_XAxisName[axisIndex] = axisIndex > 0 ? s_DefaultAxisX + axisIndex : s_DefaultAxisX;
|
||||||
s_AxisLabelName[key] = name;
|
|
||||||
return name;
|
|
||||||
}
|
}
|
||||||
|
return s_XAxisName[axisIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetYAxisName(int axisIndex, int index = -1)
|
||||||
|
{
|
||||||
|
if (axisIndex > 0) axisIndex = 2;
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
int key = (axisIndex + 1) * 10000 + index;
|
||||||
|
if (!s_YAxisName.ContainsKey(key))
|
||||||
|
{
|
||||||
|
s_YAxisName[key] = axisIndex > 0 ? s_DefaultAxisY + axisIndex + index : s_DefaultAxisY + index;
|
||||||
|
}
|
||||||
|
return s_YAxisName[key];
|
||||||
|
}
|
||||||
|
else if (!s_YAxisName.ContainsKey(axisIndex))
|
||||||
|
{
|
||||||
|
s_YAxisName[axisIndex] = axisIndex > 0 ? s_DefaultAxisY + axisIndex : s_DefaultAxisY;
|
||||||
|
}
|
||||||
|
return s_YAxisName[axisIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetAxisTooltipLabel(string axisName)
|
||||||
|
{
|
||||||
|
if (!s_AxisLabel.ContainsKey(axisName))
|
||||||
|
{
|
||||||
|
s_AxisLabel[axisName] = axisName + "_label";
|
||||||
|
}
|
||||||
|
return s_AxisLabel[axisName];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,6 +15,8 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
public static class ChartDrawer
|
public static class ChartDrawer
|
||||||
{
|
{
|
||||||
|
private static readonly Vector2 zeroVector2 = Vector2.zero;
|
||||||
|
private static readonly Vector3 zeroVector3 = Vector3.zero;
|
||||||
private static UIVertex[] vertex = new UIVertex[4];
|
private static UIVertex[] vertex = new UIVertex[4];
|
||||||
private static List<Vector3> s_CurvesPosList = new List<Vector3>();
|
private static List<Vector3> s_CurvesPosList = new List<Vector3>();
|
||||||
|
|
||||||
@@ -44,7 +46,7 @@ namespace XCharts
|
|||||||
for (int j = 0; j < 4; j++)
|
for (int j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
vertex[j].color = color;
|
vertex[j].color = color;
|
||||||
vertex[j].uv0 = Vector2.zero;
|
vertex[j].uv0 = zeroVector2;
|
||||||
}
|
}
|
||||||
vh.AddUIVertexQuad(vertex);
|
vh.AddUIVertexQuad(vertex);
|
||||||
}
|
}
|
||||||
@@ -256,7 +258,7 @@ namespace XCharts
|
|||||||
for (int j = 0; j < 4; j++)
|
for (int j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
vertex[j].color = j >= 2 ? toColor : startColor;
|
vertex[j].color = j >= 2 ? toColor : startColor;
|
||||||
vertex[j].uv0 = Vector2.zero;
|
vertex[j].uv0 = zeroVector2;
|
||||||
}
|
}
|
||||||
vh.AddUIVertexQuad(vertex);
|
vh.AddUIVertexQuad(vertex);
|
||||||
}
|
}
|
||||||
@@ -519,15 +521,15 @@ namespace XCharts
|
|||||||
UIVertex v1 = new UIVertex();
|
UIVertex v1 = new UIVertex();
|
||||||
v1.position = p1;
|
v1.position = p1;
|
||||||
v1.color = color;
|
v1.color = color;
|
||||||
v1.uv0 = Vector3.zero;
|
v1.uv0 = zeroVector2;
|
||||||
UIVertex v2 = new UIVertex();
|
UIVertex v2 = new UIVertex();
|
||||||
v2.position = p2;
|
v2.position = p2;
|
||||||
v2.color = color2;
|
v2.color = color2;
|
||||||
v2.uv0 = Vector3.zero;
|
v2.uv0 = zeroVector2;
|
||||||
UIVertex v3 = new UIVertex();
|
UIVertex v3 = new UIVertex();
|
||||||
v3.position = p3;
|
v3.position = p3;
|
||||||
v3.color = color3;
|
v3.color = color3;
|
||||||
v3.uv0 = Vector3.zero;
|
v3.uv0 = zeroVector2;
|
||||||
int startIndex = vh.currentVertCount;
|
int startIndex = vh.currentVertCount;
|
||||||
vh.AddVert(v1);
|
vh.AddVert(v1);
|
||||||
vh.AddVert(v2);
|
vh.AddVert(v2);
|
||||||
|
|||||||
Reference in New Issue
Block a user