Exemplo n.º 1
0
        /// <summary>
        /// TODO: write tests for boundingbox calculation
        /// </summary>
        /// <param name="mesh"></param>
        /// <returns></returns>
        public static BoundingBox CalculateBoundingBox(IMesh mesh)
        {
            var ret = new XnaBoundingBox();

            foreach (var part in mesh.GetCoreData().Parts)
            {
                var positions = part.MeshPart.GetGeometryData().GetSourceVector3(MeshPartGeometryData.Semantic.Position);
                if (positions.Length == 0)
                {
                    continue;
                }

                //TODO: check this!
                XnaVector3.Transform(positions, ref part.ObjectMatrix, positions);
                ret = ret.MergeWith(XnaBoundingBox.CreateFromPoints(positions));
            }
            return(ret.dx());
        }