Beispiel #1
0
 public zz2DBounds(zz2DBounds other)
 {
     mMin = other.mMin;
     mMax = other.mMax;
 }
Beispiel #2
0
 public bool Contains(zz2DBounds pBound)
 {
     return Contains(pBound.mMax) && Contains(pBound.mMin);
 }
    /// <summary>
    /// 输入多边形信息
    /// </summary>
    /// <param name="points"></param>
    public void setShape(Vector2[] points )
    {
        //Debug.Log(points.Length);
        if (points.Length < 2)
        {
            Debug.LogError("points.Length < 2");
            return;
        }
        shapePoint = points;

        mConvexPoints = new LinkedList<zz2DPoint>();
        mConcavePoints = new LinkedList<zz2DPoint>();
        mAllPoints = new LinkedList<zz2DPoint>();

        //第一个点
        zz2DPoint lFirstPoint = new zz2DPoint(points[0]);
        bounds = new zz2DBounds(points[0]);
        lFirstPoint.listNode = mAllPoints.AddLast(lFirstPoint);

        //第二个点
        zz2DPoint lPrePoint = addPoint(points[1], lFirstPoint);

        for (int i = 2; i < points.Length; ++i)
        {
            zz2DPoint lNewPoint = addPoint(points[i], lPrePoint);
            checkConcave(lPrePoint);
            lPrePoint = lNewPoint;
        }
        zz2DPoint lLastPoint = lPrePoint;

        linkPoint(lLastPoint, lFirstPoint);
        checkConcave(lLastPoint);
        checkConcave(lFirstPoint);
        //Debug.Log(mAllPoints.Count);
    }