public TileData DeserializeTileData(Stream stream) { var node = TWXmlNode.GetRootNodeFromStream(stream); var data = new TileData(XMLSerializer.ReadGuid(node.FindChildNode("Guid"))) { Mesh = meshFactory.GetMesh(XMLSerializer.ReadGuid(node.FindChildNode("Mesh"))), Dimensions = XMLSerializer.ReadVector3(node.FindChildNode("Dimensions")) }; var faces = node.FindChildNode("Faces").GetChildNodes(); for (int i = 0; i < faces.Length; i++) { var cFace = faces[i]; var face = (TileFace)Enum.Parse(typeof(TileFace), cFace.GetAttribute("Face")); data.SetFaceType(face, tileFaceTypeFactory.GetTileFaceType(XMLSerializer.ReadGuid(cFace.FindChildNode("Type")))); data.SetLocalWinding(face, XMLSerializer.ReadBoolean(cFace.FindChildNode("Winding"))); } return(data); }