Example #1
0
        private void UploadTerrain(ImportSettings importSettings)
        {
            string fn = ExportCommand.terrainFileName;

            lock (ExportCommand.fileWriterLock)
            {
                if (!File.Exists(fn))
                {
                    // upload patches
                    var fn2 = ExportCommand.terrainDir + "terrain.patches";
                    lock (ExportCommand.fileWriterLock)
                    {
                        if (File.Exists(fn2))
                        {
                            TerrainPatch[] loaded = (TerrainPatch[])ExportCommand.FromFile(fn2, true);
                            // TerrainCompressor.CreateLayerDataPacket(loaded, TerrainPatch.LayerType.Land);
                            float[,] hm = GetHeightMap(loaded);
                            hm          = SmoothHM(hm);
                            byte[] raw = ToRaw32File(hm);
                            lock (ExportCommand.fileWriterLock) File.WriteAllBytes(fn, raw);
                        }
                    }
                }
            }
            if (File.Exists(fn))
            {
                Client.Estate.UploadTerrain(File.ReadAllBytes(fn), Path.GetFileName(fn));
                Success("Terrain file uploading");
            }
            else
            {
                Failure("unable to find any terrain files");
            }
        }
        public static void WriteTaskInventory(Primitive sop, XmlTextWriter writer, ICollection <InventoryBase> tinv, ImportSettings options)
        {
            if (tinv == null)
            {
                return;
            }
            int ObjectNum = -1;

            if (tinv.Count > 0) // otherwise skip this
            {
                writer.WriteStartElement("TaskInventory");

                foreach (InventoryBase item2c in tinv)
                {
                    InventoryItem item = item2c as InventoryItem;
                    if (item == null)
                    {
                        continue;
                    }
                    string itemName      = item.Name;
                    bool   obj           = (item.AssetType == AssetType.Object);
                    UUID   itemAssetUUID = obj ? item.RezzID : item.AssetUUID;
                    if (obj)
                    {
                        ObjectNum++;
                        if (CogbotHelpers.IsNullOrZero(itemAssetUUID))
                        {
                            string rtiStatus = ExportCommand.dumpDir + sop.ID + "." + ObjectNum + ".rti";
                            lock (ExportCommand.fileWriterLock)
                            {
                                if (File.Exists(rtiStatus))
                                {
                                    string[] conts = File.ReadAllText(rtiStatus).Split(',');
                                    if (conts.Length > 2)
                                    {
                                        itemAssetUUID = UUID.Parse(conts[0]);
                                    }
                                }
                            }
                        }
                        if (CogbotHelpers.IsNullOrZero(itemAssetUUID))
                        {
                            ExportCommand.LogError(sop.ID, "AssetZERO: " + item);
                            if (!options.ContainsKey("keepmissing"))
                            {
                                continue;
                            }
                            if (options.ContainsKey("use404"))
                            {
                                itemAssetUUID = ImportCommand.GetMissingFiller(item.AssetType);
                            }
                            if (options.ContainsKey("error404") && !itemName.Contains("ERROR404"))
                            {
                                itemName += "ERROR404";
                            }
                            ImportCommand.Importing.Failure("Zero AssetID " + item.Name);
                        }
                    }
                    else
                    {
                        if (CogbotHelpers.IsNullOrZero(itemAssetUUID))
                        {
                            itemAssetUUID = item.RezzID;
                        }
                        if (CogbotHelpers.IsNullOrZero(itemAssetUUID))
                        {
                            ExportCommand.LogError(sop.ID, "AssetZERO: " + item);
                            if (!options.ContainsKey("keepmissing"))
                            {
                                continue;
                            }
                            if (options.ContainsKey("use404"))
                            {
                                itemAssetUUID = ImportCommand.GetMissingFiller(item.AssetType);
                            }
                            if (options.ContainsKey("error404") && !itemName.Contains("ERROR404"))
                            {
                                itemName += "ERROR404";
                            }
                            ImportCommand.Importing.Failure("Zero AssetID " + item.Name);
                        }
                    }
                    writer.WriteStartElement("TaskInventoryItem");
                    Permissions perms = item.Permissions;
                    if (!options.Contains("sameperm"))
                    {
                        perms = Permissions.FullPermissions;
                    }

                    if (CogbotHelpers.IsNullOrZero(itemAssetUUID))
                    {
                        continue;
                    }
                    WriteUUID(writer, "AssetID", itemAssetUUID, options);
                    WriteEnum(writer, "BasePermissions", perms.BaseMask);
                    WriteDate(writer, "CreationDate", item.CreationDate);

                    WriteUUID(writer, "CreatorID", item.CreatorID, options);

                    /*
                     * //todo if (item.CreatorData != null && item.CreatorData != string.Empty)
                     *  WES(writer,"CreatorData", item.CreatorData);
                     * else if (options.ContainsKey("home"))
                     * {
                     *  if (m_UserManagement == null)
                     *      m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
                     *  string name = m_UserManagement.GetUserName(item.CreatorID);
                     *  WES(writer,"CreatorData", (string)options["home"] + ";" + name);
                     * }
                     */
                    WriteValue(writer, "Description", item.Description);
                    WriteEnum(writer, "EveryonePermissions", Reperm(perms.EveryoneMask, options));
                    WriteUInt(writer, "Flags", item.Flags);
                    WriteUUID(writer, "GroupID", item.GroupID, options);
                    WriteEnum(writer, "GroupPermissions", Reperm(perms.GroupMask, options));
                    WriteEnum(writer, "InvType", item.InventoryType);
                    WriteUUID(writer, "ItemID", item.UUID, options);
                    //todo WriteUUID(writer, "OldItemID", item.OldItemID, options);

                    UUID lastOwnerID = options.ContainsKey("wipe-owners") ? UUID.Zero : item.LastOwnerID;
                    WriteUserUUID(writer, "LastOwnerID", lastOwnerID, options);

                    WriteValue(writer, "Name", itemName);
                    WriteEnum(writer, "NextPermissions", Reperm(perms.NextOwnerMask, options));

                    UUID ownerID = options.ContainsKey("wipe-owners") ? UUID.Zero : item.OwnerID;
                    WriteUUID(writer, "OwnerID", ownerID, options);

                    WriteEnum(writer, "CurrentPermissions", Reperm(perms.OwnerMask, options));
                    WriteUUID(writer, "ParentID", item.ParentUUID, options);

                    /*todo
                     * WriteUUID(writer, "ParentPartID", item.ParentPartID, options);
                     * WriteUUID(writer, "PermsGranter", item.PermsGranter, options);
                     */
                    // todo what is this?
                    WriteEnum(writer, "PermsMask", PermissionMask.All);//  perms.BaseMask);//item.PermsMask);

                    WriteEnum(writer, "Type", item.AssetType);
                    //todo WES(writer,"OwnerChanged", item.OwnerChanged.ToString().ToLower());

                    writer.WriteEndElement(); // TaskInventoryItem
                }

                writer.WriteEndElement(); // TaskInventory
            }
        }
