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); }
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); }