Isosurface.AdaptiveDualContouring.OctreeNode.ProcessCell C# (CSharp) Method

ProcessCell() public method

public ProcessCell ( List indexes ) : void
indexes List
return void
        public void ProcessCell(List<int> indexes)
        {
            if (type == OctreeNodeType.Internal)
            {
                for (int i = 0; i < 8; i++)
                {
                    if (children[i] != null)
                        children[i].ProcessCell(indexes);
                }

                for (int i = 0; i < 12; i++)
                {
                    OctreeNode[] face_nodes = new OctreeNode[2];

                    int c1 = cellProcFaceMask[i, 0];
                    int c2 = cellProcFaceMask[i, 1];

                    face_nodes[0] = children[c1];
                    face_nodes[1] = children[c2];

                    ProcessFace(face_nodes, cellProcFaceMask[i, 2], indexes);
                }

                for (int i = 0; i < 6; i++)
                {
                    OctreeNode[] edge_nodes =
                    {
                        children[cellProcEdgeMask[i, 0]],
                        children[cellProcEdgeMask[i, 1]],
                        children[cellProcEdgeMask[i, 2]],
                        children[cellProcEdgeMask[i, 3]]
                    };

                    ProcessEdge(edge_nodes, cellProcEdgeMask[i, 4], indexes);
                }
            }
        }

Usage Example

コード例 #1
0
        public void CalculateIndexes()
        {
            Indices.Clear();

            tree.ProcessCell(Indices);
            IndexCount = Indices.Count;
            if (Indices.Count == 0)
            {
                return;
            }

            IndexBuffer.SetData <int>(Indices.ToArray());
        }