diff --git a/Runtime/Serie/Bar/BarHandler.cs b/Runtime/Serie/Bar/BarHandler.cs
index fabb1576..92b8d54d 100644
--- a/Runtime/Serie/Bar/BarHandler.cs
+++ b/Runtime/Serie/Bar/BarHandler.cs
@@ -103,13 +103,13 @@ namespace XCharts.Runtime
serie.context.pointerItemDataIndex = serieData.index;
serie.context.pointerEnter = true;
serieData.context.highlight = true;
- SerieHelper.GetItemColor(out color, out toColor, serie, serieData, chart.theme, SerieState.Emphasis);
}
else
{
serieData.context.highlight = false;
- SerieHelper.GetItemColor(out color, out toColor, serie, serieData, chart.theme, SerieState.Normal);
}
+ var state = SerieHelper.GetSerieState(serie, serieData, true);
+ SerieHelper.GetItemColor(out color, out toColor, serie, serieData, chart.theme, state);
serieData.interact.SetColor(ref needInteract, color, toColor);
}
}
diff --git a/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Runtime/Serie/Line/LineHandler.GridCoord.cs
index 55938982..a3f5c193 100644
--- a/Runtime/Serie/Line/LineHandler.GridCoord.cs
+++ b/Runtime/Serie/Line/LineHandler.GridCoord.cs
@@ -85,6 +85,7 @@ namespace XCharts.Runtime
{
serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = i;
+ needInteract = true;
}
}
}
diff --git a/Runtime/Serie/Radar/RadarHandler.cs b/Runtime/Serie/Radar/RadarHandler.cs
index 68918c14..5b7b7fc7 100644
--- a/Runtime/Serie/Radar/RadarHandler.cs
+++ b/Runtime/Serie/Radar/RadarHandler.cs
@@ -155,6 +155,7 @@ namespace XCharts.Runtime
}
break;
case RadarType.Single:
+ needInteract = false;
for (int i = 0; i < serie.data.Count; i++)
{
var serieData = serie.data[i];
@@ -162,10 +163,14 @@ namespace XCharts.Runtime
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
if (Vector3.Distance(chart.pointerPos, serieData.context.position) < size * 2)
{
- serie.highlight = true;
serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = i;
- break;
+ serieData.context.highlight = true;
+ needInteract = true;
+ }
+ else
+ {
+ serieData.context.highlight = false;
}
}
if (!serie.context.pointerEnter && areaStyle != null)
@@ -178,10 +183,10 @@ namespace XCharts.Runtime
var p2 = n >= dataPoints.Count - 1 ? dataPoints[0] : dataPoints[n + 1];
if (UGLHelper.IsPointInTriangle(p1.context.position, center, p2.context.position, chart.pointerPos))
{
- serie.highlight = true;
serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = n;
p1.context.highlight = true;
+ needInteract = true;
break;
}
}
diff --git a/Runtime/Serie/SerieHelper.cs b/Runtime/Serie/SerieHelper.cs
index 8ad651bb..696b09af 100644
--- a/Runtime/Serie/SerieHelper.cs
+++ b/Runtime/Serie/SerieHelper.cs
@@ -244,7 +244,7 @@ namespace XCharts.Runtime
public static SerieState GetSerieState(Serie serie)
{
- if (serie.highlight || serie.context.pointerEnter) return SerieState.Emphasis;
+ if (serie.highlight) return SerieState.Emphasis;
return serie.state;
}
diff --git a/Runtime/XUGL/UGL.cs b/Runtime/XUGL/UGL.cs
index 595342f3..a5520086 100644
--- a/Runtime/XUGL/UGL.cs
+++ b/Runtime/XUGL/UGL.cs
@@ -1940,5 +1940,25 @@ namespace XUGL
angle += smoothness;
}
}
+
+ ///
+ /// 填充任意多边形(目前只支持凸多边形)
+ ///
+ ///
+ ///
+ ///
+ public static void DrawPolygon(VertexHelper vh, List points, Color32 color)
+ {
+ if (points.Count < 3 || UGLHelper.IsClearColor(color)) return;
+ var cv = vh.currentVertCount;
+ foreach (var pos in points)
+ {
+ vh.AddVert(pos, color, Vector2.zero);
+ }
+ for (int i = 2; i < points.Count; i++)
+ {
+ vh.AddTriangle(cv, cv + i - 1, cv + i);
+ }
+ }
}
}
\ No newline at end of file