Esempio n. 1
0
        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);
        }