public static void GetTriangleBoundingBox(ref Vector3 a, ref Vector3 b, ref Vector3 c, out BoundingBox aabb)
{
#if !WINDOWS
aabb = new BoundingBox();
#endif
//X axis
if (a.X > b.X && a.X > c.X)
{
//A is max
aabb.Max.X = a.X;
aabb.Min.X = b.X > c.X ? c.X : b.X;
}
else if (b.X > c.X)
{
//B is max
aabb.Max.X = b.X;
aabb.Min.X = a.X > c.X ? c.X : a.X;
}
else
{
//C is max
aabb.Max.X = c.X;
aabb.Min.X = a.X > b.X ? b.X : a.X;
}
//Y axis
if (a.Y > b.Y && a.Y > c.Y)
{
//A is max
aabb.Max.Y = a.Y;
aabb.Min.Y = b.Y > c.Y ? c.Y : b.Y;
}
else if (b.Y > c.Y)
{
//B is max
aabb.Max.Y = b.Y;
aabb.Min.Y = a.Y > c.Y ? c.Y : a.Y;
}
else
{
//C is max
aabb.Max.Y = c.Y;
aabb.Min.Y = a.Y > b.Y ? b.Y : a.Y;
}
//Z axis
if (a.Z > b.Z && a.Z > c.Z)
{
//A is max
aabb.Max.Z = a.Z;
aabb.Min.Z = b.Z > c.Z ? c.Z : b.Z;
}
else if (b.Z > c.Z)
{
//B is max
aabb.Max.Z = b.Z;
aabb.Min.Z = a.Z > c.Z ? c.Z : a.Z;
}
else
{
//C is max
aabb.Max.Z = c.Z;
aabb.Min.Z = a.Z > b.Z ? b.Z : a.Z;
}
}