diff --git a/Assets/XCharts/Examples/Runtime/Example12_CustomDrawing.cs b/Assets/XCharts/Examples/Runtime/Example12_CustomDrawing.cs
index 3809973e..0f0aefad 100644
--- a/Assets/XCharts/Examples/Runtime/Example12_CustomDrawing.cs
+++ b/Assets/XCharts/Examples/Runtime/Example12_CustomDrawing.cs
@@ -33,7 +33,7 @@ namespace XCharts.Examples
chart.onCustomDrawAfterSerie = delegate (VertexHelper vh, Serie serie)
{
if (serie.index != 0) return;
- var dataPoints = serie.dataPoints;
+ var dataPoints = serie.context.dataPoints;
if (dataPoints.Count > 0)
{
var pos = dataPoints[3];
diff --git a/Assets/XCharts/Examples/Runtime/Example41_RadarUpdate.cs b/Assets/XCharts/Examples/Runtime/Example41_RadarUpdate.cs
index afd08c0b..c004dfc3 100644
--- a/Assets/XCharts/Examples/Runtime/Example41_RadarUpdate.cs
+++ b/Assets/XCharts/Examples/Runtime/Example41_RadarUpdate.cs
@@ -62,7 +62,7 @@ namespace XCharts.Examples
chart.UpdateData(serieIndex, i, value);
}
}
- chart.GetChartComponent
().subText = "max:" + serie.runtimeDataMax;
+ chart.GetChartComponent().subText = "max:" + serie.context.dataMax;
}
void UpdateMax()
@@ -70,10 +70,10 @@ namespace XCharts.Examples
var serieIndex = 0;
var serie = chart.GetSerie(serieIndex);
if (serie == null) return;
- if (serie.runtimeDataMax != max)
+ if (serie.context.dataMax != max)
{
- chart.GetChartComponent().subText = "max:" + serie.runtimeDataMax;
- max = serie.runtimeDataMax;
+ chart.GetChartComponent().subText = "max:" + serie.context.dataMax;
+ max = serie.context.dataMax;
}
}
}
diff --git a/Assets/XCharts/Runtime/Helper/SerieHelper.cs b/Assets/XCharts/Runtime/Helper/SerieHelper.cs
index 3f6bcd31..25838572 100644
--- a/Assets/XCharts/Runtime/Helper/SerieHelper.cs
+++ b/Assets/XCharts/Runtime/Helper/SerieHelper.cs
@@ -214,10 +214,10 @@ namespace XCharts
if (serie.center.Length < 2) return;
var centerX = serie.center[0] <= 1 ? chartWidth * serie.center[0] : serie.center[0];
var centerY = serie.center[1] <= 1 ? chartHeight * serie.center[1] : serie.center[1];
- serie.runtimeCenterPos = chartPosition + new Vector3(centerX, centerY);
+ serie.context.center = chartPosition + new Vector3(centerX, centerY);
var minWidth = Mathf.Min(chartWidth, chartHeight);
- serie.runtimeInsideRadius = serie.radius[0] <= 1 ? minWidth * serie.radius[0] : serie.radius[0];
- serie.runtimeOutsideRadius = serie.radius[1] <= 1 ? minWidth * serie.radius[1] : serie.radius[1];
+ serie.context.insideRadius = serie.radius[0] <= 1 ? minWidth * serie.radius[0] : serie.radius[0];
+ serie.context.outsideRadius = serie.radius[1] <= 1 ? minWidth * serie.radius[1] : serie.radius[1];
}
public static void UpdateRect(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
@@ -229,22 +229,22 @@ namespace XCharts
var runtimeTop = serie.top <= 1 ? serie.top * chartHeight : serie.top;
var runtimeRight = serie.right <= 1 ? serie.right * chartWidth : serie.right;
- serie.runtimeX = chartPosition.x + runtimeLeft;
- serie.runtimeY = chartPosition.y + runtimeBottom;
- serie.runtimeWidth = chartWidth - runtimeLeft - runtimeRight;
- serie.runtimeHeight = chartHeight - runtimeTop - runtimeBottom;
- serie.runtimeCenterPos = new Vector3(serie.runtimeX + serie.runtimeWidth / 2,
- serie.runtimeY + serie.runtimeHeight / 2);
- serie.runtimeRect = new Rect(serie.runtimeX, serie.runtimeY, serie.runtimeWidth, serie.runtimeHeight);
+ serie.context.x = chartPosition.x + runtimeLeft;
+ serie.context.y = chartPosition.y + runtimeBottom;
+ serie.context.width = chartWidth - runtimeLeft - runtimeRight;
+ serie.context.height = chartHeight - runtimeTop - runtimeBottom;
+ serie.context.center = new Vector3(serie.context.x + serie.context.width / 2,
+ serie.context.y + serie.context.height / 2);
+ serie.context.rect = new Rect(serie.context.x, serie.context.y, serie.context.width, serie.context.height);
}
else
{
- serie.runtimeX = chartPosition.x;
- serie.runtimeY = chartPosition.y;
- serie.runtimeWidth = chartWidth;
- serie.runtimeHeight = chartHeight;
- serie.runtimeCenterPos = chartPosition + new Vector3(chartWidth / 2, chartHeight / 2);
- serie.runtimeRect = new Rect(serie.runtimeX, serie.runtimeY, serie.runtimeWidth, serie.runtimeHeight);
+ serie.context.x = chartPosition.x;
+ serie.context.y = chartPosition.y;
+ serie.context.width = chartWidth;
+ serie.context.height = chartHeight;
+ serie.context.center = chartPosition + new Vector3(chartWidth / 2, chartHeight / 2);
+ serie.context.rect = new Rect(serie.context.x, serie.context.y, serie.context.width, serie.context.height);
}
}
@@ -370,7 +370,7 @@ namespace XCharts
public static bool IsDownPoint(Serie serie, int index)
{
- var dataPoints = serie.dataPoints;
+ var dataPoints = serie.context.dataPoints;
if (dataPoints.Count < 2) return false;
else if (index > 0 && index < dataPoints.Count - 1)
{
@@ -549,13 +549,13 @@ namespace XCharts
GetMinMaxData(serie, dimension, out min, out max, dataZoom);
if (ceilRate < 0)
{
- serie.runtimeDataMin = min;
- serie.runtimeDataMax = max;
+ serie.context.dataMin = min;
+ serie.context.dataMax = max;
}
else
{
- serie.runtimeDataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate);
- serie.runtimeDataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate);
+ serie.context.dataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate);
+ serie.context.dataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate);
}
}
@@ -565,13 +565,13 @@ namespace XCharts
GetMinMaxData(serie, out min, out max, dataZoom);
if (ceilRate < 0)
{
- serie.runtimeDataMin = min;
- serie.runtimeDataMax = max;
+ serie.context.dataMin = min;
+ serie.context.dataMax = max;
}
else
{
- serie.runtimeDataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate);
- serie.runtimeDataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate);
+ serie.context.dataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate);
+ serie.context.dataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate);
}
}
@@ -689,16 +689,16 @@ namespace XCharts
public static void UpdateSerieRuntimeFilterData(Serie serie, bool filterInvisible = true)
{
- serie.runtimeSortedData.Clear();
+ serie.context.sortedData.Clear();
foreach (var serieData in serie.data)
{
if (!filterInvisible || (filterInvisible && serieData.show))
- serie.runtimeSortedData.Add(serieData);
+ serie.context.sortedData.Add(serieData);
}
switch (serie.dataSortType)
{
case SerieDataSortType.Ascending:
- serie.runtimeSortedData.Sort(delegate (SerieData data1, SerieData data2)
+ serie.context.sortedData.Sort(delegate (SerieData data1, SerieData data2)
{
var value1 = data1.GetData(1);
var value2 = data2.GetData(1);
@@ -708,7 +708,7 @@ namespace XCharts
});
break;
case SerieDataSortType.Descending:
- serie.runtimeSortedData.Sort(delegate (SerieData data1, SerieData data2)
+ serie.context.sortedData.Sort(delegate (SerieData data1, SerieData data2)
{
var value1 = data1.GetData(1);
var value2 = data2.GetData(1);
diff --git a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
index d8816562..22dbf419 100644
--- a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
+++ b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
@@ -113,7 +113,7 @@ namespace XCharts
var total = serie.max;
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, null, Color.clear);
serieData.labelObject.SetText(content);
- serieData.labelObject.SetLabelPosition(serie.runtimeCenterPos + serie.label.offset);
+ serieData.labelObject.SetLabelPosition(serie.context.center + serie.label.offset);
if (!ChartHelper.IsClearColor(serie.label.textStyle.color))
{
serieData.labelObject.label.SetColor(serie.label.textStyle.color);
@@ -191,22 +191,22 @@ namespace XCharts
switch (serieLabel.position)
{
case LabelStyle.Position.Center:
- serieData.labelPosition = serie.runtimeCenterPos;
+ serieData.labelPosition = serie.context.center;
break;
case LabelStyle.Position.Inside:
var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2 + serieLabel.margin;
- var labelCenter = new Vector2(serie.runtimeCenterPos.x + labelRadius * Mathf.Sin(currRad),
- serie.runtimeCenterPos.y + labelRadius * Mathf.Cos(currRad));
+ var labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
+ serie.context.center.y + labelRadius * Mathf.Cos(currRad));
serieData.labelPosition = labelCenter;
break;
case LabelStyle.Position.Outside:
if (labelLine.lineType == LabelLine.LineType.HorizontalLine)
{
- var radius1 = serie.runtimeOutsideRadius;
+ var radius1 = serie.context.outsideRadius;
var radius3 = insideRadius + (outsideRadius - insideRadius) / 2;
var currSin = Mathf.Sin(currRad);
var currCos = Mathf.Cos(currRad);
- var pos0 = new Vector3(serie.runtimeCenterPos.x + radius3 * currSin, serie.runtimeCenterPos.y + radius3 * currCos);
+ var pos0 = new Vector3(serie.context.center.x + radius3 * currSin, serie.context.center.y + radius3 * currCos);
if (currAngle > 180)
{
currSin = Mathf.Sin((360 - currAngle) * Mathf.Deg2Rad);
@@ -219,9 +219,9 @@ namespace XCharts
}
else
{
- labelRadius = serie.runtimeOutsideRadius + labelLine.lineLength1;
- labelCenter = new Vector2(serie.runtimeCenterPos.x + labelRadius * Mathf.Sin(currRad),
- serie.runtimeCenterPos.y + labelRadius * Mathf.Cos(currRad));
+ labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
+ labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
+ serie.context.center.y + labelRadius * Mathf.Cos(currRad));
serieData.labelPosition = labelCenter;
}
break;
@@ -237,7 +237,7 @@ namespace XCharts
for (int n = 0; n < data.Count; n++)
{
var serieData = data[n];
- if (serieData.labelPosition.x != 0 && serieData.labelPosition.x < serie.runtimeCenterPos.x)
+ if (serieData.labelPosition.x != 0 && serieData.labelPosition.x < serie.context.center.x)
{
splitCount = n;
break;
@@ -276,13 +276,13 @@ namespace XCharts
{
if (lastCheckPos.y - serieData.labelPosition.y < fontSize)
{
- var labelRadius = serie.runtimeOutsideRadius + labelLine.lineLength1;
+ var labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
var y1 = lastCheckPos.y - fontSize;
- var cy = serie.runtimeCenterPos.y;
+ var cy = serie.context.center.y;
var diff = Mathf.Abs(y1 - cy);
var diffX = labelRadius * labelRadius - diff * diff;
diffX = diffX <= 0 ? 0 : diffX;
- var x1 = serie.runtimeCenterPos.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
+ var x1 = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
serieData.labelPosition = new Vector3(x1, y1);
}
lastCheckPos = serieData.labelPosition;
diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs b/Assets/XCharts/Runtime/Internal/BaseChart.cs
index 8ba7167a..2ba9b74c 100644
--- a/Assets/XCharts/Runtime/Internal/BaseChart.cs
+++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs
@@ -577,7 +577,8 @@ namespace XCharts
{
m_OnCustomDrawSerieBeforeCallback.Invoke(vh, serie);
}
- serie.dataPoints.Clear();
+ serie.context.dataPoints.Clear();
+ serie.context.dataIgnore.Clear();
DrawPainterSerie(vh, serie);
if (i >= 0 && i < m_SerieHandlers.Count)
{
diff --git a/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs
index 89b41264..b3d1033f 100644
--- a/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs
@@ -69,7 +69,7 @@ namespace XCharts
{
var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName);
var yCategory = ComponentHelper.IsAnyCategoryOfYAxis(chart.components);
- serie.dataPoints.Clear();
+ serie.context.dataPoints.Clear();
if (yCategory) DrawYBarSerie(vh, serie, colorIndex);
else DrawXBarSerie(vh, serie, colorIndex);
}
@@ -134,7 +134,7 @@ namespace XCharts
var serieData = showData[i];
if (!serieData.show || serie.IsIgnoreValue(serieData))
{
- serie.dataPoints.Add(Vector3.zero);
+ serie.context.dataPoints.Add(Vector3.zero);
continue;
}
var highlight = serie.data[i].highlighted
@@ -211,7 +211,7 @@ namespace XCharts
top = chart.ClampInGrid(grid, top);
}
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
- serie.dataPoints.Add(top);
+ serie.context.dataPoints.Add(top);
if (serie.show)
{
switch (serie.barType)
@@ -278,7 +278,7 @@ namespace XCharts
var serieData = showData[i];
if (!serieData.show || serie.IsIgnoreValue(serieData))
{
- serie.dataPoints.Add(Vector3.zero);
+ serie.context.dataPoints.Add(Vector3.zero);
continue;
}
var highlight = serie.data[i].highlighted
@@ -364,7 +364,7 @@ namespace XCharts
top = chart.ClampInGrid(grid, top);
}
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
- serie.dataPoints.Add(top);
+ serie.context.dataPoints.Add(top);
if (serie.show && currHig != 0)
{
switch (serie.barType)
diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs
index 3a934393..50aed6bd 100644
--- a/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs
@@ -53,7 +53,7 @@ namespace XCharts
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData))
{
- serie.dataPoints.Add(Vector3.zero);
+ serie.context.dataPoints.Add(Vector3.zero);
continue;
}
var highlight = serie.data[i].highlighted || serie.highlighted;
@@ -98,7 +98,7 @@ namespace XCharts
prb = chart.ClampInGrid(grid, prb);
top = chart.ClampInGrid(grid, top);
}
- serie.dataPoints.Add(top);
+ serie.context.dataPoints.Add(top);
var areaColor = isRise
? itemStyle.GetColor(theme.serie.candlestickColor)
: itemStyle.GetColor0(theme.serie.candlestickColor0);
diff --git a/Assets/XCharts/Runtime/Serie/Gauge/GaugeHandler.cs b/Assets/XCharts/Runtime/Serie/Gauge/GaugeHandler.cs
index 55146b76..70a39a60 100644
--- a/Assets/XCharts/Runtime/Serie/Gauge/GaugeHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Gauge/GaugeHandler.cs
@@ -138,14 +138,14 @@ namespace XCharts
var totalValue = serie.max - serie.min;
var diffAngle = totalAngle / count;
var diffValue = totalValue / count;
- var radius = serie.runtimeInsideRadius - serie.gaugeAxis.axisLabel.margin;
+ var radius = serie.context.insideRadius - serie.gaugeAxis.axisLabel.margin;
var serieData = serie.GetSerieData(0);
var customLabelText = serie.gaugeAxis.axisLabelText;
for (int j = 0; j <= count; j++)
{
var angle = serie.startAngle + j * diffAngle;
var value = serie.min + j * diffValue;
- var pos = ChartHelper.GetPosition(serie.runtimeCenterPos, angle, radius);
+ var pos = ChartHelper.GetPosition(serie.context.center, angle, radius);
var text = customLabelText != null && j < customLabelText.Count ? customLabelText[j] :
SerieLabelHelper.GetFormatterContent(serie, serieData, value, totalValue,
serie.gaugeAxis.axisLabel, Color.clear);
@@ -186,13 +186,13 @@ namespace XCharts
var color = serie.gaugeAxis.GetAxisLineColor(chart.theme, serie.index);
var backgroundColor = serie.gaugeAxis.GetAxisLineBackgroundColor(chart.theme, serie.index);
var lineWidth = serie.gaugeAxis.axisLine.GetWidth(chart.theme.gauge.lineWidth);
- var outsideRadius = serie.runtimeInsideRadius + lineWidth;
+ var outsideRadius = serie.context.insideRadius + lineWidth;
var borderWidth = serie.itemStyle.borderWidth;
var borderColor = serie.itemStyle.borderColor;
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, serie.runtimeInsideRadius, outsideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, serie.context.insideRadius, outsideRadius,
backgroundColor, backgroundColor, Color.clear, serie.startAngle, serie.endAngle, 0, Color.clear,
0, chart.settings.cicleSmoothness, serie.roundCap);
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, serie.runtimeInsideRadius, outsideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, serie.context.insideRadius, outsideRadius,
color, color, Color.clear, serie.startAngle, currAngle, 0, Color.clear,
0, chart.settings.cicleSmoothness, serie.roundCap);
}
@@ -205,14 +205,14 @@ namespace XCharts
var tempStartAngle = serie.startAngle;
var tempEndAngle = serie.startAngle;
var lineWidth = serie.gaugeAxis.axisLine.GetWidth(chart.theme.gauge.lineWidth);
- var outsideRadius = serie.runtimeInsideRadius + lineWidth;
+ var outsideRadius = serie.context.insideRadius + lineWidth;
serie.gaugeAxis.runtimeStageAngle.Clear();
for (int i = 0; i < serie.gaugeAxis.axisLine.stageColor.Count; i++)
{
var stageColor = serie.gaugeAxis.axisLine.stageColor[i];
tempEndAngle = serie.startAngle + totalAngle * stageColor.percent;
serie.gaugeAxis.runtimeStageAngle.Add(tempEndAngle);
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, serie.runtimeInsideRadius, outsideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, serie.context.insideRadius, outsideRadius,
stageColor.color, stageColor.color, Color.clear, tempStartAngle, tempEndAngle, 0, Color.clear,
0, chart.settings.cicleSmoothness);
tempStartAngle = tempEndAngle;
@@ -225,12 +225,12 @@ namespace XCharts
var pointerColor = serie.gaugeAxis.GetPointerColor(chart.theme, serie.index, currAngle, serie.itemStyle);
var pointerToColor = !ChartHelper.IsClearColor(serie.itemStyle.toColor) ? serie.itemStyle.toColor : pointerColor;
var len = serie.gaugePointer.length < 1 && serie.gaugePointer.length > -1 ?
- serie.runtimeInsideRadius * serie.gaugePointer.length :
+ serie.context.insideRadius * serie.gaugePointer.length :
serie.gaugePointer.length;
- var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle, len);
- var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 180, serie.gaugePointer.width);
- var p3 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle - 90, serie.gaugePointer.width / 2);
- var p4 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 90, serie.gaugePointer.width / 2);
+ var p1 = ChartHelper.GetPosition(serie.context.center, currAngle, len);
+ var p2 = ChartHelper.GetPosition(serie.context.center, currAngle + 180, serie.gaugePointer.width);
+ var p3 = ChartHelper.GetPosition(serie.context.center, currAngle - 90, serie.gaugePointer.width / 2);
+ var p4 = ChartHelper.GetPosition(serie.context.center, currAngle + 90, serie.gaugePointer.width / 2);
UGL.DrawTriangle(vh, p2, p3, p1, pointerColor, pointerColor, pointerToColor);
UGL.DrawTriangle(vh, p4, p2, p1, pointerColor, pointerColor, pointerToColor);
}
@@ -246,14 +246,14 @@ namespace XCharts
var lineWidth = serie.gaugeAxis.axisLine.GetWidth(chart.theme.gauge.lineWidth);
var splitLineWidth = splitLine.GetWidth(chart.theme.gauge.splitLineWidth);
var splitLineLength = splitLine.GetLength(chart.theme.gauge.splitLineLength);
- var outsideRadius = serie.runtimeInsideRadius + lineWidth;
+ var outsideRadius = serie.context.insideRadius + lineWidth;
var insideRadius = outsideRadius - splitLineLength;
for (int i = 0; i < serie.splitNumber + 1; i++)
{
var angle = serie.startAngle + i * diffAngle;
var lineColor = serie.gaugeAxis.GetSplitLineColor(chart.theme.gauge.splitLineColor, serie.index, angle);
- var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, angle, insideRadius);
- var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, angle, outsideRadius);
+ var p1 = ChartHelper.GetPosition(serie.context.center, angle, insideRadius);
+ var p2 = ChartHelper.GetPosition(serie.context.center, angle, outsideRadius);
UGL.DrawLine(vh, p1, p2, splitLineWidth, lineColor);
}
}
@@ -269,7 +269,7 @@ namespace XCharts
var lineWidth = serie.gaugeAxis.axisLine.GetWidth(chart.theme.gauge.lineWidth);
var tickWidth = axisTick.GetWidth(chart.theme.gauge.tickWidth);
var tickLength = axisTick.GetLength(chart.theme.gauge.tickLength);
- var outsideRadius = serie.runtimeInsideRadius + lineWidth;
+ var outsideRadius = serie.context.insideRadius + lineWidth;
var insideRadius = outsideRadius - (tickLength < 1 ? lineWidth * tickLength : tickLength);
for (int i = 0; i < serie.splitNumber; i++)
@@ -278,8 +278,8 @@ namespace XCharts
{
var angle = serie.startAngle + i * diffAngle + j * (diffAngle / axisTick.splitNumber);
var lineColor = serie.gaugeAxis.GetSplitLineColor(chart.theme.gauge.tickColor, serie.index, angle);
- var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, angle, insideRadius);
- var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, angle, outsideRadius);
+ var p1 = ChartHelper.GetPosition(serie.context.center, angle, insideRadius);
+ var p2 = ChartHelper.GetPosition(serie.context.center, angle, outsideRadius);
UGL.DrawLine(vh, p1, p2, tickWidth, lineColor);
}
}
@@ -298,7 +298,7 @@ namespace XCharts
if (serie.dataCount > 0)
{
var serieData = serie.data[0];
- serieData.labelPosition = serie.runtimeCenterPos + serie.label.offset;
+ serieData.labelPosition = serie.context.center + serie.label.offset;
value = dest ? serieData.GetData(1)
: serieData.GetCurrData(1, serie.animation.GetUpdateAnimationDuration());
value = MathUtil.Clamp(value, serie.min, serie.max);
@@ -348,14 +348,14 @@ namespace XCharts
continue;
var len = serie.gaugePointer.length < 1 && serie.gaugePointer.length > -1
- ? serie.runtimeInsideRadius * serie.gaugePointer.length
+ ? serie.context.insideRadius * serie.gaugePointer.length
: serie.gaugePointer.length;
- if (Vector3.Distance(local, serie.runtimeCenterPos) > len) continue;
+ if (Vector3.Distance(local, serie.context.center) > len) continue;
var currAngle = (float)(serie.animation.IsFinish() ? GetCurrAngle(serie, false) : serie.animation.GetCurrDetail());
- var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle, len);
- var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 180, serie.gaugePointer.width);
- var p3 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle - 90, serie.gaugePointer.width / 2);
- var p4 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 90, serie.gaugePointer.width / 2);
+ var p1 = ChartHelper.GetPosition(serie.context.center, currAngle, len);
+ var p2 = ChartHelper.GetPosition(serie.context.center, currAngle + 180, serie.gaugePointer.width);
+ var p3 = ChartHelper.GetPosition(serie.context.center, currAngle - 90, serie.gaugePointer.width / 2);
+ var p4 = ChartHelper.GetPosition(serie.context.center, currAngle + 90, serie.gaugePointer.width / 2);
if (ChartHelper.IsPointInQuadrilateral(local, p1, p3, p2, p4))
{
return serie;
diff --git a/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs
index 06fa85fb..41c3464f 100644
--- a/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs
@@ -84,7 +84,7 @@ namespace XCharts
borderColor.a = (byte)(borderColor.a * serie.itemStyle.opacity);
var borderToColor = serie.itemStyle.opacity > 0 ? serie.itemStyle.borderToColor : ChartConst.clearColor32;
borderToColor.a = (byte)(borderToColor.a * serie.itemStyle.opacity);
- serie.dataPoints.Clear();
+ serie.context.dataPoints.Clear();
serie.animation.InitProgress(1, 0, xCount);
var animationIndex = serie.animation.GetCurrIndex();
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
@@ -101,7 +101,7 @@ namespace XCharts
var dimension = VisualMapHelper.GetDimension(visualMap, serieData.data.Count);
if (serie.IsIgnoreIndex(dataIndex, dimension))
{
- serie.dataPoints.Add(Vector3.zero);
+ serie.context.dataPoints.Add(Vector3.zero);
continue;
}
var value = serieData.GetCurrData(dimension, dataChangeDuration, yAxis.inverse,
@@ -109,7 +109,7 @@ namespace XCharts
if (serieData.IsDataChanged()) dataChanging = true;
var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth,
zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth);
- serie.dataPoints.Add(pos);
+ serie.context.dataPoints.Add(pos);
serieData.canShowLabel = false;
serieData.runtimeRect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
if (value == 0) continue;
diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs
index f76ddefe..acd5e15a 100644
--- a/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs
+++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs
@@ -94,9 +94,6 @@ namespace XCharts
public override void DrawSerie(VertexHelper vh)
{
var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName);
-
- serie.dataPoints.Clear();
- serie.dataIgnore.Clear();
serie.context.colorIndex = colorIndex;
if (serie.IsUseCoord())
@@ -163,7 +160,7 @@ namespace XCharts
if (!serie.show || serie.IsPerformanceMode())
return;
- var count = serie.dataPoints.Count;
+ var count = serie.context.dataPoints.Count;
var clip = SeriesHelper.IsAnyClipSerie(chart.series);
XAxis xAxis;
YAxis yAxis;
@@ -193,7 +190,7 @@ namespace XCharts
continue;
}
- if (ChartHelper.IsIngore(serie.dataPoints[i]))
+ if (ChartHelper.IsIngore(serie.context.dataPoints[i]))
continue;
var highlight = serie.data[i].highlighted || serie.highlighted;
@@ -207,9 +204,9 @@ namespace XCharts
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight);
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
- chart.DrawClipSymbol(vh, symbol.type, symbolSize, symbolBorder, serie.dataPoints[i],
+ chart.DrawClipSymbol(vh, symbol.type, symbolSize, symbolBorder, serie.context.dataPoints[i],
symbolColor, symbolToColor, symbolEmptyColor, symbol.gap, clip, cornerRadius, grid,
- i > 0 ? serie.dataPoints[i - 1] : grid.context.position);
+ i > 0 ? serie.context.dataPoints[i - 1] : grid.context.position);
}
}
@@ -218,29 +215,26 @@ namespace XCharts
if (!serie.show || !serie.lineArrow.show)
return;
- if (serie.dataPoints.Count < 2)
+ if (serie.context.dataPoints.Count < 2)
return;
var lineColor = SerieHelper.GetLineColor(serie, chart.theme, serie.index, false);
var startPos = Vector3.zero;
var arrowPos = Vector3.zero;
var lineArrow = serie.lineArrow.arrow;
-
+ var dataPoints = serie.context.drawPoints;
switch (serie.lineArrow.position)
{
case LineArrow.Position.End:
-
- var dataPoints = serie.GetUpSmoothList(serie.dataCount - 1);
if (dataPoints.Count < 3)
{
- dataPoints = serie.dataPoints;
- startPos = dataPoints[dataPoints.Count - 2];
- arrowPos = dataPoints[dataPoints.Count - 1];
+ startPos = dataPoints[dataPoints.Count - 2].position;
+ arrowPos = dataPoints[dataPoints.Count - 1].position;
}
else
{
- startPos = dataPoints[dataPoints.Count - 3];
- arrowPos = dataPoints[dataPoints.Count - 2];
+ startPos = dataPoints[dataPoints.Count - 3].position;
+ arrowPos = dataPoints[dataPoints.Count - 2].position;
}
UGL.DrawArrow(vh, startPos, arrowPos, lineArrow.width, lineArrow.height,
lineArrow.offset, lineArrow.dent, lineArrow.GetColor(lineColor));
@@ -248,11 +242,8 @@ namespace XCharts
break;
case LineArrow.Position.Start:
-
- dataPoints = serie.GetUpSmoothList(1);
- if (dataPoints.Count < 2) dataPoints = serie.dataPoints;
- startPos = dataPoints[1];
- arrowPos = dataPoints[0];
+ startPos = dataPoints[1].position;
+ arrowPos = dataPoints[0].position;
UGL.DrawArrow(vh, startPos, arrowPos, lineArrow.width, lineArrow.height,
lineArrow.offset, lineArrow.dent, lineArrow.GetColor(lineColor));
@@ -332,15 +323,15 @@ namespace XCharts
{
serieData.runtimeStackHig = 0;
serieData.runtimePosition = Vector3.zero;
- if (serie.ignoreLineBreak && serie.dataIgnore.Count > 0)
+ if (serie.ignoreLineBreak && serie.context.dataIgnore.Count > 0)
{
- serie.dataIgnore[serie.dataIgnore.Count - 1] = true;
+ serie.context.dataIgnore[serie.context.dataIgnore.Count - 1] = true;
}
}
else
{
var np = Vector3.zero;
- var xValue = serieData.GetData(0, axis.inverse);
+ var xValue = axis.IsCategory() ? i : serieData.GetData(0, axis.inverse);
var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow,
maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis);
@@ -349,18 +340,18 @@ namespace XCharts
serieData.runtimePosition = np;
- serie.dataPoints.Add(np);
- serie.dataIgnore.Add(false);
+ serie.context.dataPoints.Add(np);
+ serie.context.dataIgnore.Add(false);
}
}
if (dataChanging)
chart.RefreshPainter(serie);
- if (serie.dataPoints.Count <= 0)
+ if (serie.context.dataPoints.Count <= 0)
return;
- serie.animation.InitProgress(serie.dataPoints, isY);
+ serie.animation.InitProgress(serie.context.dataPoints, isY);
serie.animation.SetDataFinish(0);
VisualMapHelper.AutoSetLineMinMax(visualMap, serie, isY, axis, relativedAxis);
diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs
index 148c4457..754acf52 100644
--- a/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs
+++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs
@@ -44,7 +44,7 @@ namespace XCharts
var currDetailProgress = 0f;
var totalDetailProgress = datas.Count;
- serie.animation.InitProgress(serie.dataPoints.Count, currDetailProgress, totalDetailProgress);
+ serie.animation.InitProgress(serie.context.dataPoints.Count, currDetailProgress, totalDetailProgress);
serie.animation.SetDataFinish(0);
for (int i = 1; i < datas.Count; i++)
diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs
index 491eabd7..8fe34d76 100644
--- a/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs
+++ b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs
@@ -373,9 +373,9 @@ namespace XCharts
UpdateStepLineDrawPoints(serie, setting, theme, isY);
break;
default:
- for (int i = 0; i < serie.dataPoints.Count; i++)
+ for (int i = 0; i < serie.context.dataPoints.Count; i++)
{
- serie.context.drawPoints.Add(new PointInfo(serie.dataPoints[i], serie.dataIgnore[i]));
+ serie.context.drawPoints.Add(new PointInfo(serie.context.dataPoints[i], serie.context.dataIgnore[i]));
}
break;
}
@@ -383,7 +383,7 @@ namespace XCharts
private static void UpdateSmoothLineDrawPoints(Serie serie, Settings setting, bool isY)
{
- var points = serie.dataPoints;
+ var points = serie.context.dataPoints;
float smoothness = setting.lineSmoothness;
for (int i = 0; i < points.Count - 1; i++)
{
@@ -391,7 +391,7 @@ namespace XCharts
var ep = points[i + 1];
var lsp = i > 0 ? points[i - 1] : sp;
var nep = i < points.Count - 2 ? points[i + 2] : ep;
- var ignore = serie.dataIgnore[i];
+ var ignore = serie.context.dataIgnore[i];
if (isY)
UGLHelper.GetBezierListVertical(ref s_CurvesPosList, sp, ep, smoothness);
else
@@ -406,15 +406,15 @@ namespace XCharts
private static void UpdateStepLineDrawPoints(Serie serie, Settings setting, ThemeStyle theme, bool isY)
{
- var points = serie.dataPoints;
+ var points = serie.context.dataPoints;
var lp = points[0];
var lineWidth = serie.lineStyle.GetWidth(theme.serie.lineWidth);
serie.context.drawPoints.Clear();
- serie.context.drawPoints.Add(new PointInfo(lp, serie.dataIgnore[0]));
+ serie.context.drawPoints.Add(new PointInfo(lp, serie.context.dataIgnore[0]));
for (int i = 1; i < points.Count; i++)
{
var cp = points[i];
- var ignore = serie.dataIgnore[i];
+ var ignore = serie.context.dataIgnore[i];
if ((isY && Mathf.Abs(lp.x - cp.x) <= lineWidth)
|| (!isY && Mathf.Abs(lp.y - cp.y) <= lineWidth))
{
diff --git a/Assets/XCharts/Runtime/Serie/Liquid/LiquidHandler.cs b/Assets/XCharts/Runtime/Serie/Liquid/LiquidHandler.cs
index 7f389ae6..d09b71d1 100644
--- a/Assets/XCharts/Runtime/Serie/Liquid/LiquidHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Liquid/LiquidHandler.cs
@@ -155,9 +155,9 @@ namespace XCharts
if (serieData == null) return;
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
var value = serieData.GetCurrData(1, dataChangeDuration);
- if (serie.runtimeCheckValue != value)
+ if (serie.context.checkValue != value)
{
- serie.runtimeCheckValue = value;
+ serie.context.checkValue = value;
m_UpdateLabelText = true;
}
if (serieData.labelPosition != cenPos)
@@ -268,9 +268,9 @@ namespace XCharts
if (serieData == null) return;
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
var value = serieData.GetCurrData(1, dataChangeDuration);
- if (serie.runtimeCheckValue != value)
+ if (serie.context.checkValue != value)
{
- serie.runtimeCheckValue = value;
+ serie.context.checkValue = value;
m_UpdateLabelText = true;
}
if (serieData.labelPosition != cenPos)
diff --git a/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs
index 793bc192..50a9d33e 100644
--- a/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs
@@ -62,7 +62,7 @@ namespace XCharts
serie.animation.InitProgress(serie.showDataDimension, currDetailProgress, totalDetailProgress);
serie.animation.SetDataFinish(0);
- serie.dataPoints.Clear();
+ serie.context.dataPoints.Clear();
serie.containerIndex = parallel.index;
serie.containterInstanceId = parallel.instanceId;
diff --git a/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs
index 641ee576..da61db88 100644
--- a/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs
@@ -160,7 +160,7 @@ namespace XCharts
private void UpdateRuntimeData(Serie serie)
{
var data = serie.data;
- serie.runtimeDataMax = serie.yMax;
+ serie.context.dataMax = serie.yMax;
var runtimePieDataTotal = serie.yTotal;
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
@@ -180,7 +180,7 @@ namespace XCharts
{
totalDegree = 360;
zeroReplaceValue = totalDegree / data.Count;
- serie.runtimeDataMax = zeroReplaceValue;
+ serie.context.dataMax = zeroReplaceValue;
runtimePieDataTotal = 360;
dataTotalFilterMinAngle = 360;
}
@@ -208,8 +208,8 @@ namespace XCharts
if (serie.minAngle > 0 && degree < serie.minAngle) degree = serie.minAngle;
serieData.runtimePieToAngle = startDegree + degree;
serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ?
- serie.runtimeInsideRadius + (float)((serie.runtimeOutsideRadius - serie.runtimeInsideRadius) * value / serie.runtimeDataMax) :
- serie.runtimeOutsideRadius;
+ serie.context.insideRadius + (float)((serie.context.outsideRadius - serie.context.insideRadius) * value / serie.context.dataMax) :
+ serie.context.outsideRadius;
if (serieData.highlighted)
{
serieData.runtimePieOutsideRadius += chart.theme.serie.pieTooltipExtraRadius;
@@ -229,8 +229,8 @@ namespace XCharts
}
var halfDegree = (serieData.runtimePieToAngle - startDegree) / 2;
serieData.runtimePieHalfAngle = startDegree + halfDegree;
- serieData.runtiemPieOffsetCenter = serie.runtimeCenterPos;
- serieData.runtimePieInsideRadius = serie.runtimeInsideRadius;
+ serieData.runtiemPieOffsetCenter = serie.context.center;
+ serieData.runtimePieInsideRadius = serie.context.insideRadius;
if (offset > 0)
{
var currRad = serieData.runtimePieHalfAngle * Mathf.Deg2Rad;
@@ -249,8 +249,8 @@ namespace XCharts
serieData.runtimePieOutsideRadius += chart.theme.serie.pieSelectedOffset;
}
serieData.runtiemPieOffsetCenter = new Vector3(
- serie.runtimeCenterPos.x + serieData.runtimePieOffsetRadius * currSin,
- serie.runtimeCenterPos.y + serieData.runtimePieOffsetRadius * currCos);
+ serie.context.center.x + serieData.runtimePieOffsetRadius * currSin,
+ serie.context.center.y + serieData.runtimePieOffsetRadius * currCos);
}
serieData.canShowLabel = serieData.runtimePieCurrAngle >= serieData.runtimePieHalfAngle;
startDegree = serieData.runtimePieToAngle;
@@ -288,7 +288,7 @@ namespace XCharts
if (!ChartHelper.IsClearColor(itemStyle.centerColor))
{
var radius = insideRadius - itemStyle.centerGap;
- UGL.DrawCricle(vh, serie.runtimeCenterPos, radius, itemStyle.centerColor, chart.settings.cicleSmoothness);
+ UGL.DrawCricle(vh, serie.context.center, radius, itemStyle.centerColor, chart.settings.cicleSmoothness);
}
}
@@ -331,7 +331,7 @@ namespace XCharts
{
var drawEndDegree = serieData.runtimePieCurrAngle;
var needRoundCap = serie.roundCap && serieData.runtimePieInsideRadius > 0;
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, serieData.runtimePieInsideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, serieData.runtimePieInsideRadius,
serieData.runtimePieOutsideRadius, color, toColor, Color.clear, serieData.runtimePieStartAngle,
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
needRoundCap, true);
@@ -400,17 +400,17 @@ namespace XCharts
{
var insideRadius = serieData.runtimePieInsideRadius;
var outSideRadius = serieData.runtimePieOutsideRadius;
- var center = serie.runtimeCenterPos;
+ var center = serie.context.center;
var currAngle = serieData.runtimePieHalfAngle;
if (!ChartHelper.IsClearColor(labelLine.lineColor)) color = labelLine.lineColor;
else if (labelLine.lineType == LabelLine.LineType.HorizontalLine) color *= color;
float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad);
float currCos = Mathf.Cos(currAngle * Mathf.Deg2Rad);
var radius1 = labelLine.lineType == LabelLine.LineType.HorizontalLine ?
- serie.runtimeOutsideRadius : outSideRadius;
- var radius2 = serie.runtimeOutsideRadius + labelLine.lineLength1;
+ serie.context.outsideRadius : outSideRadius;
+ var radius2 = serie.context.outsideRadius + labelLine.lineLength1;
var radius3 = insideRadius + (outSideRadius - insideRadius) / 2;
- if (radius1 < serie.runtimeInsideRadius) radius1 = serie.runtimeInsideRadius;
+ if (radius1 < serie.context.insideRadius) radius1 = serie.context.insideRadius;
radius1 -= 0.1f;
var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos);
var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos);
@@ -545,10 +545,10 @@ namespace XCharts
private int GetPiePosIndex(Serie serie, Vector2 local)
{
if (!(serie is Pie)) return -1;
- var dist = Vector2.Distance(local, serie.runtimeCenterPos);
- var maxRadius = serie.runtimeOutsideRadius + 3 * chart.theme.serie.pieSelectedOffset;
- if (dist < serie.runtimeInsideRadius || dist > maxRadius) return -1;
- Vector2 dir = local - new Vector2(serie.runtimeCenterPos.x, serie.runtimeCenterPos.y);
+ var dist = Vector2.Distance(local, serie.context.center);
+ var maxRadius = serie.context.outsideRadius + 3 * chart.theme.serie.pieSelectedOffset;
+ if (dist < serie.context.insideRadius || dist > maxRadius) return -1;
+ Vector2 dir = local - new Vector2(serie.context.center.x, serie.context.center.y);
float angle = ChartHelper.GetAngle360(Vector2.up, dir);
for (int i = 0; i < serie.data.Count; i++)
{
@@ -569,8 +569,8 @@ namespace XCharts
private bool PointerIsInPieSerie(Serie serie, Vector2 local)
{
if (!(serie is Pie)) return false;
- var dist = Vector2.Distance(local, serie.runtimeCenterPos);
- if (dist >= serie.runtimeInsideRadius && dist <= serie.runtimeOutsideRadius) return true;
+ var dist = Vector2.Distance(local, serie.context.center);
+ if (dist >= serie.context.insideRadius && dist <= serie.context.outsideRadius) return true;
return false;
}
}
diff --git a/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs
index 6b4c69eb..fc007914 100644
--- a/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs
@@ -179,7 +179,7 @@ namespace XCharts
if (serieData.IsDataChanged()) dataChanging = true;
if (max == 0)
{
- max = serie.runtimeDataMax;
+ max = serie.context.dataMax;
}
var radius = (float)(max < 0 ? radar.context.dataRadius - radar.context.dataRadius * value / max
: radar.context.dataRadius * value / max);
@@ -347,7 +347,7 @@ namespace XCharts
if (serieData.IsDataChanged()) dataChanging = true;
if (max == 0)
{
- max = serie.runtimeDataMax;
+ max = serie.context.dataMax;
}
if (!radar.IsInIndicatorRange(j, serieData.GetData(1)))
{
diff --git a/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs
index 009131ac..14747d7a 100644
--- a/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs
@@ -74,7 +74,7 @@ namespace XCharts
//TitleStyleHelper.CheckTitle(serie, ref chart.m_ReinitTitle, ref m_UpdateTitleText);
//SerieLabelHelper.CheckLabel(serie, ref chart.m_ReinitLabel, ref m_UpdateLabelText);
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
- var ringWidth = serie.runtimeOutsideRadius - serie.runtimeInsideRadius;
+ var ringWidth = serie.context.outsideRadius - serie.context.insideRadius;
var dataChanging = false;
for (int j = 0; j < data.Count; j++)
{
@@ -89,7 +89,7 @@ namespace XCharts
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.highlighted);
var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.highlighted);
var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.highlighted);
- var outsideRadius = serie.runtimeOutsideRadius - j * (ringWidth + serie.ringGap);
+ var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.ringGap);
var insideRadius = outsideRadius - ringWidth;
var centerRadius = (outsideRadius + insideRadius) / 2;
var borderWidth = itemStyle.borderWidth;
@@ -102,11 +102,11 @@ namespace XCharts
serieData.runtimePieOutsideRadius = outsideRadius;
if (itemStyle.backgroundColor.a != 0)
{
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, insideRadius, outsideRadius, itemStyle.backgroundColor,
+ UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemStyle.backgroundColor,
itemStyle.backgroundColor, Color.clear, 0, 360, borderWidth, borderColor, 0,
chart.settings.cicleSmoothness, false, serie.clockwise);
}
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, insideRadius, outsideRadius, itemColor, itemToColor,
+ UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemColor, itemToColor,
Color.clear, startDegree, toDegree, borderWidth, borderColor, 0, chart.settings.cicleSmoothness,
roundCap, serie.clockwise);
DrawCenter(vh, serie, serieData, insideRadius, j == data.Count - 1);
@@ -189,7 +189,7 @@ namespace XCharts
{
var radius = insideRadius - itemStyle.centerGap;
var smoothness = chart.settings.cicleSmoothness;
- UGL.DrawCricle(vh, serie.runtimeCenterPos, radius, itemStyle.centerColor, smoothness);
+ UGL.DrawCricle(vh, serie.context.center, radius, itemStyle.centerColor, smoothness);
}
}
@@ -201,20 +201,20 @@ namespace XCharts
switch (serie.label.position)
{
case LabelStyle.Position.Center:
- serieData.labelPosition = serie.runtimeCenterPos + serie.label.offset;
+ serieData.labelPosition = serie.context.center + serie.label.offset;
break;
case LabelStyle.Position.Bottom:
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
var xDiff = serie.clockwise ? -serie.label.margin : serie.label.margin;
- serieData.labelPosition = serie.runtimeCenterPos + new Vector3(px1 + xDiff, py1);
+ serieData.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
break;
case LabelStyle.Position.Top:
startAngle += serie.clockwise ? -serie.label.margin : serie.label.margin;
toAngle += serie.clockwise ? serie.label.margin : -serie.label.margin;
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
- serieData.labelPosition = serie.runtimeCenterPos + new Vector3(px2, py2);
+ serieData.labelPosition = serie.context.center + new Vector3(px2, py2);
break;
}
serieData.labelObject.SetLabelPosition(serieData.labelPosition);
@@ -229,12 +229,12 @@ namespace XCharts
var centerRadius = (outsideRadius + insideRadius) / 2;
var inradius = centerRadius - itemStyle.backgroundWidth / 2;
var outradius = centerRadius + itemStyle.backgroundWidth / 2;
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, inradius,
+ UGL.DrawDoughnut(vh, serie.context.center, inradius,
outradius, backgroundColor, Color.clear, chart.settings.cicleSmoothness);
}
else
{
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, insideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, insideRadius,
outsideRadius, backgroundColor, Color.clear, chart.settings.cicleSmoothness);
}
}
@@ -244,10 +244,10 @@ namespace XCharts
var itemStyle = SerieHelper.GetItemStyle(serie, serieData);
if (itemStyle.show && itemStyle.borderWidth > 0 && !ChartHelper.IsClearColor(itemStyle.borderColor))
{
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, outsideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, outsideRadius,
outsideRadius + itemStyle.borderWidth, itemStyle.borderColor,
Color.clear, chart.settings.cicleSmoothness);
- UGL.DrawDoughnut(vh, serie.runtimeCenterPos, insideRadius,
+ UGL.DrawDoughnut(vh, serie.context.center, insideRadius,
insideRadius + itemStyle.borderWidth, itemStyle.borderColor,
Color.clear, chart.settings.cicleSmoothness);
}
@@ -273,9 +273,9 @@ namespace XCharts
private int GetRingIndex(Serie serie, Vector2 local)
{
if (!(serie is Ring)) return -1;
- var dist = Vector2.Distance(local, serie.runtimeCenterPos);
- if (dist > serie.runtimeOutsideRadius) return -1;
- Vector2 dir = local - new Vector2(serie.runtimeCenterPos.x, serie.runtimeCenterPos.y);
+ var dist = Vector2.Distance(local, serie.context.center);
+ if (dist > serie.context.outsideRadius) return -1;
+ Vector2 dir = local - new Vector2(serie.context.center.x, serie.context.center.y);
float angle = VectorAngle(Vector2.up, dir);
for (int i = 0; i < serie.data.Count; i++)
{
diff --git a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs
index 10676f04..25fff3f7 100644
--- a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs
@@ -186,7 +186,7 @@ namespace XCharts
if (!grid.Contains(pos))
continue;
- serie.dataPoints.Add(pos);
+ serie.context.dataPoints.Add(pos);
serieData.runtimePosition = pos;
var datas = serieData.data;
float symbolSize = 0;
@@ -291,7 +291,7 @@ namespace XCharts
var xDataHig = axis.context.height / 2;
pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig);
}
- serie.dataPoints.Add(pos);
+ serie.context.dataPoints.Add(pos);
serieData.runtimePosition = pos;
var datas = serieData.data;
diff --git a/Assets/XCharts/Runtime/Serie/Serie.cs b/Assets/XCharts/Runtime/Serie/Serie.cs
index 6cc98d73..ab452fdd 100644
--- a/Assets/XCharts/Runtime/Serie/Serie.cs
+++ b/Assets/XCharts/Runtime/Serie/Serie.cs
@@ -259,7 +259,6 @@ namespace XCharts
[SerializeField] private float m_Top;
[SerializeField] private float m_Bottom;
[SerializeField] private bool m_InsertDataToHead;
-
[SerializeField] private List m_Data = new List();
[NonSerialized] internal int m_FilterStart;
@@ -269,11 +268,6 @@ namespace XCharts
[NonSerialized] internal int m_FilterMinShow;
[NonSerialized] internal bool m_NeedUpdateFilterData;
[NonSerialized] public List m_FilterData = new List();
- [NonSerialized] internal List m_SortedData = new List();
- [NonSerialized] private Dictionary> m_UpSmoothPoints = new Dictionary>();
- [NonSerialized] private Dictionary> m_DownSmoothPoints = new Dictionary>();
- [NonSerialized] private List m_DataPoints = new List();
- [NonSerialized] private List m_DataIgnore = new List();
[NonSerialized] private bool m_NameDirty;
///
@@ -993,38 +987,6 @@ namespace XCharts
/// 数据项个数。
///
public int dataCount { get { return m_Data.Count; } }
- ///
- /// 数据项位置坐标。
- ///
- public List dataPoints { get { return m_DataPoints; } }
- public List dataIgnore { get { return m_DataIgnore; } }
- ///
- /// 饼图的中心点位置。
- ///
- public Vector3 runtimeCenterPos { get; internal set; }
- ///
- /// 饼图的内径
- ///
- public float runtimeInsideRadius { get; internal set; }
- ///
- /// 饼图的外径
- ///
- public float runtimeOutsideRadius { get; internal set; }
- ///
- /// 运行时的最大数据值
- ///
- public double runtimeDataMax { get; internal set; }
- ///
- /// 运行时的最小数据值
- ///
- public double runtimeDataMin { get; internal set; }
- public double runtimeCheckValue { get; set; }
- public float runtimeX { get; internal set; }
- public float runtimeY { get; internal set; }
- public float runtimeWidth { get; internal set; }
- public float runtimeHeight { get; internal set; }
- public Rect runtimeRect { get; internal set; }
- public List runtimeSortedData { get { return m_SortedData; } }
public bool nameDirty { get { return m_NameDirty; } }
public bool labelDirty { get; set; }
public bool titleDirty { get; set; }
@@ -1043,45 +1005,6 @@ namespace XCharts
{
base.ClearDirty();
}
- internal List GetUpSmoothList(int dataIndex, int size = 100)
- {
- if (m_UpSmoothPoints.ContainsKey(dataIndex))
- {
- return m_UpSmoothPoints[dataIndex];
- }
- else
- {
- var list = ListPool.Get();
- m_UpSmoothPoints[dataIndex] = list;
- return list;
- }
- }
-
- internal List GetDownSmoothList(int dataIndex, int size = 100)
- {
- if (m_DownSmoothPoints.ContainsKey(dataIndex))
- {
- return m_DownSmoothPoints[dataIndex];
- }
- else
- {
- var list = ListPool.Get();
- m_DownSmoothPoints[dataIndex] = list;
- return list;
- }
- }
-
- internal void ClearSmoothList(int dataIndex)
- {
- if (m_UpSmoothPoints.ContainsKey(dataIndex))
- {
- m_UpSmoothPoints[dataIndex].Clear();
- }
- if (m_DownSmoothPoints.ContainsKey(dataIndex))
- {
- m_DownSmoothPoints[dataIndex].Clear();
- }
- }
///
/// 维度Y对应数据中最大值。
@@ -1226,16 +1149,6 @@ namespace XCharts
{
SerieLabelPool.Release(serieData.labelObject.gameObject);
}
- if (m_UpSmoothPoints.ContainsKey(serieData.index))
- {
- ListPool.Release(m_UpSmoothPoints[serieData.index]);
- m_UpSmoothPoints.Remove(serieData.index);
- }
- if (m_DownSmoothPoints.ContainsKey(serieData.index))
- {
- ListPool.Release(m_DownSmoothPoints[serieData.index]);
- m_DownSmoothPoints.Remove(serieData.index);
- }
m_Data.RemoveAt(index);
m_NeedUpdateFilterData = true;
labelDirty = true;
@@ -1571,7 +1484,7 @@ namespace XCharts
}
else
{
- return runtimeSortedData.Count > 0 ? runtimeSortedData : m_Data;
+ return context.sortedData.Count > 0 ? context.sortedData : m_Data;
}
}
@@ -1704,9 +1617,9 @@ namespace XCharts
public bool IsIgnorePoint(int index)
{
- if (index >= 0 && index < dataPoints.Count)
+ if (index >= 0 && index < dataCount)
{
- return ChartHelper.IsIngore(dataPoints[index]);
+ return ChartHelper.IsIngore(data[index].runtimePosition);
}
return false;
}
diff --git a/Assets/XCharts/Runtime/Serie/SerieContext.cs b/Assets/XCharts/Runtime/Serie/SerieContext.cs
index 9d84cc9e..b9940787 100644
--- a/Assets/XCharts/Runtime/Serie/SerieContext.cs
+++ b/Assets/XCharts/Runtime/Serie/SerieContext.cs
@@ -37,9 +37,70 @@ namespace XCharts
///
public List pointerAxisDataIndexs = new List();
- public int vertCount;
-
+ ///
+ /// 中心点
+ ///
+ public Vector3 center { get; internal set; }
+ ///
+ /// 内半径
+ ///
+ public float insideRadius { get; internal set; }
+ ///
+ /// 外半径
+ ///
+ public float outsideRadius { get; internal set; }
+ ///
+ /// 最大值
+ ///
+ public double dataMax { get; internal set; }
+ ///
+ /// 最小值
+ ///
+ public double dataMin { get; internal set; }
+ public double checkValue { get; set; }
+ ///
+ /// 左下角坐标X
+ ///
+ public float x { get; internal set; }
+ ///
+ /// 左下角坐标Y
+ ///
+ public float y { get; internal set; }
+ ///
+ /// 宽
+ ///
+ public float width { get; internal set; }
+ ///
+ /// 高
+ ///
+ public float height { get; internal set; }
+ ///
+ /// 矩形区域
+ ///
+ public Rect rect { get; internal set; }
+ ///
+ /// 绘制顶点数
+ ///
+ public int vertCount { get; internal set; }
+ ///
+ /// 数据对应的位置坐标。
+ ///
+ public List dataPoints = new List();
+ ///
+ /// 数据对应的位置坐标是否忽略(忽略时连线是透明的),dataIgnore 和 dataPoints 一一对应。
+ ///
+ public List dataIgnore = new List();
+ ///
+ /// 排序后的数据
+ ///
+ public List sortedData = new List();
+ ///
+ /// theme的颜色索引
+ ///
internal int colorIndex;
+ ///
+ /// 绘制点
+ ///
internal List drawPoints = new List();
}
}
\ No newline at end of file
diff --git a/Assets/XCharts/Runtime/Serie/SerieHandler.cs b/Assets/XCharts/Runtime/Serie/SerieHandler.cs
index 83a42b6b..278bcdc2 100644
--- a/Assets/XCharts/Runtime/Serie/SerieHandler.cs
+++ b/Assets/XCharts/Runtime/Serie/SerieHandler.cs
@@ -203,7 +203,7 @@ namespace XCharts
txt.SetLocalEulerAngles(Vector2.zero);
txt.SetActive(serie.titleStyle.show);
serie.titleStyle.runtimeText = txt;
- serie.titleStyle.UpdatePosition(serie.runtimeCenterPos);
+ serie.titleStyle.UpdatePosition(serie.context.center);
var serieData = serie.GetSerieData(0);
if (serieData != null)
{