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:
Jim Radford
2008-08-21 01:19:06 +00:00
parent cfb75b85b0
commit c551283fd8
30 changed files with 2062 additions and 3700 deletions

View File

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

View File

@@ -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)
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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";

View File

@@ -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;

View File

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

View File

@@ -12,14 +12,14 @@ namespace OpenMetaverse.TestClient
{
public UUID GroupID = UUID.Zero;
public Dictionary<UUID, GroupMember> GroupMembers;
public Dictionary<UUID, AvatarAppearancePacket> Appearances = new Dictionary<UUID, AvatarAppearancePacket>();
public Dictionary<string, Command> Commands = new Dictionary<string,Command>();
public bool Running = true;
public Dictionary<UUID, AvatarAppearancePacket> Appearances = new Dictionary<UUID, AvatarAppearancePacket>();
public Dictionary<string, Command> Commands = new Dictionary<string, Command>();
public bool Running = true;
public bool GroupCommands = false;
public string MasterName = String.Empty;
public UUID MasterKey = UUID.Zero;
public bool AllowObjectMaster = false;
public ClientManager ClientManager;
public ClientManager ClientManager;
public VoiceManager VoiceManager;
// Shell-like inventory commands need to be aware of the 'current' inventory folder.
public InventoryFolder CurrentDirectory = null;
@@ -35,7 +35,7 @@ namespace OpenMetaverse.TestClient
/// </summary>
public TestClient(ClientManager manager)
{
ClientManager = manager;
ClientManager = manager;
updateTimer = new System.Timers.Timer(500);
updateTimer.Elapsed += new System.Timers.ElapsedEventHandler(updateTimer_Elapsed);
@@ -60,6 +60,7 @@ namespace OpenMetaverse.TestClient
Network.RegisterCallback(PacketType.AlertMessage, new NetworkManager.PacketCallback(AlertMessageHandler));
VoiceManager = new VoiceManager(this);
updateTimer.Start();
}
@@ -68,16 +69,12 @@ namespace OpenMetaverse.TestClient
/// </summary>
/// <param name="login">The status of the login</param>
/// <param name="message">Error message on failure, MOTD on success.</param>
public void LoginHandler(LoginStatus login, string message)
public void LoginHandler(LoginStatus login, string message)
{
if (login == LoginStatus.Success)
{
// Create the stores:
InventoryStore = new Inventory(Inventory, Inventory.InventorySkeleton);
LibraryStore = new Inventory(Inventory, Inventory.LibrarySkeleton);
// Start in the inventory root folder:
CurrentDirectory = InventoryStore.RootFolder;
// Start in the inventory root folder.
CurrentDirectory = Inventory.Store.RootFolder;
}
}
@@ -103,17 +100,18 @@ namespace OpenMetaverse.TestClient
public void RegisterCommand(Command command)
{
command.Client = this;
if (!Commands.ContainsKey(command.Name.ToLower()))
{
command.Client = this;
if (!Commands.ContainsKey(command.Name.ToLower()))
{
Commands.Add(command.Name.ToLower(), command);
}
}
}
//breaks up large responses to deal with the max IM size
private void SendResponseIM(GridClient client, UUID fromAgentID, string data)
{
for ( int i = 0 ; i < data.Length ; i += 1024 ) {
for (int i = 0; i < data.Length; i += 1024)
{
int y;
if ((i + 1023) > data.Length)
{
@@ -128,33 +126,33 @@ namespace OpenMetaverse.TestClient
}
}
public void DoCommand(string cmd, UUID fromAgentID)
public void DoCommand(string cmd, UUID fromAgentID)
{
string[] tokens;
string[] tokens;
try { tokens = Parsing.ParseArguments(cmd); }
catch (FormatException ex) { Console.WriteLine(ex.Message); return; }
if (tokens.Length == 0)
return;
string firstToken = tokens[0].ToLower();
string firstToken = tokens[0].ToLower();
// "all balance" will send the balance command to all currently logged in bots
if (firstToken == "all" && tokens.Length > 1)
{
cmd = String.Empty;
if (firstToken == "all" && tokens.Length > 1)
{
cmd = String.Empty;
// Reserialize all of the arguments except for "all"
for (int i = 1; i < tokens.Length; i++)
{
cmd += tokens[i] + " ";
}
// Reserialize all of the arguments except for "all"
for (int i = 1; i < tokens.Length; i++)
{
cmd += tokens[i] + " ";
}
ClientManager.DoCommandAll(cmd, fromAgentID);
ClientManager.DoCommandAll(cmd, fromAgentID);
return;
}
return;
}
if (Commands.ContainsKey(firstToken))
{
@@ -220,10 +218,7 @@ namespace OpenMetaverse.TestClient
bool groupIM = im.GroupIM && GroupMembers != null && GroupMembers.ContainsKey(im.FromAgentID) ? true : false;
if ((im.Dialog == InstantMessageDialog.MessageFromObject) && !AllowObjectMaster)
return;
if (im.FromAgentID == MasterKey || im.FromAgentName == MasterName || (GroupCommands && groupIM))
if (im.FromAgentID == MasterKey || (GroupCommands && groupIM))
{
// Received an IM from someone that is authenticated
Console.WriteLine("<{0} ({1})> {2}: {3} (@{4}:{5})", im.GroupIM ? "GroupIM" : "IM", im.Dialog, im.FromAgentName, im.Message, im.RegionID, im.Position);
@@ -248,31 +243,23 @@ namespace OpenMetaverse.TestClient
im.RegionID, im.Position);
return;
}
}
private UUID Inventory_OnInventoryObjectReceived(InstantMessage offer, AssetType type,
private bool Inventory_OnInventoryObjectReceived(InstantMessage offer, AssetType type,
UUID objectID, bool fromTask)
{
if (MasterKey != UUID.Zero)
{
if (offer.FromAgentID != MasterKey)
return UUID.Zero;
return false;
}
else if (GroupMembers != null && !GroupMembers.ContainsKey(offer.FromAgentID))
{
return UUID.Zero;
}
else if (MasterName != String.Empty)
{
if (offer.FromAgentName != MasterName)
return UUID.Zero;
}
else if (fromTask && !AllowObjectMaster)
{
return UUID.Zero;
return false;
}
return Inventory.FindFolderForType(type);
return true;
}
}
}
}