82 lines
2.3 KiB
C#
82 lines
2.3 KiB
C#
#define Graph_And_Chart_PRO
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace ChartAndGraph
|
|
{
|
|
public class CanvasLinesHover : MaskableGraphic
|
|
{
|
|
float mHalfThickness;
|
|
UIVertex[] mTmpVerts = new UIVertex[4];
|
|
|
|
public void Init(float thickness)
|
|
{
|
|
mHalfThickness = thickness * 0.5f;
|
|
SetAllDirty();
|
|
Rebuild(CanvasUpdate.PreRender);
|
|
}
|
|
|
|
IEnumerable<UIVertex> getVerices()
|
|
{
|
|
UIVertex v = new UIVertex();
|
|
v.position = new Vector3(-mHalfThickness, -mHalfThickness);
|
|
v.uv0 = new Vector2(0f, 0f);
|
|
yield return v;
|
|
v.position = new Vector3(-mHalfThickness, mHalfThickness);
|
|
v.uv0 = new Vector2(0f, 1f);
|
|
yield return v;
|
|
v.position = new Vector3(mHalfThickness, mHalfThickness);
|
|
v.uv0 = new Vector2(1f, 1f);
|
|
yield return v;
|
|
v.position = new Vector3(mHalfThickness, -mHalfThickness);
|
|
v.uv0 = new Vector2(1f, 0f);
|
|
yield return v;
|
|
}
|
|
|
|
#if (!UNITY_5_2_0) && (!UNITY_5_2_1)
|
|
protected override void OnPopulateMesh(VertexHelper vh)
|
|
{
|
|
base.OnPopulateMesh(vh);
|
|
vh.Clear();
|
|
int vPos = 0;
|
|
foreach (UIVertex v in getVerices())
|
|
{
|
|
mTmpVerts[vPos++] = v;
|
|
if (vPos == 4)
|
|
{
|
|
UIVertex tmp = mTmpVerts[2];
|
|
mTmpVerts[2] = mTmpVerts[3];
|
|
mTmpVerts[3] = tmp;
|
|
vPos = 0;
|
|
vh.AddUIVertexQuad(mTmpVerts);
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
#pragma warning disable 0672
|
|
#if !UNITY_2017_1_OR_NEWER
|
|
protected override void OnPopulateMesh(Mesh m)
|
|
{
|
|
WorldSpaceChartMesh mesh = new WorldSpaceChartMesh(1);
|
|
int vPos = 0;
|
|
foreach (UIVertex v in getVerices())
|
|
{
|
|
mTmpVerts[vPos++] = v;
|
|
if (vPos == 4)
|
|
{
|
|
vPos = 0;
|
|
|
|
mesh.AddQuad(mTmpVerts[0], mTmpVerts[1], mTmpVerts[2], mTmpVerts[3]);
|
|
}
|
|
}
|
|
mesh.ApplyToMesh(m);
|
|
}
|
|
#endif
|
|
#pragma warning restore 0672
|
|
}
|
|
}
|