Example #3
0
        private void CountReady(ImportSettings settings)
        {
            Exporting.GiveStatus();
            int readyObjects          = 0;
            int readyObjectsForDelete = 0;
            int unreadyObjs           = 0;
            int unreadyObjsMustReRez  = 0;
            int requestedShort        = 0;

            foreach (var file in Directory.GetFiles(ExportCommand.dumpDir, "*.*.rti"))
            {
                if (!file.EndsWith("rti"))
                {
                    //rti_status
                    continue;
                }
                string rtiData  = File.ReadAllText(file);
                var    contents = rtiData.Split(',');
                if (contents.Length < 2)
                {
                    requestedShort++;
                    continue;
                }
                UUID objID, holderID;
                if (!UUID.TryParse(contents[0], out objID) || !UUID.TryParse(contents[1], out holderID))
                {
                    Failure("SHORT: " + file + " " + rtiData);
                    requestedShort++;
                    continue;
                }
                // var uuidstr = Path.GetFileName(file).Split('.');
                // var objNum = int.Parse(uuidstr[1]);
                string completeStr = ExportCommand.IsComplete(objID, false, true, settings);
                Vector3 where;
                bool inWorld = Exporting.IsExisting(objID, out where);
                if (string.IsNullOrEmpty(completeStr))
                {
                    readyObjects++;
                    if (inWorld)
                    {
                        Exporting.AttemptMoveTo(where);
                        Thread.Sleep(3000);
                        Exporting.KillInWorld(objID);
                        Importing.APrimToCreate(holderID);
                        readyObjectsForDelete++;
                    }
                    else
                    {
                        Importing.APrimToCreate(holderID);
                        Importing.APrimToCreate(objID);
                    }
                }
                else
                {
                    unreadyObjs++;
                    if (!inWorld)
                    {
                        unreadyObjsMustReRez++;
                        Failure("REREZ: " + completeStr + " " + rtiData);
                        Importing.APrimToCreate(holderID).MustUseAgentCopy = true;
                        File.Delete(ExportCommand.dumpDir + holderID + ".rti_status");
                        File.Delete(file);
                    }
                    else
                    {
                        MustExport.Add(objID);
                        MustExport.Add(holderID);
                        Importing.APrimToCreate(holderID);
                        Failure("RTIDATA: " + completeStr + " " + rtiData);
                        Exporting.AddMoveTo(where);
                    }
                }
            }
            Success("readyObjects = " + readyObjects);
            Success("readyObjectsForDelete = " + readyObjectsForDelete);
            Success("unreadyObjs = " + unreadyObjs);
            Success("unreadyObjsMustReRez = " + unreadyObjsMustReRez);
            Success("requestedShort = " + requestedShort);
        }