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