public string RezAll(BotInventoryEval man, InventoryBase b, SimPosition dest) { string ret = ""; var manager = man.Manager; if (b is InventoryItem) { InventoryItem item = b as InventoryItem; bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy; ret += item.Name + nl; if (dest == null) { Simulator sim = Client.Network.CurrentSim; Client.Inventory.RequestRestoreRezFromInventory(sim, item, item.UUID); } else { Simulator sim = SimRegion.GetRegion(dest.GlobalPosition).TheSimulator; Client.Inventory.RequestRezFromInventory(sim, dest.SimRotation, dest.SimPosition, item, UUID.Zero); } } else if (b is InventoryFolder) { InventoryFolder folder = b as InventoryFolder; List<InventoryBase> folderContents = man.FolderContents(folder.UUID); if (folderContents != null) foreach (InventoryBase list in folderContents) { ret += RezAll(man, list, dest); } } return ret; }
public string GiveAll(BotInventoryEval man, InventoryBase b, SimObject dest, bool moveInsteadOfCopy) { string ret = ""; var manager = man.Manager; if (b is InventoryItem) { InventoryItem item = b as InventoryItem; bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy; ret += item.Name + nl; if (dest.IsAvatar) { manager.GiveItem(item.UUID, item.Name, item.AssetType, dest.ID, true); } else { throw new NotImplementedException("giving items to objects"); } } else if (b is InventoryFolder) { InventoryFolder item = b as InventoryFolder; if (dest.IsAvatar) { manager.GiveFolder(item.UUID, item.Name, AssetType.Folder, dest.ID, true); return(item.Name + nl); } InventoryFolder folder = b as InventoryFolder; List <InventoryBase> folderContents = man.FolderContents(folder.UUID); if (folderContents != null) { foreach (InventoryBase list in folderContents) { ret += GiveAll(man, list, dest, moveInsteadOfCopy); } } } return(ret); }
public string GiveAll(BotInventoryEval man, InventoryBase b, SimObject dest, bool moveInsteadOfCopy) { string ret = ""; var manager = man.Manager; if (b is InventoryItem) { InventoryItem item = b as InventoryItem; bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy; ret += item.Name + nl; if (dest.IsAvatar) { manager.GiveItem(item.UUID, item.Name, item.AssetType, dest.ID, true); } else { throw new NotImplementedException("giving items to objects"); } } else if (b is InventoryFolder) { InventoryFolder item = b as InventoryFolder; if (dest.IsAvatar) { manager.GiveFolder(item.UUID, item.Name, AssetType.Folder, dest.ID, true); return item.Name + nl; } InventoryFolder folder = b as InventoryFolder; List<InventoryBase> folderContents = man.FolderContents(folder.UUID); if (folderContents != null) foreach (InventoryBase list in folderContents) { ret += GiveAll(man, list, dest, moveInsteadOfCopy); } } return ret; }
public string RezAll(BotInventoryEval man, InventoryBase b, SimPosition dest) { string ret = ""; var manager = man.Manager; if (b is InventoryItem) { InventoryItem item = b as InventoryItem; bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy; ret += item.Name + nl; if (dest == null) { Simulator sim = Client.Network.CurrentSim; Client.Inventory.RequestRestoreRezFromInventory(sim, item, item.UUID); } else { Simulator sim = SimRegion.GetRegion(dest.GlobalPosition).TheSimulator; Client.Inventory.RequestRezFromInventory(sim, dest.SimRotation, dest.SimPosition, item, UUID.Zero); } } else if (b is InventoryFolder) { InventoryFolder folder = b as InventoryFolder; List <InventoryBase> folderContents = man.FolderContents(folder.UUID); if (folderContents != null) { foreach (InventoryBase list in folderContents) { ret += RezAll(man, list, dest); } } } return(ret); }
public override CmdResult ExecuteRequest(CmdRequest args) { //AutoResetEvent are = new AutoResetEvent(false); // AppearanceManager.AppearanceUpdatedCallback callback = (Primitive.TextureEntry te) => are.Set(); try { //Client.Appearance.OnAppearanceUpdated += callback; // base.acceptInput(verb, args); string target = String.Empty; if (args.Length == 0) return ShowUsage(); bool bake = true; string wear = args.str.Trim(); if (args.IsTrue("nobake")) { bake = false; wear = wear.Substring(6).Trim(); } if (args.IsTrue("test")) { bake = true; wear = wear.Substring(4).Trim(); TheBotClient.wearFolder(wear); // if (!are.WaitOne(WEARABLE_TIMEOUT * 2)) // return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)"); // else return Success("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)")); } try { WriteLine("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)")); if (false) { List<InventoryItem> outfit = Client.GetFolderItems(wear); if (outfit != null) { Client.Appearance.ReplaceOutfit(outfit); return Success(wear); } WriteLine("no folder found attaching item: " + wear); } string lwear = wear.ToLower(); BotInventoryEval searcher = new BotInventoryEval(Client); InventoryFolder rootFolder = Client.Inventory.Store.RootFolder; if (rootFolder.UUID == UUID.Zero) return Success("Cant get roiot folder yet"); bool found = searcher.findInFolders(rootFolder, (ib) => { if (ib.Name.ToLower() == lwear) { if (ib is InventoryItem) { Client.Appearance.Attach( ib as InventoryItem, AttachmentPoint.Default); return true; } else { var fldr = ib as InventoryFolder; List<InventoryBase> clientInventoryFolderContents = Client.Inventory. FolderContents(ib.UUID, Client. Self. AgentID, false, true, InventorySortOrder . ByName, 40000); if (clientInventoryFolderContents == null) return false; List<InventoryItem> items = new List<InventoryItem>(); foreach ( InventoryBase content in clientInventoryFolderContents ) { var it = content as InventoryItem; if (it != null) items.Add(it); } if (items.Count > 0) { Client.Appearance.ReplaceOutfit( items); return true; } } } return false; }); if (found) return Success("attaching " + wear); return Failure("did not find " + wear); // if (!are.WaitOne(WEARABLE_TIMEOUT * 2)) // return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)"); // else } catch (Exception ex) { return Failure("(Invalid outfit (" + ex.Message + ")" + args.str + "."); } } finally { // Client.Appearance.OnAppearanceUpdated -= callback; } }
public override CmdResult ExecuteRequest(CmdRequest args) { //AutoResetEvent are = new AutoResetEvent(false); // AppearanceManager.AppearanceUpdatedCallback callback = (Primitive.TextureEntry te) => are.Set(); try { //Client.Appearance.OnAppearanceUpdated += callback; // base.acceptInput(verb, args); string target = String.Empty; if (args.Length == 0) { return(ShowUsage()); } bool bake = true; string wear = args.str.Trim(); if (args.IsTrue("nobake")) { bake = false; wear = wear.Substring(6).Trim(); } if (args.IsTrue("test")) { bake = true; wear = wear.Substring(4).Trim(); TheBotClient.wearFolder(wear); // if (!are.WaitOne(WEARABLE_TIMEOUT * 2)) // return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)"); // else return(Success("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)"))); } try { WriteLine("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)")); if (false) { List <InventoryItem> outfit = Client.GetFolderItems(wear); if (outfit != null) { Client.Appearance.ReplaceOutfit(outfit); return(Success(wear)); } WriteLine("no folder found attaching item: " + wear); } string lwear = wear.ToLower(); BotInventoryEval searcher = new BotInventoryEval(Client); InventoryFolder rootFolder = Client.Inventory.Store.RootFolder; if (rootFolder.UUID == UUID.Zero) { return(Success("Cant get roiot folder yet")); } bool found = searcher.findInFolders(rootFolder, (ib) => { if (ib.Name.ToLower() == lwear) { if (ib is InventoryItem) { Client.Appearance.Attach( ib as InventoryItem, AttachmentPoint.Default); return(true); } else { var fldr = ib as InventoryFolder; List <InventoryBase> clientInventoryFolderContents = Client.Inventory. FolderContents(ib.UUID, Client. Self. AgentID, false, true, InventorySortOrder . ByName, 40000); if (clientInventoryFolderContents == null) { return(false); } List <InventoryItem> items = new List <InventoryItem>(); foreach ( InventoryBase content in clientInventoryFolderContents ) { var it = content as InventoryItem; if (it != null) { items.Add(it); } } if (items.Count > 0) { Client.Appearance.ReplaceOutfit( items); return(true); } } } return(false); }); if (found) { return(Success("attaching " + wear)); } return(Failure("did not find " + wear)); // if (!are.WaitOne(WEARABLE_TIMEOUT * 2)) // return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)"); // else } catch (Exception ex) { return(Failure("(Invalid outfit (" + ex.Message + ")" + args.str + ".")); } } finally { // Client.Appearance.OnAppearanceUpdated -= callback; } }