diff --git a/Assets/XCharts/CHANGELOG-EN.md b/Assets/XCharts/CHANGELOG-EN.md
index 1792ab74..16e15155 100644
--- a/Assets/XCharts/CHANGELOG-EN.md
+++ b/Assets/XCharts/CHANGELOG-EN.md
@@ -31,6 +31,8 @@
## Latest
+* (2021.02.18) Fixed an issue where the `Radar` could not refresh itself after parameter changing #122
+
## v2.0.0
* (2021.02.05) Release `v2.0.0` version
diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md
index 3a38fa27..79389252 100644
--- a/Assets/XCharts/CHANGELOG.md
+++ b/Assets/XCharts/CHANGELOG.md
@@ -31,6 +31,8 @@
## Latest
+* (2021.02.18) 修复`Radar`参数变更后无法自刷新的问题
+
## 2.0.0
* (2021.02.05) 发布`v2.0.0`版本
diff --git a/Assets/XCharts/Runtime/API/RadarChart_API.cs b/Assets/XCharts/Runtime/API/RadarChart_API.cs
index 2090cf12..9afe318a 100644
--- a/Assets/XCharts/Runtime/API/RadarChart_API.cs
+++ b/Assets/XCharts/Runtime/API/RadarChart_API.cs
@@ -26,6 +26,17 @@ namespace XCharts
m_Radars.Clear();
}
+ ///
+ /// 移除指定Radar的所有Indicator。
+ ///
+ ///
+ public void RemoveIndicator(int radarIndex)
+ {
+ var radar = GetRadar(radarIndex);
+ if (radar == null) return;
+ radar.indicatorList.Clear();
+ }
+
///
/// 添加雷达坐标系组件。
///
@@ -61,6 +72,14 @@ namespace XCharts
return radar;
}
+ public bool AddIndicator(int radarIndex, Radar.Indicator indicator)
+ {
+ var radar = GetRadar(radarIndex);
+ if (radar == null) return false;
+ radar.AddIndicator(indicator);
+ return true;
+ }
+
///
/// 添加指示器。
///
diff --git a/Assets/XCharts/Runtime/Component/Main/Radar.cs b/Assets/XCharts/Runtime/Component/Main/Radar.cs
index 0cab5c6b..8094ae9a 100644
--- a/Assets/XCharts/Runtime/Component/Main/Radar.cs
+++ b/Assets/XCharts/Runtime/Component/Main/Radar.cs
@@ -340,6 +340,12 @@ namespace XCharts
return new Vector3(x, y);
}
+ public void AddIndicator(Radar.Indicator indicator)
+ {
+ indicatorList.Add(indicator);
+ SetAllDirty();
+ }
+
public Radar.Indicator AddIndicator(string name, float min, float max)
{
var indicator = new Radar.Indicator();
diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs b/Assets/XCharts/Runtime/Internal/BaseChart.cs
index 541d16e8..1f45f6d4 100644
--- a/Assets/XCharts/Runtime/Internal/BaseChart.cs
+++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs
@@ -249,16 +249,19 @@ namespace XCharts
m_Theme.ClearDirty();
}
CheckComponentDirty(tooltip);
- foreach (var title in m_Titles) CheckComponentDirty(title);
- foreach (var legend in m_Legends) CheckComponentDirty(legend);
- foreach (var dataZoom in m_DataZooms) CheckComponentDirty(dataZoom);
- foreach (var visualMap in m_VisualMaps) CheckComponentDirty(visualMap);
- foreach (var grid in m_Grids) CheckComponentDirty(grid);
- foreach (var axis in m_XAxes) CheckComponentDirty(axis);
- foreach (var axis in m_YAxes) CheckComponentDirty(axis);
- foreach (var polar in m_Polars) CheckComponentDirty(polar);
- foreach (var axis in m_AngleAxes) CheckComponentDirty(axis);
- foreach (var axis in m_RadiusAxes) CheckComponentDirty(axis);
+ foreach (var component in m_Titles) CheckComponentDirty(component);
+ foreach (var component in m_Legends) CheckComponentDirty(component);
+ foreach (var component in m_Tooltips) CheckComponentDirty(component);
+ foreach (var component in m_DataZooms) CheckComponentDirty(component);
+ foreach (var component in m_VisualMaps) CheckComponentDirty(component);
+ foreach (var component in m_Grids) CheckComponentDirty(component);
+ foreach (var component in m_XAxes) CheckComponentDirty(component);
+ foreach (var component in m_YAxes) CheckComponentDirty(component);
+ foreach (var component in m_Vessels) CheckComponentDirty(component);
+ foreach (var component in m_Polars) CheckComponentDirty(component);
+ foreach (var component in m_AngleAxes) CheckComponentDirty(component);
+ foreach (var component in m_RadiusAxes) CheckComponentDirty(component);
+ foreach (var component in m_Radars) CheckComponentDirty(component);
foreach (var drawSerie in m_DrawSeries) drawSerie.CheckComponent();
}
@@ -278,9 +281,19 @@ namespace XCharts
{
base.SetAllComponentDirty();
m_Theme.SetAllDirty();
- foreach (var title in m_Titles) title.SetAllDirty();
- foreach (var legend in m_Legends) legend.SetAllDirty();
- tooltip.SetAllDirty();
+ foreach (var component in m_Titles) component.SetAllDirty();
+ foreach (var component in m_Legends) component.SetAllDirty();
+ foreach (var component in m_Tooltips) component.SetAllDirty();
+ foreach (var component in m_Grids) component.SetAllDirty();
+ foreach (var component in m_XAxes) component.SetAllDirty();
+ foreach (var component in m_YAxes) component.SetAllDirty();
+ foreach (var component in m_DataZooms) component.SetAllDirty();
+ foreach (var component in m_VisualMaps) component.SetAllDirty();
+ foreach (var component in m_Vessels) component.SetAllDirty();
+ foreach (var component in m_Polars) component.SetAllDirty();
+ foreach (var component in m_RadiusAxes) component.SetAllDirty();
+ foreach (var component in m_AngleAxes) component.SetAllDirty();
+ foreach (var component in m_Radars) component.SetAllDirty();
m_ReinitLabel = true;
m_ReinitTitle = true;
}
diff --git a/Assets/XCharts/Runtime/Internal/DrawSerieRadar.cs b/Assets/XCharts/Runtime/Internal/DrawSerieRadar.cs
index 9120a8f2..18c446f0 100644
--- a/Assets/XCharts/Runtime/Internal/DrawSerieRadar.cs
+++ b/Assets/XCharts/Runtime/Internal/DrawSerieRadar.cs
@@ -18,7 +18,6 @@ namespace XCharts
public BaseChart chart;
private const string INDICATOR_TEXT = "indicator";
private bool m_IsEnterLegendButtom;
- private bool m_RadarsDirty;
Dictionary serieNameSet = new Dictionary();
public DrawSerieRadar(BaseChart chart)
@@ -28,26 +27,11 @@ namespace XCharts
public void InitComponent()
{
- InitIndicator();
+ InitRadars();
}
public void CheckComponent()
{
- var anyDirty = IsAnyRadarDirty();
- if (m_RadarsDirty || anyDirty)
- {
- InitIndicator();
- chart.RefreshBasePainter();
- chart.tooltip.UpdateToTop();
- if (anyDirty)
- {
- foreach (var radar in chart.radars)
- {
- radar.ClearDirty();
- }
- }
- m_RadarsDirty = false;
- }
}
public void Update()
@@ -244,22 +228,31 @@ namespace XCharts
{
}
- private void InitIndicator()
+ private void InitRadars()
{
- ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT);
for (int n = 0; n < chart.radars.Count; n++)
{
Radar radar = chart.radars[n];
+ radar.index = n;
+ InitRadar(radar);
+ }
+ }
+
+ private void InitRadar(Radar radar)
+ {
+ float txtWid = 100;
+ float txtHig = 20;
+ radar.painter = chart.GetPainter(radar.index);
+ radar.refreshComponent = delegate ()
+ {
+ ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT + "_" + radar.index);
radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight);
- int indicatorNum = radar.indicatorList.Count;
- float txtWid = 100;
- float txtHig = 20;
- for (int i = 0; i < indicatorNum; i++)
+ for (int i = 0; i < radar.indicatorList.Count; i++)
{
var indicator = radar.indicatorList[i];
var pos = radar.GetIndicatorPosition(i);
var textStyle = indicator.textStyle;
- var objName = INDICATOR_TEXT + "_" + n + "_" + i;
+ var objName = INDICATOR_TEXT + "_" + radar.index + "_" + i;
var txt = ChartHelper.AddTextObject(objName, chart.transform, new Vector2(0.5f, 0.5f),
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(txtWid, txtHig),
textStyle, chart.theme.radar);
@@ -270,7 +263,8 @@ namespace XCharts
var offset = new Vector3(textStyle.offset.x, textStyle.offset.y);
AxisHelper.AdjustCircleLabelPos(txt, pos, radar.runtimeCenterPos, txtHig, offset);
}
- }
+ };
+ radar.refreshComponent?.Invoke();
}
private void DrawMutipleRadar(VertexHelper vh, Serie serie, int i)