예제 #1
0
        public void BuildBoxList(PVSBuilder builder, List <CombineVoxel.BoxVolume> bvs)
        {
            var       vxFull = FullFill(builder);
            BoxVolume bv     = null;

            do
            {
                bv = FindBest(vxFull);
                if (bv != null)
                {
                    bvs.Add(bv);
                }
            } while (bv != null);
        }
예제 #2
0
        private PVSVoxel[,,] FullFill(PVSBuilder builder)
        {
            var result = new PVSVoxel[builder.MaxX, builder.MaxY, builder.MaxZ];

            int xMin = int.MaxValue;
            int yMin = int.MaxValue;
            int zMin = int.MaxValue;
            int xMax = int.MinValue;
            int yMax = int.MinValue;
            int zMax = int.MinValue;

            foreach (var i in Voxels)
            {
                if (i.X <= xMin)
                {
                    xMin = i.X;
                }
                if (i.Y <= yMin)
                {
                    yMin = i.Y;
                }
                if (i.Z <= zMin)
                {
                    zMin = i.Z;
                }
                if (i.X >= xMax)
                {
                    xMax = i.X;
                }
                if (i.Y >= yMax)
                {
                    yMax = i.Y;
                }
                if (i.Z >= zMax)
                {
                    zMax = i.Z;
                }
                result[i.X, i.Y, i.Z] = i;
            }
            return(result);
        }