| | |
| | | |
| | | [SerializeField] |
| | | Vector2 m_HollowArea=new Vector2(50,50); |
| | | public Vector2 hollowArea { |
| | | public Vector2 cell { |
| | | get { return m_HollowArea; } |
| | | set { |
| | | m_HollowArea = value; |
| | |
| | | private Image m_Image; |
| | | public Image image { get { return m_Image ?? (m_Image = this.AddMissingComponent<Image>()); } } |
| | | |
| | | private List<Vector3> innerVertices; |
| | | private List<Vector3> outterVertices; |
| | | protected List<Vector3> innerVertices; |
| | | protected List<Vector3> outterVertices; |
| | | |
| | | protected override void Awake() { |
| | | innerVertices = new List<Vector3>(); |
| | |
| | | var height = image.rectTransform.rect.height; |
| | | var outerArea = new Vector2(0.5f * width,0.5f * height); |
| | | |
| | | var realCenter = new Vector2(Mathf.Clamp(center.x,-width * 0.5f + hollowArea.x,width * 0.5f - hollowArea.x), |
| | | Mathf.Clamp(center.y,-height * 0.5f + hollowArea.y,height * 0.5f - hollowArea.y)); |
| | | var realCenter = new Vector2(Mathf.Clamp(center.x,-width * 0.5f + cell.x,width * 0.5f - cell.x), |
| | | Mathf.Clamp(center.y,-height * 0.5f + cell.y,height * 0.5f - cell.y)); |
| | | |
| | | var uv = image.overrideSprite != null ? DataUtility.GetOuterUV(image.overrideSprite) : Vector4.zero; |
| | | |
| | |
| | | var sinA = Mathf.Sin(degree); |
| | | degree = degree - degreeDelta; |
| | | |
| | | position = new Vector3(realCenter.x + cosA * hollowArea.x,realCenter.y + sinA * hollowArea.y); |
| | | position = new Vector3(realCenter.x + cosA * cell.x,realCenter.y + sinA * cell.y); |
| | | uv0 = new Vector2(position.x * uvScaleX + uvCenterX,position.y * uvScaleY + uvCenterY); |
| | | uiVertex = UIUtility.PackageUIVertex(position,uv0,image.color); |
| | | vh.AddVert(uiVertex); |
| | |
| | | return Contains(local,outterVertices,innerVertices); |
| | | } |
| | | |
| | | private bool Contains(Vector2 p,List<Vector3> outterVertices,List<Vector3> innerVertices) { |
| | | protected bool Contains(Vector2 p,List<Vector3> outterVertices,List<Vector3> innerVertices) { |
| | | var crossNumber = 0; |
| | | crossNumber += UIUtility.RayCrossingCount(p,innerVertices); |
| | | crossNumber += UIUtility.RayCrossingCount(p,outterVertices); |