Ejemplo n.º 1
0
        private void CreateOARFile(ImportSettings settings, string filename)
        {
            string rootDir = ExportCommand.dumpDir + "../oarfile/";

            OarFile.PrepareDir(rootDir);

            // Objects
            foreach (PrimToCreate parent in parents)
            {
                var ls = new Linkset()
                {
                    Parent = parent
                };
                parent.Link = ls;
                LocalScene.Links.Add(ls);
            }
            foreach (PrimToCreate ch in childs)
            {
                var pp = ch.ParentPrim;
                if (pp == null)
                {
                    continue;
                }
                pp.Link.ChildAdd(ch);
            }
            foreach (var ls in LockInfo.CopyOf(LocalScene.Links))
            {
                ls.Children.Sort(compareLocalIDs);
                if (ls.Parent.IsAsset)
                {
                    LocalScene.AssetLinks.Add(ls);
                    LocalScene.Links.Remove(ls);
                }
            }
            foreach (var ls in LocalScene.Links)
            {
                OarFile.SaveLinkset(ls, rootDir + "objects/" + ls.Parent.NewID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[AssetType.Object], false, settings);
            }
            // Assets
            foreach (ItemToCreate asset in LocalScene.Assets)
            {
                File.WriteAllBytes(rootDir + "assets/" + asset.OldID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[asset.AssetType], asset.AssetData);
            }
            foreach (var ls in LocalScene.AssetLinks)
            {
                OarFile.SaveLinkset(ls, rootDir + "assets/" + ls.Parent.NewID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[AssetType.Object], true, settings);
            }
            // Terrain
            if (settings.ContainsKey("terrain"))
            {
                ExportCommand.Exporting.SaveTerrainRaw32(rootDir + "terrains/heightmap.raw");
            }

            string parcelDirs = rootDir + "landdata/";

            Directory.CreateDirectory(parcelDirs);

            OarFile.PackageArchive(rootDir, filename, settings.ContainsKey("terrain"), settings.ContainsKey("land"));
        }
Ejemplo n.º 2
0
 static public void SaveLinkset(Linkset linkset, string filename, bool oldFormat, ImportSettings options)
 {
     try
     {
         using (StreamWriter stream = new StreamWriter(filename))
         {
             XmlTextWriter writer = new XmlTextWriter(stream);
             SOGToXml2(writer, linkset, oldFormat, options);
             writer.Flush();
         }
     }
     catch (Exception ex)
     {
         Logger.Log("Failed saving linkset: " + ex.Message, Helpers.LogLevel.Error);
     }
 }
 static public void SaveLinkset(Linkset linkset, string filename, bool oldFormat, ImportSettings options)
 {
     try
     {
         using (StreamWriter stream = new StreamWriter(filename))
         {
             XmlTextWriter writer = new XmlTextWriter(stream);
             SOGToXml2(writer, linkset, oldFormat, options);
             writer.Flush();
         }
     }
     catch (Exception ex)
     {
         Logger.Log("Failed saving linkset: " + ex.Message, Helpers.LogLevel.Error);
     }
 }
Ejemplo n.º 4
0
        public static void SavePrims(DoubleDictionary <uint, UUID, Primitive> prims, string path, ImportSettings options)
        {
            // Delete all of the old linkset files
            try
            {
                Directory.Delete(path, true);
                Directory.CreateDirectory(path);
            }
            catch (Exception ex)
            {
                Logger.Log("Failed saving prims: " + ex.Message, Helpers.LogLevel.Error);
                return;
            }

            // Copy the double dictionary to a temporary list for iterating
            List <Primitive> primList = new List <Primitive>();

            prims.ForEach(delegate(Primitive prim)
            {
                primList.Add(prim);
            });

            foreach (Primitive p in primList)
            {
                if (p.ParentID == 0)
                {
                    Linkset linkset = new Linkset();
                    linkset.Parent = ImportCommand.Importing.APrimToCreate(p);

                    prims.ForEach(delegate(Primitive q)
                    {
                        if (q.ParentID == p.LocalID)
                        {
                            linkset.Children.Add(ImportCommand.Importing.APrimToCreate(q));
                        }
                    });

                    OarFile.SaveLinkset(linkset, path + "/Primitive_" + linkset.Parent.NewID.ToString() + ".xml", false,
                                        options);
                }
            }
        }
Ejemplo n.º 5
0
        static void SOGToXml2(XmlTextWriter writer, Linkset linkset, bool oldFormat, ImportSettings options)
        {
            options.CurLink = linkset;
            writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty);
            if (oldFormat) writer.WriteStartElement(String.Empty, "RootPart", String.Empty);
            options.CurPrim = linkset.Parent;
            SOPToXml(writer, linkset.Parent.Prim, 0, null, GetTaskInv(linkset.Parent), options);
            if (oldFormat) writer.WriteEndElement();
            writer.WriteStartElement(String.Empty, "OtherParts", String.Empty);

            //uint linkNum = sop.LocalID - parent.LocalID;
            int linkNum = 1;
            foreach (var child in linkset.Children)
            {
                options.CurPrim = child;
                if (oldFormat) writer.WriteStartElement(String.Empty, "Part", String.Empty);
                SOPToXml(writer, child.Prim, linkNum++, linkset.Parent.Prim, GetTaskInv(child), options);
                if (oldFormat) writer.WriteEndElement();                
            }

            writer.WriteEndElement();
            writer.WriteEndElement();
        }
        static void SOGToXml2(XmlTextWriter writer, Linkset linkset, bool oldFormat, ImportSettings options)
        {
            options.CurLink = linkset;
            writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty);
            if (oldFormat)
            {
                writer.WriteStartElement(String.Empty, "RootPart", String.Empty);
            }
            options.CurPrim = linkset.Parent;
            SOPToXml(writer, linkset.Parent.Prim, 0, null, GetTaskInv(linkset.Parent), options);
            if (oldFormat)
            {
                writer.WriteEndElement();
            }
            writer.WriteStartElement(String.Empty, "OtherParts", String.Empty);

            //uint linkNum = sop.LocalID - parent.LocalID;
            int linkNum = 1;

            foreach (var child in linkset.Children)
            {
                options.CurPrim = child;
                if (oldFormat)
                {
                    writer.WriteStartElement(String.Empty, "Part", String.Empty);
                }
                SOPToXml(writer, child.Prim, linkNum++, linkset.Parent.Prim, GetTaskInv(child), options);
                if (oldFormat)
                {
                    writer.WriteEndElement();
                }
            }

            writer.WriteEndElement();
            writer.WriteEndElement();
        }
Ejemplo n.º 7
0
        private void CreateOARFile(ImportSettings settings, string filename)
        {
            string rootDir = ExportCommand.dumpDir + "../oarfile/";

            OarFile.PrepareDir(rootDir);

            // Objects
            foreach (PrimToCreate parent in parents)
            {
                var ls = new Linkset()
                             {
                                 Parent = parent
                             };
                parent.Link = ls;
                LocalScene.Links.Add(ls);
            }
            foreach (PrimToCreate ch in childs)
            {
                var pp = ch.ParentPrim;
                if (pp == null)
                {
                    continue;
                }
                pp.Link.ChildAdd(ch);
            }
            foreach (var ls in LockInfo.CopyOf(LocalScene.Links))
            {
                ls.Children.Sort(compareLocalIDs);
                if (ls.Parent.IsAsset)
                {
                    LocalScene.AssetLinks.Add(ls);
                    LocalScene.Links.Remove(ls);
                }
            }
            foreach (var ls in LocalScene.Links)
            {
                OarFile.SaveLinkset(ls, rootDir + "objects/" + ls.Parent.NewID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[AssetType.Object], false, settings);
            }
            // Assets
            foreach (ItemToCreate asset in LocalScene.Assets)
            {
                File.WriteAllBytes(rootDir + "assets/" + asset.OldID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[asset.AssetType], asset.AssetData);
            }
            foreach (var ls in LocalScene.AssetLinks)
            {
                OarFile.SaveLinkset(ls, rootDir + "assets/" + ls.Parent.NewID + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[AssetType.Object], true, settings);
            }
            // Terrain
            if (settings.ContainsKey("terrain")) ExportCommand.Exporting.SaveTerrainRaw32(rootDir + "terrains/heightmap.raw");

            string parcelDirs = rootDir + "landdata/";
            Directory.CreateDirectory(parcelDirs);

            OarFile.PackageArchive(rootDir, filename, settings.ContainsKey("terrain"), settings.ContainsKey("land"));
        }
Ejemplo n.º 8
0
        private void CheckTasks(ImportSettings settings)
        {
            foreach (PrimToCreate parent in LockInfo.CopyOf(parents))
            {
                var ls = new Linkset()
                {
                    Parent = parent
                };
                parent.Link = ls;
                LocalScene.Links.Add(ls);
            }
            foreach (PrimToCreate ch in childs)
            {
                var pp = ch.ParentPrim;
                if (pp == null)
                {
                    continue;
                }
                pp.Link.ChildAdd(ch);
            }
            foreach (var ls in LockInfo.CopyOf(LocalScene.Links))
            {
                ls.Children.Sort(compareLocalIDs);
                if (ls.Parent.IsAsset)
                {
                    LocalScene.AssetLinks.Add(ls);
                    LocalScene.Links.Remove(ls);
                }
            }

            int found = 0;
            Dictionary <UUID, TaskFileInfo> item2TO  = new Dictionary <UUID, TaskFileInfo>();
            List <TaskFileInfo>             mssingTO = new List <TaskFileInfo>();
            List <TaskFileInfo>             duped    = new List <TaskFileInfo>();

            foreach (var file in Directory.GetFiles(ExportCommand.dumpDir, "*.objectAsset"))
            {
                break;
                found++;
                string   fileString = File.ReadAllText(file);
                string[] c          = fileString.Split(',');
                try
                {
                    TaskFileInfo to = new TaskFileInfo()
                    {
                        OldLid        = uint.Parse(c[0]),
                        RezzedID      = UUID.Parse(c[2]),
                        OldTaskHolder = UUID.Parse(c[3]),
                        AssetUUID     = UUID.Parse(c[4]),
                        TaskItemID    = UUID.Parse(c[5])
                    };
                    bool missing = false;
                    if (MissingLLSD(to.RezzedID))
                    {
                        Failure("Need LLSD: " + fileString);
                        to.missingLLSD = true;
                        mssingTO.Add(to);
                    }
                    TaskFileInfo old;
                    if (item2TO.TryGetValue(to.TaskItemID, out old))
                    {
                        if (old.missingLLSD)
                        {
                            item2TO[to.TaskItemID] = to;
                            duped.Add(old);
                        }
                        else
                        {
                            duped.Add(to);
                        }
                    }
                    else
                    {
                        if (to.missingLLSD)
                        {
                            continue;
                        }
                        item2TO[to.TaskItemID] = to;
                    }
                }
                catch (Exception ee)
                {
                    Failure("fileIssue: " + file + " = " + fileString);
                }
            }
            Success("t=" + found + " m=" + mssingTO.Count + " td=" + item2TO.Count + " duped=" + duped.Count);
        }
