Example #1
0
    public static List <int> CreateTrianglesClock(IList <int> indices)
    {
        Debug.Assert(indices.Count % 2 == 0);
        List <int> rets = new List <int>();
        var        n    = indices.Count;

        for (var i = 0; i < n / 2; i++)
        {
            var id1 = indices[i + 0];
            var id2 = indices[i + 1];
            var id3 = indices[n - 1 - (i + 1)];
            var id4 = indices[n - 1 - (i + 0)];
            MeshUtils.AddQuad(rets, id1, id2, id3, id4);
        }
        return(rets);
    }
Example #2
0
    public static List <int> CreateSpiderWebTriangles(List <Vector3> vectors, Vector3 center, List <Vector3> predicts, int offset)
    {
        List <int> ret = new List <int>();

        if (predicts.Count != vectors.Count)
        {
            Debug.LogError("predict is not equal vectors");
            return(null);
        }
        int count  = vectors.Count;
        int tailID = count * 2;

        for (int i = 0; i < count; i++)
        {
            //内圈的点,蜘蛛网缝
            int idx1 = i;
            int idx2 = (i + 1) % count;
            int idx3 = tailID;
            ret.Add(offset + idx1);
            ret.Add(offset + idx2);
            ret.Add(offset + idx3);
        }

        //外圈的点
        for (int i = 0; i < count; i++)
        {
            int idx1 = i + count;
            int idx2 = (i + count + 1) % (count * 2) == 0 ? count : (i + count + 1);
            int idx3 = i % count;
            int idx4 = (i + 1) % count;

            MeshUtils.AddQuad(ret, offset + idx1, offset + idx2, offset + idx4, offset + idx3);
        }

        return(ret);
    }