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); }