示例#1
0
        public VertexInfo(int idx, MeshDataTool mdt, VertexInfo[] storage)
        {
            this.storage = storage;
            this.vertIdx = idx;
            this.mdt     = mdt;
            edges        = mdt.GetVertexEdges(idx);
            faces        = mdt.GetVertexFaces(idx);
            this.pos     = mdt.GetVertex(idx);

            adjacentVerticies = new int[edges.Length];
            for (var i = 0; i < edges.Length; i++)
            {
                var edgeIdx   = edges[i];
                var edgeVert0 = mdt.GetEdgeVertex(edgeIdx, 0);
                var edgeVert1 = mdt.GetEdgeVertex(edgeIdx, 1);
                var adjacent  = edgeVert0 != idx ? edgeVert0 : edgeVert1;
                adjacentVerticies[i] = adjacent;
            }

            //better heuristic for sorting (vert with most adjcent faces)
            foreach (var faceIdx in faces)
            {
                //adjadj++;
                for (var i = 0; i < 3; i++)
                {
                    var faceVertIdx = mdt.GetFaceVertex(faceIdx, i);
                    adjadj += mdt.GetVertexFaces(faceVertIdx).Length;
                }
            }
        }