public void ComputeBoundingVolume()
{
Vector3 vertexAverage = new Vector3(null);
/*compute center as vertex average*/
for(int i = 0; i < OffsetNormal; i += 3) {
vertexAverage.Add3(Mesh[i], Mesh[i + 1], Mesh[i + 2]);
}
vertexAverage.Scale(1.0f / (OffsetNormal / 3.0f));
int vertexIndex = -1;
float dist = -1.0f;
float maxDist = -1.0f;
/*get the maximum distance from center and the furthest vertex*/
for (int i = 0; i < OffsetNormal; i += 3) {
dist = vertexAverage.Distance3(Mesh[i], Mesh[i + 1], Mesh[i + 2]);
if (dist > maxDist) {
maxDist = dist;
vertexIndex = i / 3;
}
}
this.BoundingVolume = new VertexBoundingVolume();
this.BoundingVolume.Center = vertexAverage;
this.BoundingVolume.VertexIndex = vertexIndex;
}