Files
SoulliesOfficial d09b58fd80 架构大更
2026-03-20 11:56:50 -04:00

85 lines
2.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// Credit ömer faruk sayılır
/// Sourced from - https://bitbucket.org/snippets/Lordinarius/nrn4L
namespace UnityEngine.UI.Extensions
{
public class ShineEffect : MaskableGraphic
{
[SerializeField] private float yoffset = -1;
[SerializeField] private float width = 1;
public float Yoffset
{
get => yoffset;
set
{
SetVerticesDirty();
yoffset = value;
}
}
public float Width
{
get => width;
set
{
SetAllDirty();
width = value;
}
}
protected override void OnPopulateMesh(VertexHelper vh)
{
var r = GetPixelAdjustedRect();
var v = new Vector4(r.x, r.y, r.x + r.width, r.y + r.height);
var dif = (v.w - v.y) * 2;
Color32 color32 = color;
vh.Clear();
color32.a = 0;
vh.AddVert(new Vector3(v.x - 50, width * v.y + yoffset * dif), color32, new Vector2(0f, 0f));
vh.AddVert(new Vector3(v.z + 50, width * v.y + yoffset * dif), color32, new Vector2(1f, 0f));
color32.a = (byte)(color.a * 255);
vh.AddVert(new Vector3(v.x - 50, width * (v.y / 4) + yoffset * dif), color32, new Vector2(0f, 1f));
vh.AddVert(new Vector3(v.z + 50, width * (v.y / 4) + yoffset * dif), color32, new Vector2(1f, 1f));
color32.a = (byte)(color.a * 255);
vh.AddVert(new Vector3(v.x - 50, width * (v.w / 4) + yoffset * dif), color32, new Vector2(0f, 1f));
vh.AddVert(new Vector3(v.z + 50, width * (v.w / 4) + yoffset * dif), color32, new Vector2(1f, 1f));
color32.a = (byte)(color.a * 255);
color32.a = 0;
vh.AddVert(new Vector3(v.x - 50, width * v.w + yoffset * dif), color32, new Vector2(0f, 1f));
vh.AddVert(new Vector3(v.z + 50, width * v.w + yoffset * dif), color32, new Vector2(1f, 1f));
vh.AddTriangle(0, 1, 2);
vh.AddTriangle(2, 3, 1);
vh.AddTriangle(2, 3, 4);
vh.AddTriangle(4, 5, 3);
vh.AddTriangle(4, 5, 6);
vh.AddTriangle(6, 7, 5);
}
public void Triangulate(VertexHelper vh)
{
var triangleCount = vh.currentVertCount - 2;
Debug.Log(triangleCount);
for (var i = 0; i <= triangleCount / 2 + 1; i += 2)
{
vh.AddTriangle(i, i + 1, i + 2);
vh.AddTriangle(i + 2, i + 3, i + 1);
}
}
#if UNITY_EDITOR
public override void OnRebuildRequested()
{
base.OnRebuildRequested();
}
#endif
}
}