mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-14 20:00:09 +00:00
[feature][UGL] add UGL.DrawPolyon API
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = i;
|
||||
needInteract = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1940,5 +1940,25 @@ namespace XUGL
|
||||
angle += smoothness;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 填充任意多边形(目前只支持凸多边形)
|
||||
/// </summary>
|
||||
/// <param name="vh"></param>
|
||||
/// <param name="points"></param>
|
||||
/// <param name="color"></param>
|
||||
public static void DrawPolygon(VertexHelper vh, List<Vector3> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user