79 lines
2.9 KiB
C#
79 lines
2.9 KiB
C#
using System.Text;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using XUGL;
|
|
|
|
namespace XCharts.Runtime
|
|
{
|
|
[UnityEngine.Scripting.Preserve]
|
|
internal sealed class GridCoord3DHandler : MainComponentHandler<GridCoord3D>
|
|
{
|
|
public override void InitComponent()
|
|
{
|
|
var grid = component;
|
|
grid.painter = chart.painter;
|
|
grid.refreshComponent = delegate ()
|
|
{
|
|
grid.UpdateRuntimeData(chart);
|
|
chart.OnCoordinateChanged();
|
|
};
|
|
grid.refreshComponent();
|
|
}
|
|
|
|
public override void CheckComponent(StringBuilder sb)
|
|
{
|
|
var grid = component;
|
|
if (grid.left >= chart.chartWidth)
|
|
sb.Append("warning:grid->left > chartWidth\n");
|
|
if (grid.right >= chart.chartWidth)
|
|
sb.Append("warning:grid->right > chartWidth\n");
|
|
if (grid.top >= chart.chartHeight)
|
|
sb.Append("warning:grid->top > chartHeight\n");
|
|
if (grid.bottom >= chart.chartHeight)
|
|
sb.Append("warning:grid->bottom > chartHeight\n");
|
|
if (grid.left + grid.right >= chart.chartWidth)
|
|
sb.Append("warning:grid.left + grid.right > chartWidth\n");
|
|
if (grid.top + grid.bottom >= chart.chartHeight)
|
|
sb.Append("warning:grid.top + grid.bottom > chartHeight\n");
|
|
}
|
|
|
|
public override void Update()
|
|
{
|
|
if (chart.isPointerInChart)
|
|
{
|
|
component.context.isPointerEnter = component.Contains(chart.pointerPos);
|
|
}
|
|
else
|
|
{
|
|
component.context.isPointerEnter = false;
|
|
}
|
|
}
|
|
|
|
public override void DrawUpper(VertexHelper vh)
|
|
{
|
|
DrawCoord(vh, component);
|
|
}
|
|
|
|
private void DrawCoord(VertexHelper vh, GridCoord3D grid)
|
|
{
|
|
if (!grid.show) return;
|
|
if (grid.showBorder)
|
|
{
|
|
var borderWidth = chart.theme.axis.lineWidth;
|
|
var borderColor = chart.theme.axis.lineColor;
|
|
if (grid.IsLeft())
|
|
{
|
|
UGL.DrawLine(vh, grid.context.pointA, grid.context.pointE, borderWidth, borderColor);
|
|
UGL.DrawLine(vh, grid.context.pointE, grid.context.pointF, borderWidth, borderColor);
|
|
UGL.DrawLine(vh, grid.context.pointE, grid.context.pointH, borderWidth, borderColor);
|
|
}
|
|
else
|
|
{
|
|
UGL.DrawLine(vh, grid.context.pointD, grid.context.pointH, borderWidth, borderColor);
|
|
UGL.DrawLine(vh, grid.context.pointE, grid.context.pointH, borderWidth, borderColor);
|
|
UGL.DrawLine(vh, grid.context.pointG, grid.context.pointH, borderWidth, borderColor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |