LIBOMV-359 Reverting InventoryManager/Inventory system to old inventory system based on r2020, Disabled GUI library in prebuild.xml as its based on the new inventory system and needs to be rewritten to be used with the old inventorymanager (or re-enabled when new inventory system is added back to trunk
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2126 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -61,7 +61,7 @@ namespace OpenMetaverse.TestClient
|
||||
#endregion AvatarAppearance to AgentSetAppearance
|
||||
|
||||
// Detach everything we are currently wearing
|
||||
Client.Appearance.AddAttachments(new List<ItemData>(0), true);
|
||||
Client.Appearance.AddAttachments(new List<InventoryBase>(), true);
|
||||
|
||||
// Send the new appearance packet
|
||||
Client.Network.SendPacket(set);
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
using System;
|
||||
using OpenMetaverse;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenMetaverse.TestClient
|
||||
{
|
||||
public class WearCommand : Command
|
||||
{
|
||||
public WearCommand(TestClient testClient)
|
||||
public WearCommand(TestClient testClient)
|
||||
{
|
||||
Client = testClient;
|
||||
Name = "wear";
|
||||
@@ -17,7 +16,7 @@ namespace OpenMetaverse.TestClient
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
if (args.Length < 1)
|
||||
return "Usage: wear [outfit name] [nobake] eg: 'wear \"/Clothing/My Outfit\" [nobake]'";
|
||||
return "Usage: wear [outfit name] eg: 'wear /My Outfit/Dance Party";
|
||||
|
||||
string target = String.Empty;
|
||||
bool bake = true;
|
||||
@@ -30,13 +29,11 @@ namespace OpenMetaverse.TestClient
|
||||
target = target + args[ct] + " ";
|
||||
}
|
||||
|
||||
List<InventoryBase> results = Client.InventoryStore.InventoryFromPath(target, Client.CurrentDirectory, true);
|
||||
if (results.Count == 0 || !(results[0] is InventoryFolder))
|
||||
return "Unable to find folder at " + target;
|
||||
target = target.TrimEnd();
|
||||
|
||||
try
|
||||
{
|
||||
Client.Appearance.WearOutfit(results[0] as InventoryFolder, bake);
|
||||
Client.Appearance.WearOutfit(target.Split('/'), bake);
|
||||
}
|
||||
catch (InvalidOutfitException ex)
|
||||
{
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
BackupWorker = new BackgroundWorker();
|
||||
BackupWorker.WorkerSupportsCancellation = true;
|
||||
BackupWorker.DoWork +=new DoWorkEventHandler(bwBackup_DoWork);
|
||||
BackupWorker.DoWork += new DoWorkEventHandler(bwBackup_DoWork);
|
||||
BackupWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwBackup_RunWorkerCompleted);
|
||||
|
||||
BackupWorker.RunWorkerAsync(args);
|
||||
@@ -202,7 +202,7 @@ namespace OpenMetaverse.TestClient
|
||||
qdi.IsRequested = true;
|
||||
qdi.TransferID = Client.Assets.RequestInventoryAsset(
|
||||
qdi.AssetID, qdi.ItemID, qdi.TaskID, qdi.OwnerID, qdi.Type, true);
|
||||
|
||||
|
||||
lock (CurrentDownloads) CurrentDownloads.Add(qdi);
|
||||
}
|
||||
}
|
||||
@@ -229,7 +229,7 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
TextItemsFound = 0;
|
||||
|
||||
args = (string[]) e.Argument;
|
||||
args = (string[])e.Argument;
|
||||
|
||||
lock (CurrentDownloads) CurrentDownloads.Clear();
|
||||
|
||||
@@ -240,7 +240,7 @@ namespace OpenMetaverse.TestClient
|
||||
DirectoryInfo di = new DirectoryInfo(args[1]);
|
||||
|
||||
// recurse on the root folder into the entire inventory
|
||||
BackupFolder(Client.InventoryStore.RootFolder, di.FullName);
|
||||
BackupFolder(Client.Inventory.Store.RootNode, di.FullName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -248,43 +248,42 @@ namespace OpenMetaverse.TestClient
|
||||
/// </summary>
|
||||
/// <param name="folder">The current leaf in the inventory tree</param>
|
||||
/// <param name="sPathSoFar">path so far, in the form @"c:\here" -- this needs to be "clean" for the current filesystem</param>
|
||||
private void BackupFolder(InventoryFolder folder, string sPathSoFar)
|
||||
private void BackupFolder(InventoryNode folder, string sPathSoFar)
|
||||
{
|
||||
StringBuilder sbRequests = new StringBuilder();
|
||||
|
||||
|
||||
if (folder.IsStale)
|
||||
folder.DownloadContents(TimeSpan.FromSeconds(10));
|
||||
// FIXME:
|
||||
//Client.Inventory.RequestFolderContents(folder.Data.UUID, Client.Self.AgentID, true, true, false,
|
||||
// InventorySortOrder.ByName);
|
||||
|
||||
// first scan this folder for text
|
||||
|
||||
foreach (InventoryBase ib in folder)
|
||||
foreach (InventoryNode iNode in folder.Nodes.Values)
|
||||
{
|
||||
if (BackupWorker.CancellationPending)
|
||||
return;
|
||||
if (ib is InventoryItem)
|
||||
if (iNode.Data is OpenMetaverse.InventoryItem)
|
||||
{
|
||||
InventoryItem ii = ib as InventoryItem;
|
||||
if (ii.Data.AssetType == AssetType.LSLText || ii.Data.AssetType == AssetType.Notecard)
|
||||
InventoryItem ii = iNode.Data as InventoryItem;
|
||||
if (ii.AssetType == AssetType.LSLText || ii.AssetType == AssetType.Notecard)
|
||||
{
|
||||
// check permissions on scripts
|
||||
if (ii.Data.AssetType == AssetType.LSLText)
|
||||
if (ii.AssetType == AssetType.LSLText)
|
||||
{
|
||||
if ((ii.Data.Permissions.OwnerMask & PermissionMask.Modify) == PermissionMask.None)
|
||||
if ((ii.Permissions.OwnerMask & PermissionMask.Modify) == PermissionMask.None)
|
||||
{
|
||||
// skip this one
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
string sExtension = (ii.Data.AssetType == AssetType.LSLText) ? ".lsl" : ".txt";
|
||||
string sExtension = (ii.AssetType == AssetType.LSLText) ? ".lsl" : ".txt";
|
||||
// make the output file
|
||||
string sPath = sPathSoFar + @"\" + MakeValid(ii.Name.Trim()) + sExtension;
|
||||
|
||||
// create the new qdi
|
||||
QueuedDownloadInfo qdi = new QueuedDownloadInfo(sPath, ii.Data.AssetUUID, ii.UUID, UUID.Zero,
|
||||
Client.Self.AgentID, ii.Data.AssetType);
|
||||
|
||||
QueuedDownloadInfo qdi = new QueuedDownloadInfo(sPath, ii.AssetUUID, iNode.Data.UUID, UUID.Zero,
|
||||
Client.Self.AgentID, ii.AssetType);
|
||||
|
||||
// add it to the queue
|
||||
lock (PendingDownloads)
|
||||
{
|
||||
@@ -296,12 +295,12 @@ namespace OpenMetaverse.TestClient
|
||||
}
|
||||
|
||||
// now run any subfolders
|
||||
foreach (InventoryBase ib in folder)
|
||||
foreach (InventoryNode i in folder.Nodes.Values)
|
||||
{
|
||||
if (BackupWorker.CancellationPending)
|
||||
return;
|
||||
else if (ib is InventoryFolder)
|
||||
BackupFolder(ib as InventoryFolder, sPathSoFar + @"\" + MakeValid(ib.Name.Trim()));
|
||||
else if (i.Data is OpenMetaverse.InventoryFolder)
|
||||
BackupFolder(i, sPathSoFar + @"\" + MakeValid(i.Data.Name.Trim()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,7 +335,7 @@ namespace OpenMetaverse.TestClient
|
||||
else
|
||||
{
|
||||
TextItemErrors++;
|
||||
Console.WriteLine("{0}: Download of asset {1} ({2}) failed with status {3}", Name, r.FileName,
|
||||
Console.WriteLine("{0}: Download of asset {1} ({2}) failed with status {3}", Name, r.FileName,
|
||||
r.AssetID.ToString(), asset.Status.ToString());
|
||||
}
|
||||
|
||||
|
||||
@@ -19,34 +19,68 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
Manager = Client.Inventory;
|
||||
Inventory = Client.InventoryStore;
|
||||
Inventory = Client.Inventory.Store;
|
||||
|
||||
if (args.Length > 1)
|
||||
return "Usage: cd [path-to-folder]";
|
||||
string pathStr = "";
|
||||
string[] path = null;
|
||||
if (args.Length == 0)
|
||||
return "Current folder: " + Client.CurrentDirectory.Name;
|
||||
|
||||
string path = args[0];
|
||||
for(int i = 1; i < args.Length; ++i)
|
||||
{
|
||||
path += " " + args[i];
|
||||
path = new string[] { "" };
|
||||
// cd without any arguments doesn't do anything.
|
||||
}
|
||||
|
||||
List<InventoryBase> results = Inventory.InventoryFromPath(path, Client.CurrentDirectory, true);
|
||||
if (results.Count == 0)
|
||||
return "Can not find inventory at: " + path;
|
||||
InventoryFolder destFolder = null;
|
||||
foreach (InventoryBase ib in results)
|
||||
else if (args.Length == 1)
|
||||
{
|
||||
if (ib is InventoryFolder)
|
||||
pathStr = args[0];
|
||||
path = pathStr.Split(new char[] { '/' });
|
||||
// Use '/' as a path seperator.
|
||||
}
|
||||
InventoryFolder currentFolder = Client.CurrentDirectory;
|
||||
if (pathStr.StartsWith("/"))
|
||||
currentFolder = Inventory.RootFolder;
|
||||
|
||||
if (currentFolder == null) // We need this to be set to something.
|
||||
return "Error: Client not logged in.";
|
||||
|
||||
// Traverse the path, looking for the
|
||||
for (int i = 0; i < path.Length; ++i)
|
||||
{
|
||||
string nextName = path[i];
|
||||
if (string.IsNullOrEmpty(nextName) || nextName == ".")
|
||||
continue; // Ignore '.' and blanks, stay in the current directory.
|
||||
if (nextName == ".." && currentFolder != Inventory.RootFolder)
|
||||
{
|
||||
destFolder = ib as InventoryFolder;
|
||||
break;
|
||||
// If we encounter .., move to the parent folder.
|
||||
currentFolder = Inventory[currentFolder.ParentUUID] as InventoryFolder;
|
||||
}
|
||||
else
|
||||
{
|
||||
List<InventoryBase> currentContents = Inventory.GetContents(currentFolder);
|
||||
// Try and find an InventoryBase with the corresponding name.
|
||||
bool found = false;
|
||||
foreach (InventoryBase item in currentContents)
|
||||
{
|
||||
// Allow lookup by UUID as well as name:
|
||||
if (item.Name == nextName || item.UUID.ToString() == nextName)
|
||||
{
|
||||
found = true;
|
||||
if (item is InventoryFolder)
|
||||
{
|
||||
currentFolder = item as InventoryFolder;
|
||||
}
|
||||
else
|
||||
{
|
||||
return item.Name + " is not a folder.";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
return nextName + " not found in " + currentFolder.Name;
|
||||
}
|
||||
}
|
||||
if (destFolder == null)
|
||||
return path + " is not a folder.";
|
||||
|
||||
Client.CurrentDirectory = destFolder;
|
||||
return "Current folder: " + Client.CurrentDirectory.Name;
|
||||
Client.CurrentDirectory = currentFolder;
|
||||
return "Current folder: " + currentFolder.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,19 +16,19 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
void OnNoteUpdate(bool success, string status, UUID itemID, UUID assetID)
|
||||
{
|
||||
if (success)
|
||||
Console.WriteLine("Notecard successfully uploaded, ItemID {0} AssetID {1}", itemID, assetID);
|
||||
if (success)
|
||||
Console.WriteLine("Notecard successfully uploaded, ItemID {0} AssetID {1}", itemID, assetID);
|
||||
}
|
||||
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
if(args.Length < 1)
|
||||
if (args.Length < 1)
|
||||
return "Usage: createnotecard filename.txt";
|
||||
|
||||
string file = String.Empty;
|
||||
for (int ct = 0; ct < args.Length; ct++)
|
||||
file = file + args[ct] + " ";
|
||||
file = file.TrimEnd();
|
||||
for (int ct = 0; ct < args.Length; ct++)
|
||||
file = file + args[ct] + " ";
|
||||
file = file.TrimEnd();
|
||||
|
||||
Console.WriteLine("Filename: {0}", file);
|
||||
if (!File.Exists(file))
|
||||
@@ -45,9 +45,10 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
Client.Inventory.RequestCreateItem(Client.Inventory.FindFolderForType(AssetType.Notecard),
|
||||
file, desc, AssetType.Notecard, UUID.Random(), InventoryType.Notecard, PermissionMask.All,
|
||||
delegate(bool success, ItemData item) {
|
||||
if(success) // upload the asset
|
||||
Client.Inventory.RequestUploadNotecardAsset(CreateNotecardAsset(body), item.UUID, new InventoryManager.NotecardUploadedAssetCallback(OnNoteUpdate));
|
||||
delegate(bool success, InventoryItem item)
|
||||
{
|
||||
if (success) // upload the asset
|
||||
Client.Inventory.RequestUploadNotecardAsset(CreateNotecardAsset(body), item.UUID, new InventoryManager.NotecardUploadedAssetCallback(OnNoteUpdate));
|
||||
}
|
||||
);
|
||||
return "Done";
|
||||
@@ -83,4 +84,4 @@ namespace OpenMetaverse.TestClient
|
||||
return assetData;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ namespace OpenMetaverse.TestClient
|
||||
/// </summary>
|
||||
public class DeleteFolderCommand : Command
|
||||
{
|
||||
public DeleteFolderCommand(TestClient testClient)
|
||||
public DeleteFolderCommand(TestClient testClient)
|
||||
{
|
||||
Name = "deleteFolder";
|
||||
Description = "Moves a folder to the Trash Folder";
|
||||
@@ -27,27 +27,19 @@ namespace OpenMetaverse.TestClient
|
||||
string target = String.Empty;
|
||||
for (int ct = 0; ct < args.Length; ct++)
|
||||
target = target + args[ct] + " ";
|
||||
target = target.TrimEnd();
|
||||
|
||||
// initialize results list
|
||||
List<InventoryBase> found = new List<InventoryBase>();
|
||||
try
|
||||
{
|
||||
// find the folder
|
||||
|
||||
found = Client.InventoryStore.InventoryFromPath(target, Client.CurrentDirectory, true);
|
||||
if (found.Count > 0)
|
||||
found = Client.Inventory.LocalFind(Client.Inventory.Store.RootFolder.UUID, target.Split('/'), 0, true);
|
||||
if (found.Count.Equals(1))
|
||||
{
|
||||
InventoryBase item = found[0];
|
||||
InventoryFolder trash = Client.InventoryStore[Client.Inventory.FindFolderForType(AssetType.TrashFolder)] as InventoryFolder;
|
||||
if (trash != null)
|
||||
{
|
||||
item.Move(trash);
|
||||
return String.Format("Moved folder {0} ({1}) to Trash", item.Name, item.UUID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return String.Format("Unable to locate {0}", target);
|
||||
// move the folder to the trash folder
|
||||
Client.Inventory.MoveFolder(found[0].UUID, Client.Inventory.FindFolderForType(AssetType.TrashFolder));
|
||||
return String.Format("Moved folder {0} to Trash", found[0].Name);
|
||||
}
|
||||
}
|
||||
catch (InvalidOutfitException ex)
|
||||
@@ -55,6 +47,6 @@ namespace OpenMetaverse.TestClient
|
||||
return "Folder Not Found: (" + ex.Message + ")";
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,24 +26,34 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell
|
||||
return "First argument expected agent UUID.";
|
||||
}
|
||||
Manager = Client.Inventory;
|
||||
Inventory = Client.InventoryStore;
|
||||
Inventory = Manager.Store;
|
||||
string ret = "";
|
||||
string nl = "\n";
|
||||
for (int i = 1; i < args.Length; ++i)
|
||||
{
|
||||
string itemPath = args[i];
|
||||
|
||||
List<InventoryBase> results = Inventory.InventoryFromPath(itemPath, Client.CurrentDirectory, true);
|
||||
|
||||
if (results.Count == 0)
|
||||
string inventoryName = args[i];
|
||||
// WARNING: Uses local copy of inventory contents, need to download them first.
|
||||
List<InventoryBase> contents = Inventory.GetContents(Client.CurrentDirectory);
|
||||
bool found = false;
|
||||
foreach (InventoryBase b in contents)
|
||||
{
|
||||
ret += "No inventory item at " + itemPath + " found." + nl;
|
||||
}
|
||||
else
|
||||
{
|
||||
results[0].Give(dest, true);
|
||||
ret += "Gave " + results[0].Name + nl;
|
||||
if (inventoryName == b.Name || inventoryName == b.UUID.ToString())
|
||||
{
|
||||
found = true;
|
||||
if (b is InventoryItem)
|
||||
{
|
||||
InventoryItem item = b as InventoryItem;
|
||||
Manager.GiveItem(item.UUID, item.Name, item.AssetType, dest, true);
|
||||
ret += "Gave " + item.Name + nl;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret += "Unable to give folder " + b.Name + nl;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
ret += "No inventory item named " + inventoryName + " found." + nl;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ namespace OpenMetaverse.TestClient
|
||||
{
|
||||
private Inventory Inventory;
|
||||
private InventoryManager Manager;
|
||||
|
||||
public InventoryCommand(TestClient testClient)
|
||||
|
||||
public InventoryCommand(TestClient testClient)
|
||||
{
|
||||
Name = "i";
|
||||
Description = "Prints out inventory.";
|
||||
@@ -25,7 +25,7 @@ namespace OpenMetaverse.TestClient
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
Manager = Client.Inventory;
|
||||
Inventory = Client.InventoryStore;
|
||||
Inventory = Manager.Store;
|
||||
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
@@ -35,29 +35,17 @@ namespace OpenMetaverse.TestClient
|
||||
return result.ToString();
|
||||
}
|
||||
|
||||
void PrintFolder(InventoryFolder folder, StringBuilder result, int indent)
|
||||
void PrintFolder(InventoryFolder f, StringBuilder result, int indent)
|
||||
{
|
||||
folder.DownloadContents(TimeSpan.FromSeconds(10));
|
||||
foreach (InventoryBase b in folder)
|
||||
foreach (InventoryBase i in Manager.FolderContents(f.UUID, Client.Self.AgentID, true, true, InventorySortOrder.ByName, 3000))
|
||||
{
|
||||
if (b is InventoryFolder)
|
||||
result.AppendFormat("{0}{1} ({2})\n", new String(' ', indent * 2), i.Name, i.UUID);
|
||||
if (i is InventoryFolder)
|
||||
{
|
||||
result.Append(Print(b as InventoryFolder, indent));
|
||||
PrintFolder(b as InventoryFolder, result, indent + 1);
|
||||
}
|
||||
else if (b is InventoryItem)
|
||||
{
|
||||
result.Append(Print(b as InventoryItem, indent));
|
||||
InventoryFolder folder = (InventoryFolder)i;
|
||||
PrintFolder(folder, result, indent + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
string Print(InventoryItem item, int indent)
|
||||
{
|
||||
return string.Format("{0}{1} ({2})\n", new String(' ', indent * 2), item.Data.Name, item.UUID);
|
||||
}
|
||||
string Print(InventoryFolder folder, int indent)
|
||||
{
|
||||
return string.Format("{0}{1} ({2})\n", new String(' ', indent * 2), folder.Data.Name, folder.UUID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,49 +17,20 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell
|
||||
}
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
Manager = Client.Inventory;
|
||||
Inventory = Client.InventoryStore;
|
||||
if (args.Length > 1)
|
||||
return "Usage: ls [-l] [directory path]";
|
||||
return "Usage: ls [-l]";
|
||||
bool longDisplay = false;
|
||||
InventoryFolder directory = Client.CurrentDirectory;
|
||||
if (args.Length > 0)
|
||||
{
|
||||
int start = 0;
|
||||
if (args[0] == "-l")
|
||||
{
|
||||
longDisplay = true;
|
||||
start = 1;
|
||||
}
|
||||
if (start < args.Length)
|
||||
{
|
||||
string path = args[start];
|
||||
for (int i = start + 1; i < args.Length; ++i)
|
||||
{
|
||||
path += " " + args[i];
|
||||
}
|
||||
bool found = false;
|
||||
List<InventoryBase> results = Inventory.InventoryFromPath(path, Client.CurrentDirectory, true);
|
||||
foreach (InventoryBase ib in results)
|
||||
{
|
||||
if (ib is InventoryFolder)
|
||||
{
|
||||
directory = ib as InventoryFolder;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
return "Unable to find directory at path: " + path;
|
||||
}
|
||||
}
|
||||
|
||||
if (directory.IsStale)
|
||||
directory.DownloadContents(TimeSpan.FromSeconds(30));
|
||||
if (args.Length > 0 && args[0] == "-l")
|
||||
longDisplay = true;
|
||||
|
||||
Manager = Client.Inventory;
|
||||
Inventory = Manager.Store;
|
||||
// WARNING: Uses local copy of inventory contents, need to download them first.
|
||||
List<InventoryBase> contents = Inventory.GetContents(Client.CurrentDirectory);
|
||||
string displayString = "";
|
||||
string nl = "\n"; // New line character
|
||||
// Pretty simple, just print out the contents.
|
||||
foreach (InventoryBase b in directory)
|
||||
foreach (InventoryBase b in contents)
|
||||
{
|
||||
if (longDisplay)
|
||||
{
|
||||
@@ -80,17 +51,16 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell
|
||||
{
|
||||
InventoryItem item = b as InventoryItem;
|
||||
displayString += "-";
|
||||
displayString += PermMaskString(item.Data.Permissions.OwnerMask);
|
||||
displayString += PermMaskString(item.Data.Permissions.GroupMask);
|
||||
displayString += PermMaskString(item.Data.Permissions.EveryoneMask);
|
||||
displayString += PermMaskString(item.Permissions.OwnerMask);
|
||||
displayString += PermMaskString(item.Permissions.GroupMask);
|
||||
displayString += PermMaskString(item.Permissions.EveryoneMask);
|
||||
displayString += " " + item.UUID;
|
||||
displayString += " " + item.Name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string name = b.Name;
|
||||
displayString += name;
|
||||
displayString += b.Name;
|
||||
}
|
||||
displayString += nl;
|
||||
}
|
||||
@@ -106,7 +76,8 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell
|
||||
/// </summary>
|
||||
/// <param name="mask"></param>
|
||||
/// <returns></returns>
|
||||
private static string PermMaskString(PermissionMask mask) {
|
||||
private static string PermMaskString(PermissionMask mask)
|
||||
{
|
||||
string str = "";
|
||||
if (((uint)mask | (uint)PermissionMask.Copy) == (uint)PermissionMask.Copy)
|
||||
str += "C";
|
||||
|
||||
@@ -29,22 +29,24 @@ namespace OpenMetaverse.TestClient
|
||||
else
|
||||
return "Couldn't find prim " + objectID.ToString();
|
||||
|
||||
List<ItemData> items;
|
||||
List<FolderData> folders;
|
||||
Client.Inventory.GetTaskInventory(objectID, objectLocalID, TimeSpan.FromMilliseconds(1000 * 30), out items, out folders);
|
||||
List<InventoryBase> items = Client.Inventory.GetTaskInventory(objectID, objectLocalID, 1000 * 30);
|
||||
|
||||
if (items != null)
|
||||
{
|
||||
string result = String.Empty;
|
||||
|
||||
foreach (ItemData item in items)
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
result += String.Format("[Item] Name: {0} Desc: {1} Type: {2}", item.Name, item.Description,
|
||||
if (items[i] is InventoryFolder)
|
||||
{
|
||||
result += String.Format("[Folder] Name: {0}", items[i].Name) + Environment.NewLine;
|
||||
}
|
||||
else
|
||||
{
|
||||
InventoryItem item = (InventoryItem)items[i];
|
||||
result += String.Format("[Item] Name: {0} Desc: {1} Type: {2}", item.Name, item.Description,
|
||||
item.AssetType) + Environment.NewLine;
|
||||
}
|
||||
foreach (FolderData folder in folders)
|
||||
{
|
||||
result += String.Format("[Folder] Name: {0}", folder.Name) + Environment.NewLine;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -131,18 +131,20 @@ namespace OpenMetaverse.TestClient
|
||||
{
|
||||
if ((prim.Flags & LLObject.ObjectFlags.InventoryEmpty) == 0)
|
||||
{
|
||||
List<ItemData> items;
|
||||
List<FolderData> folders;
|
||||
Client.Inventory.GetTaskInventory(prim.ID, prim.LocalID, TimeSpan.FromSeconds(30), out items, out folders);
|
||||
List<InventoryBase> items = Client.Inventory.GetTaskInventory(prim.ID, prim.LocalID, 1000 * 30);
|
||||
|
||||
if (items != null)
|
||||
{
|
||||
foreach (ItemData item in items)
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
ItemData iitem = item;
|
||||
iitem.Permissions.NextOwnerMask = Perms;
|
||||
Client.Inventory.UpdateTaskInventory(prim.LocalID, iitem);
|
||||
++taskItems;
|
||||
if (!(items[i] is InventoryFolder))
|
||||
{
|
||||
InventoryItem item = (InventoryItem)items[i];
|
||||
item.Permissions.NextOwnerMask = Perms;
|
||||
|
||||
Client.Inventory.UpdateTaskInventory(prim.LocalID, item);
|
||||
++taskItems;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user