public XElement Serialize(string name, object rootObject, Serializer serializer)
        {
            XElement root = new XElement(name);

            //Обрабатываем кольцевые ссылки
            if (serializer.CheckCircularReferences(root, rootObject))
            {
                return(root);
            }

            //Сериализуем метаданные
            Serializer.SerializeMetadata(root, rootObject);
            //Сериализуем имя типа
            Serializer.SerializeTypeName(root, typeof(Fixture));

            Fixture fixture = (Fixture)rootObject;

            root.Add(serializer.SerializeObject("Shape", fixture.Shape));
            root.Add(
                new XAttribute("CategoryBits", DefaultConverters.IntToString((int)fixture.CollisionCategories)),
                new XAttribute("MaskBits", DefaultConverters.IntToString((int)fixture.CollidesWith)),
                new XAttribute("GroupIndex", DefaultConverters.ShortToString(fixture.CollisionGroup)),
                new XAttribute("Friction", DefaultConverters.FloatToString(fixture.Friction)),
                new XAttribute("IsSensor", DefaultConverters.BoolToString(fixture.IsSensor)),
                new XAttribute("Restitution", DefaultConverters.FloatToString(fixture.Restitution)),
                serializer.SerializeObject("Body", fixture.Body));
            return(root);
        }