BITKit/Src/Unity/Scripts/UX/Library/CellContainer.cs

53 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
namespace BITKit.UX
{
public class CellContainer : VisualElement
{
public new class UxmlFactory : UxmlFactory<CellContainer, UxmlTraits> { }
public int CellSize { get; set; } = 64;
public CellContainer()
{
RegisterCallback<CustomStyleResolvedEvent>(x =>
{
MarkDirtyRepaint();
});
generateVisualContent += GenerateVisualContent;
}
private void GenerateVisualContent(MeshGenerationContext obj)
{
if(contentRect.height<=0 || contentRect.width<=0)return;
var painter = obj.painter2D;
painter.lineWidth = resolvedStyle.borderTopWidth;
painter.strokeColor = resolvedStyle.borderTopColor;
var yCount = contentRect.height / CellSize;
var xCount = contentRect.width / CellSize;
for (var x = 1; x < xCount; x++)
{
painter.BeginPath();
painter.MoveTo(new Vector2(x * CellSize, 0));
painter.LineTo(new Vector2(x * CellSize, contentRect.height));
painter.Stroke();
}
for (var y = 1; y < yCount; y++)
{
painter.BeginPath();
painter.MoveTo(new Vector2(0, y * CellSize));
painter.LineTo(new Vector2(contentRect.width, y * CellSize));
painter.Stroke();
}
}
}
}