mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-30 13:28:47 +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.pointerItemDataIndex = serieData.index;
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serieData.context.highlight = true;
|
serieData.context.highlight = true;
|
||||||
SerieHelper.GetItemColor(out color, out toColor, serie, serieData, chart.theme, SerieState.Emphasis);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.context.highlight = false;
|
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);
|
serieData.interact.SetColor(ref needInteract, color, toColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serie.context.pointerItemDataIndex = i;
|
serie.context.pointerItemDataIndex = i;
|
||||||
|
needInteract = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RadarType.Single:
|
case RadarType.Single:
|
||||||
|
needInteract = false;
|
||||||
for (int i = 0; i < serie.data.Count; i++)
|
for (int i = 0; i < serie.data.Count; i++)
|
||||||
{
|
{
|
||||||
var serieData = serie.data[i];
|
var serieData = serie.data[i];
|
||||||
@@ -162,10 +163,14 @@ namespace XCharts.Runtime
|
|||||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
||||||
if (Vector3.Distance(chart.pointerPos, serieData.context.position) < size * 2)
|
if (Vector3.Distance(chart.pointerPos, serieData.context.position) < size * 2)
|
||||||
{
|
{
|
||||||
serie.highlight = true;
|
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serie.context.pointerItemDataIndex = i;
|
serie.context.pointerItemDataIndex = i;
|
||||||
break;
|
serieData.context.highlight = true;
|
||||||
|
needInteract = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
serieData.context.highlight = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!serie.context.pointerEnter && areaStyle != null)
|
if (!serie.context.pointerEnter && areaStyle != null)
|
||||||
@@ -178,10 +183,10 @@ namespace XCharts.Runtime
|
|||||||
var p2 = n >= dataPoints.Count - 1 ? dataPoints[0] : dataPoints[n + 1];
|
var p2 = n >= dataPoints.Count - 1 ? dataPoints[0] : dataPoints[n + 1];
|
||||||
if (UGLHelper.IsPointInTriangle(p1.context.position, center, p2.context.position, chart.pointerPos))
|
if (UGLHelper.IsPointInTriangle(p1.context.position, center, p2.context.position, chart.pointerPos))
|
||||||
{
|
{
|
||||||
serie.highlight = true;
|
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serie.context.pointerItemDataIndex = n;
|
serie.context.pointerItemDataIndex = n;
|
||||||
p1.context.highlight = true;
|
p1.context.highlight = true;
|
||||||
|
needInteract = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public static SerieState GetSerieState(Serie serie)
|
public static SerieState GetSerieState(Serie serie)
|
||||||
{
|
{
|
||||||
if (serie.highlight || serie.context.pointerEnter) return SerieState.Emphasis;
|
if (serie.highlight) return SerieState.Emphasis;
|
||||||
return serie.state;
|
return serie.state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1940,5 +1940,25 @@ namespace XUGL
|
|||||||
angle += smoothness;
|
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