public object Deserialize(XElement root, Deserializer deserializer) { object crObject = deserializer.GetCRObject(root); if (crObject != null) { return(crObject); } Body body = (Body)deserializer.DeserializeObject(root.Element("Body")); Shape shape = (Shape)deserializer.DeserializeObject(root.Element("Shape")); Fixture fixture = new Fixture(body, shape); deserializer.DeserializeMetadata(root, fixture); deserializer.AddToCRList(root, fixture); fixture.CollisionCategories = (Category)DefaultConverters.StringToInt(root.Attribute("CategoryBits").Value); fixture.CollidesWith = (Category)DefaultConverters.StringToInt(root.Attribute("MaskBits").Value); fixture.CollisionGroup = (short)DefaultConverters.StringToShort(root.Attribute("GroupIndex").Value); fixture.Friction = (float)DefaultConverters.StringToFloat(root.Attribute("Friction").Value); fixture.IsSensor = (bool)DefaultConverters.StringToBool(root.Attribute("IsSensor").Value); fixture.Restitution = (float)DefaultConverters.StringToFloat(root.Attribute("Restitution").Value); return(fixture); }