Ejemplo n.º 9
0
        public static void SavePrims(DoubleDictionary<uint, UUID, Primitive> prims, string path, ImportSettings options)
        {
            // Delete all of the old linkset files
            try
            {
                Directory.Delete(path, true);
                Directory.CreateDirectory(path);
            }
            catch (Exception ex)
            {
                Logger.Log("Failed saving prims: " + ex.Message, Helpers.LogLevel.Error);
                return;
            }

            // Copy the double dictionary to a temporary list for iterating
            List<Primitive> primList = new List<Primitive>();
            prims.ForEach(delegate(Primitive prim)
            {
                primList.Add(prim);
            });

            foreach (Primitive p in primList)
            {
                if (p.ParentID == 0)
                {
                    Linkset linkset = new Linkset();
                    linkset.Parent = ImportCommand.Importing.APrimToCreate(p);

                    prims.ForEach(delegate(Primitive q)
                    {
                        if (q.ParentID == p.LocalID)
                            linkset.Children.Add(ImportCommand.Importing.APrimToCreate(q));
                    });

                    OarFile.SaveLinkset(linkset, path + "/Primitive_" + linkset.Parent.NewID.ToString() + ".xml", false,
                                        options);
                }
            }
        }
Ejemplo n.º 10
0
        private void CheckTasks(ImportSettings settings)
        {
            foreach (PrimToCreate parent in LockInfo.CopyOf(parents))
            {
                var ls = new Linkset()
                {
                    Parent = parent
                };
                parent.Link = ls;
                LocalScene.Links.Add(ls);
            }
            foreach (PrimToCreate ch in childs)
            {
                var pp = ch.ParentPrim;
                if (pp == null)
                {
                    continue;
                }
                pp.Link.ChildAdd(ch);
            }
            foreach (var ls in LockInfo.CopyOf(LocalScene.Links))
            {
                ls.Children.Sort(compareLocalIDs);
                if (ls.Parent.IsAsset)
                {
                    LocalScene.AssetLinks.Add(ls);
                    LocalScene.Links.Remove(ls);
                }
            }

            int found = 0;
            Dictionary<UUID, TaskFileInfo> item2TO = new Dictionary<UUID, TaskFileInfo>();
            List<TaskFileInfo> mssingTO = new List<TaskFileInfo>();
            List<TaskFileInfo> duped = new List<TaskFileInfo>();
            foreach (var file in Directory.GetFiles(ExportCommand.dumpDir, "*.objectAsset"))
            {
                break;
                found++;
                string fileString = File.ReadAllText(file);
                string[] c = fileString.Split(',');
                try
                {

                    TaskFileInfo to = new TaskFileInfo()
                                          {
                                              OldLid = uint.Parse(c[0]),
                                              RezzedID = UUID.Parse(c[2]),
                                              OldTaskHolder = UUID.Parse(c[3]),
                                              AssetUUID = UUID.Parse(c[4]),
                                              TaskItemID = UUID.Parse(c[5])
                                          };
                    bool missing = false;
                    if (MissingLLSD(to.RezzedID))
                    {
                        Failure("Need LLSD: " + fileString);
                        to.missingLLSD = true;
                        mssingTO.Add(to);
                    }
                    TaskFileInfo old;
                    if (item2TO.TryGetValue(to.TaskItemID, out old))
                    {
                        if (old.missingLLSD)
                        {
                            item2TO[to.TaskItemID] = to;
                            duped.Add(old);
                        }
                        else
                        {
                            duped.Add(to);
                        }
                    }
                    else
                    {
                        if (to.missingLLSD)
                        {
                            continue;
                        }
                        item2TO[to.TaskItemID] = to;
                    }

                }
                catch (Exception ee)
                {
                    Failure("fileIssue: " + file + " = " + fileString);
                }
            }
            Success("t=" + found + " m=" + mssingTO.Count + " td=" + item2TO.Count + " duped=" + duped.Count);
        }