void MakePrefab() { XDocument doc = new XDocument(); string prefLibName = objectContainer.SocpakPath; prefLibName = prefLibName.TrimStart("./data/".ToCharArray()); prefLibName = prefLibName.Replace("\\", "/"); prefLibName = prefLibName.TrimEnd(".socpak".ToCharArray()); prefLibName = prefLibName.TrimEnd(".soc".ToCharArray()); //./data/ObjectContainers\AC\Area18\area18.socpak //prefLibName = ship.GetVehicleType() + "/" + ship.GetManufacturer() + "/" + prefLibName; XElement PrefabsLibrary = new XElement("PrefabsLibrary"); PrefabsLibrary.Add(new XAttribute("Name", prefLibName)); string prefabName = Path.GetFileNameWithoutExtension(objectContainer.SocpakPath); string prefabId = GuidUtility.GenPrefabID(prefLibName); XElement Prefab = new XElement("Prefab"); Prefab.Add(new XAttribute("Name", prefabName)); Prefab.Add(new XAttribute("Id", prefabId)); Prefab.Add(new XAttribute("Library", prefLibName)); XElement Objects = new XElement("Objects"); XElement Object = new XElement("Object"); string partid = GuidUtility.GenID(); string layerid = GuidUtility.GenID(); string parentid = ""; //parentid = partid; Object = AddObjectsFromObjectContainers(Object, objectContainer, parentid, layerid); Objects.Add(Object); XElement ObjectsNew = new XElement("Objects"); foreach (XElement obj in Objects.Descendants("Object")) { XElement ObjectNew = new XElement("Object"); //ObjectNew.Add(new XElement("Properties")); if (obj.Element("Properties") != null) { ObjectNew.Add(obj.Element("Properties")); } foreach (XAttribute atr in obj.Attributes()) { ObjectNew.Add(atr); } if (obj.Element("Components") != null) { ObjectNew.Add(obj.Element("Components")); } if (obj.Element("Points") != null) { ObjectNew.Add(obj.Element("Points")); } if (ObjectNew.Attribute("Name") != null) { ObjectsNew.Add(ObjectNew); } } Prefab.Add(ObjectsNew); PrefabsLibrary.Add(Prefab); doc.Add(PrefabsLibrary); xmlDoc = doc; xml = doc.ToString(); }