using UnityEngine;
|
|
using System.Collections;
|
|
using UnityEngine.UI;
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
[RequireComponent(typeof(PolygonCollider2D))]
|
|
[AddComponentMenu("UI/UIPolygon")]
|
|
public class UIPolygon : Image
|
|
{
|
|
private PolygonCollider2D _polygon = null;
|
|
private PolygonCollider2D polygon
|
|
{
|
|
get{
|
|
if(_polygon == null )
|
|
_polygon = GetComponent<PolygonCollider2D>();
|
|
return _polygon;
|
|
}
|
|
}
|
|
protected UIPolygon()
|
|
{
|
|
useLegacyMeshGeneration = true;
|
|
}
|
|
protected override void OnPopulateMesh(VertexHelper vh)
|
|
{
|
|
vh.Clear();
|
|
}
|
|
public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
|
|
{
|
|
return polygon.OverlapPoint( eventCamera.ScreenToWorldPoint(screenPoint));
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
protected override void Reset()
|
|
{
|
|
base.Reset();
|
|
transform.localPosition = Vector3.zero;
|
|
float w = (rectTransform.sizeDelta.x *0.5f) + 0.1f;
|
|
float h = (rectTransform.sizeDelta.y*0.5f) + 0.1f;
|
|
polygon.points = new Vector2[]
|
|
{
|
|
new Vector2(-w,-h),
|
|
new Vector2(w,-h),
|
|
new Vector2(w,h),
|
|
new Vector2(-w,h)
|
|
};
|
|
}
|
|
#endif
|
|
}
|
|
#if UNITY_EDITOR
|
|
[CustomEditor(typeof(UIPolygon), true)]
|
|
public class UIPolygonInspector : Editor
|
|
{
|
|
public override void OnInspectorGUI()
|
|
{
|
|
}
|
|
}
|
|
#endif
|