Пример #1
0
        /// <summary>
        /// Remove and create new triangles in bounding box. Very Slow!
        /// </summary>
        /// <param name="graphicsDevice"></param>
        /// <param name="isolevel"></param>
        /// <param name="primitive"></param>
        /// <param name="box"></param>
        public static void ReProcess(GraphicsDevice graphicsDevice, double isolevel, ref VoxelChunk primitive, BoundingBox box)
        {
            //primitive.Remove( box );
            primitive.RemoveBorderCubes(box);

            int triNum = 0;
            int minx   = (int)box.Minimum.X;
            int miny   = (int)box.Minimum.Y;
            int minz   = (int)box.Minimum.Z;
            int maxx   = (int)box.Maximum.X;
            int maxy   = (int)box.Maximum.Y;
            int maxz   = (int)box.Maximum.Z;

            for (int i = minx; i < maxx; i++)
            {
                for (int j = miny; j < maxy; j++)
                {
                    for (int k = minz; k < maxz; k++)
                    {
                        triNum = Polygonise(i, j, k, isolevel);
                        if (triNum > 0)
                        {
                            primitive.borderCubes.Add(new Vector3(i, j, k));
                            Build(ref primitive, triNum);
                        }
                    }
                }
            }

            //if( primitive.VertexCount == 0 )
            //{
            //	primitive.isDrawable = false;
            //}
            //else
            //{
            //	primitive.InitializePrimitive( graphicsDevice );
            //}
        }