public MyIntersectionResultLineTriangleEx?GetIntersectionInNearSpace(MyEntity entity, ref MyLine worldLine, bool convertLine)
        {
            if (!entity.IsVisible())
            {
                return(null);
            }

            MyLine line = worldLine;

            if (convertLine)
            {
                ConvertLineToNearWorldCoordinates(ref line);
            }

            Matrix drawMatrix = entity.GetWorldMatrixForDraw();

            drawMatrix.Translation += MyCamera.Position;
            Matrix worldInv = Matrix.Invert(drawMatrix);

            MyIntersectionResultLineTriangleEx?ret = entity.ModelLod0.GetTrianglePruningStructure().GetIntersectionWithLine(entity, ref line, ref worldInv, IntersectionFlags.ALL_TRIANGLES);

            if (ret == null)
            {
                foreach (MyEntity child in entity.Children)
                {
                    if (!child.IsVisible())
                    {
                        continue;
                    }

                    drawMatrix              = child.GetWorldMatrixForDraw();
                    drawMatrix.Translation += MyCamera.Position;
                    worldInv = Matrix.Invert(drawMatrix);

                    System.Diagnostics.Debug.Assert(!float.IsNaN(worldInv.M11));

                    ret = child.ModelLod0.GetTrianglePruningStructure().GetIntersectionWithLine(child, ref line, ref worldInv, IntersectionFlags.ALL_TRIANGLES);
                    if (ret != null)
                    {
                        return(ret);
                    }
                }
            }

            return(ret);
        }