private static AxisAlignedBoundingBox GetEnclosingBoundingBox(ModelInstance modelInstance) { var boundingBox = default(AxisAlignedBoundingBox); var first = true; foreach (var subObject in modelInstance.Model.SubObjects) { var transformedBoundingBox = AxisAlignedBoundingBox.Transform(subObject.RenderObject.BoundingBox, modelInstance.ModelBoneInstances[subObject.Bone.Index].Matrix); if (first) { boundingBox = transformedBoundingBox; first = false; } else { boundingBox = AxisAlignedBoundingBox.CreateMerged( boundingBox, transformedBoundingBox); } } return(boundingBox); }
public void CreateMerged(Vector3 firstMin, Vector3 firstMax, Vector3 secondMin, Vector3 secondMax, Vector3 expectedMin, Vector3 expectedMax) { var first = new AxisAlignedBoundingBox(firstMin, firstMax); var second = new AxisAlignedBoundingBox(secondMin, secondMax); var merged = AxisAlignedBoundingBox.CreateMerged(first, second); Assert.Equal(expectedMin, merged.Min); Assert.Equal(expectedMax, merged.Max); }