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 } }
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); }