public override float ComputeMaximumRadius()
{
//This can overestimate the actual maximum radius, but such is the defined behavior of the ComputeMaximumRadius function. It's not exact; it's an upper bound on the actual maximum.
float maxRadius = 0;
for (int i = 0; i < shapes.Count; i++)
{
maxRadius += shapes.WrappedList.Elements[i].CollisionShape.ComputeMaximumRadius();
}
return maxRadius + collisionMargin;
}