private Solid composeSolid(int faceStatus1, int faceStatus2, int faceStatus3)
{
var vertices = new List<Vertex>();
var indices = new List<int>();
var colors = new List<Color3f>();
//group the elements of the two solids whose faces fit with the desired status
groupObjectComponents(object1, vertices, indices, colors, faceStatus1, faceStatus2);
groupObjectComponents(object2, vertices, indices, colors, faceStatus3, faceStatus3);
//turn the arrayLists to arrays
Point3d[] verticesArray = new Point3d[vertices.Count];
for (int i = 0; i < vertices.Count; i++)
{
verticesArray[i] = vertices[i].getPosition();
}
int[] indicesArray = new int[indices.Count];
for (int i = 0; i < indices.Count; i++)
{
indicesArray[i] = indices[i];
}
Color3f[] colorsArray = new Color3f[colors.Count];
for (int i = 0; i < colors.Count; i++)
{
colorsArray[i] = colors[i].Clone();
}
//returns the solid containing the grouped elements
return new Solid(verticesArray, indicesArray, colorsArray);
}