using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ShineEffect : MaskableGraphic {
[SerializeField]
float yoffset = -1;
public float Yoffset {
get {
return yoffset;
}
set {
SetVerticesDirty();
yoffset = value;
}
}
[SerializeField]
float width = 1;
public float Width {
get {
return 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);
float dif = (v.w-v.y)*2;
Color32 color32 = color;
vh.Clear();
color32.a = (byte)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 = (byte)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) {
int triangleCount = vh.currentVertCount - 2;
Debug.Log(triangleCount);
for (int i = 0; i <= triangleCount/2+1; i+=2) {
vh.AddTriangle(i, i+1, i+2);
vh.AddTriangle(i+2, i+3, i+1);
}
}
public override void OnRebuildRequested ()
{
base.OnRebuildRequested ();
}
}