Пример #1
0
        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();
        }