public static bool buildConvexSides(IConvexVolume c, IVec3ArrayIterator op)
 {
     for (int i = 0; i < c.getNumPlanes(); i++)
     {
         Plane   sidePlane = c.getPlane(i).getOpposite();
         Polygon p         = new Polygon(sidePlane, c.getNumPlanes());
         for (int j = 0; j < c.getNumPlanes(); j++)
         {
             if (i == j)
             {
                 continue;
             }
             p.clipByPlane(c.getPlane(j));
         }
         if (p.getNumPoints() > 2)
         {
             op.addVec3Array(p.getPoints(), p.getNumPoints());
         }
     }
     return(false);
 }
        public override void addConvexVolume(IConvexVolume v)
        {
            if (bMergeBrushPolygonVertices == false)
            {
                ConvexVerticesBuilder.buildConvexSides(v, obj);
            }
            else
            {
                if (merger == null)
                {
                    merger = new PolygonVerticesMerger();
                }
                else
                {
                    merger.reset();
                }
                ConvexVerticesBuilder.buildConvexSides(v, merger);

                obj.addIndexedMesh(merger.getXYZs(), merger.getNumUniquePoints(), merger.getNumFaces(), merger.getFaceIndices(), merger.getFaceOffsets(), merger.getFaceVertsCount());
            }
        }
 public abstract void addConvexVolume(IConvexVolume v);