mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
mantis 8750: several changes to task inventory accept
This commit is contained in:
@@ -159,244 +159,119 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
|
||||
UUID agentID = client.AgentId;
|
||||
|
||||
if (im.dialog == (byte) InstantMessageDialog.InventoryOffered)
|
||||
switch((InstantMessageDialog)im.dialog)
|
||||
{
|
||||
if (im.binaryBucket.Length < 17) // Invalid
|
||||
return;
|
||||
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
ScenePresence recipientAgent = scene.GetScenePresence(recipientID);
|
||||
UUID copyID;
|
||||
|
||||
// First byte is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
if(assetType == AssetType.LinkFolder || assetType == AssetType.Link)
|
||||
case InstantMessageDialog.InventoryOffered:
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't give a link. Nothing given.", false);
|
||||
return;
|
||||
}
|
||||
if (im.binaryBucket.Length < 17) // Invalid
|
||||
return;
|
||||
|
||||
if (assetType == AssetType.Folder)
|
||||
{
|
||||
UUID folderID = new UUID(im.binaryBucket, 1);
|
||||
if (folderID == UUID.Zero)
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
ScenePresence recipientAgent = scene.GetScenePresence(recipientID);
|
||||
UUID copyID;
|
||||
|
||||
// First byte is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
if(assetType == AssetType.LinkFolder || assetType == AssetType.Link)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find folder to give. Nothing given.", false);
|
||||
client.SendAgentAlertMessage("Can't give a link. Nothing given.", false);
|
||||
return;
|
||||
}
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY TRANSFER]: offering folder {0} to agent {1}'s inventory",
|
||||
folderID, recipientID);
|
||||
|
||||
InventoryFolderBase folderCopy = scene.GiveInventoryFolder(client, recipientID, agentID, folderID, UUID.Zero);
|
||||
|
||||
if (folderCopy == null)
|
||||
if (assetType == AssetType.Folder)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find folder to give. Nothing given.", false);
|
||||
return;
|
||||
UUID folderID = new UUID(im.binaryBucket, 1);
|
||||
if (folderID == UUID.Zero)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find folder to give. Nothing given.", false);
|
||||
return;
|
||||
}
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY TRANSFER]: offering folder {0} to agent {1}'s inventory",
|
||||
folderID, recipientID);
|
||||
|
||||
InventoryFolderBase folderCopy = scene.GiveInventoryFolder(client, recipientID, agentID, folderID, UUID.Zero);
|
||||
|
||||
if (folderCopy == null)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find folder to give. Nothing given.", false);
|
||||
return;
|
||||
}
|
||||
|
||||
copyID = folderCopy.ID;
|
||||
copyID.ToBytes(im.binaryBucket,1);
|
||||
im.imSessionID = copyID.Guid;
|
||||
|
||||
if (recipientAgent != null)
|
||||
{
|
||||
recipientAgent.ControllingClient.SendBulkUpdateInventory(folderCopy);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UUID itemID = new UUID(im.binaryBucket, 1);
|
||||
if (itemID == UUID.Zero)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find item to give. Nothing given.", false);
|
||||
return;
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[INVENTORY TRANSFER]: (giving) Inserting item {0} "+
|
||||
"into agent {1}'s inventory",
|
||||
itemID, recipientID);
|
||||
|
||||
string message;
|
||||
InventoryItemBase itemCopy = scene.GiveInventoryItem(recipientID, agentID, itemID, out message);
|
||||
|
||||
if (itemCopy == null)
|
||||
{
|
||||
client.SendAgentAlertMessage(message, false);
|
||||
return;
|
||||
}
|
||||
|
||||
copyID = itemCopy.ID;
|
||||
copyID.ToBytes(im.binaryBucket, 1);
|
||||
|
||||
if (recipientAgent != null)
|
||||
recipientAgent.ControllingClient.SendBulkUpdateInventory(itemCopy);
|
||||
|
||||
im.imSessionID = copyID.Guid;
|
||||
}
|
||||
|
||||
copyID = folderCopy.ID;
|
||||
copyID.ToBytes(im.binaryBucket,1);
|
||||
im.imSessionID = copyID.Guid;
|
||||
// Send the IM to the recipient. The item is already
|
||||
// in their inventory, so it will not be lost if
|
||||
// they are offline.
|
||||
|
||||
if (recipientAgent != null)
|
||||
{
|
||||
recipientAgent.ControllingClient.SendBulkUpdateInventory(folderCopy);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UUID itemID = new UUID(im.binaryBucket, 1);
|
||||
if (itemID == UUID.Zero)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find item to give. Nothing given.", false);
|
||||
im.offline = 0;
|
||||
recipientAgent.ControllingClient.SendInstantMessage(im);
|
||||
return;
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[INVENTORY TRANSFER]: (giving) Inserting item {0} "+
|
||||
"into agent {1}'s inventory",
|
||||
itemID, recipientID);
|
||||
|
||||
string message;
|
||||
InventoryItemBase itemCopy = scene.GiveInventoryItem(recipientID, agentID, itemID, out message);
|
||||
|
||||
if (itemCopy == null)
|
||||
else
|
||||
{
|
||||
client.SendAgentAlertMessage(message, false);
|
||||
im.offline = 0;
|
||||
if (m_TransferModule != null)
|
||||
{
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success)
|
||||
{
|
||||
if (!success)
|
||||
client.SendAlertMessage("User not online. Inventory has been saved");
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case InstantMessageDialog.InventoryAccepted:
|
||||
{
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
return;
|
||||
}
|
||||
|
||||
copyID = itemCopy.ID;
|
||||
copyID.ToBytes(im.binaryBucket, 1);
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
|
||||
if (recipientAgent != null)
|
||||
recipientAgent.ControllingClient.SendBulkUpdateInventory(itemCopy);
|
||||
|
||||
im.imSessionID = copyID.Guid;
|
||||
}
|
||||
|
||||
// Send the IM to the recipient. The item is already
|
||||
// in their inventory, so it will not be lost if
|
||||
// they are offline.
|
||||
|
||||
if (recipientAgent != null)
|
||||
{
|
||||
im.offline = 0;
|
||||
recipientAgent.ControllingClient.SendInstantMessage(im);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
im.offline = 0;
|
||||
if (m_TransferModule != null)
|
||||
{
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success)
|
||||
{
|
||||
if (!success)
|
||||
client.SendAlertMessage("User not online. Inventory has been saved");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted)
|
||||
{
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
return;
|
||||
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
|
||||
ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID));
|
||||
if (user != null) // Local
|
||||
{
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_TransferModule != null)
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success) {});
|
||||
}
|
||||
}
|
||||
else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
|
||||
{
|
||||
if (im.binaryBucket == null || im.binaryBucket.Length < 16)
|
||||
return;
|
||||
|
||||
UUID destinationFolderID = new UUID(im.binaryBucket, 0);
|
||||
if(destinationFolderID == UUID.Zero) // uuid-zero is a valid folder ID(?) keeping old code assuming not
|
||||
return;
|
||||
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
InventoryFolderBase destinationFolder = null;
|
||||
destinationFolder = invService.GetFolder(agentID, destinationFolderID);
|
||||
|
||||
if(destinationFolder == null)
|
||||
return; // no where to put it
|
||||
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
return;
|
||||
|
||||
InventoryItemBase item = invService.GetItem(agentID, inventoryID);
|
||||
InventoryFolderBase folder = null;
|
||||
UUID? previousParentFolderID = null;
|
||||
|
||||
if (item != null) // It's an item
|
||||
{
|
||||
if(item.Folder != destinationFolderID)
|
||||
{
|
||||
item.Folder = destinationFolderID;
|
||||
invService.MoveItems(item.Owner, new List<InventoryItemBase>() { item });
|
||||
client.SendInventoryItemCreateUpdate(item, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
folder = invService.GetFolder(agentID, inventoryID);
|
||||
|
||||
if (folder != null) // It's a folder
|
||||
{
|
||||
if(folder.ParentID != destinationFolderID)
|
||||
{
|
||||
previousParentFolderID = folder.ParentID;
|
||||
folder.ParentID = destinationFolderID;
|
||||
invService.MoveFolder(folder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
|
||||
if (previousParentFolderID != null)
|
||||
{
|
||||
InventoryFolderBase previousParentFolder = invService.GetFolder(agentID, previousParentFolderID.Value);
|
||||
if(previousParentFolder != null)
|
||||
scene.SendInventoryUpdate(client, previousParentFolder, true, true);
|
||||
|
||||
scene.SendInventoryUpdate(client, destinationFolder, true, true);
|
||||
}
|
||||
}
|
||||
else if (im.dialog == (byte)InstantMessageDialog.InventoryDeclined ||
|
||||
im.dialog == (byte)InstantMessageDialog.TaskInventoryDeclined)
|
||||
{
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
InventoryFolderBase trashFolder = invService.GetFolderForType(agentID, FolderType.Trash);
|
||||
if(trashFolder == null) //??
|
||||
{
|
||||
client.SendAgentAlertMessage("Trash folder not found", false);
|
||||
return;
|
||||
}
|
||||
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
{
|
||||
client.SendAgentAlertMessage("Item or folder not found", false);
|
||||
return;
|
||||
}
|
||||
|
||||
InventoryItemBase item = invService.GetItem(agentID, inventoryID);
|
||||
InventoryFolderBase folder = null;
|
||||
UUID? previousParentFolderID = null;
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
if (trashFolder.ID != item.Folder)
|
||||
{
|
||||
item.Folder = trashFolder.ID;
|
||||
invService.MoveItems(item.Owner, new List<InventoryItemBase>() { item });
|
||||
client.SendInventoryItemCreateUpdate(item, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
folder = invService.GetFolder(agentID, inventoryID);
|
||||
if (folder != null)
|
||||
{
|
||||
if (trashFolder.ID != folder.ParentID)
|
||||
{
|
||||
previousParentFolderID = folder.ParentID;
|
||||
folder.ParentID = trashFolder.ID;
|
||||
invService.MoveFolder(folder);
|
||||
client.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
|
||||
if (previousParentFolderID != null)
|
||||
{
|
||||
InventoryFolderBase previousParentFolder = invService.GetFolder(agentID, (UUID)previousParentFolderID);
|
||||
if(previousParentFolder != null)
|
||||
scene.SendInventoryUpdate(client, previousParentFolder, true, true);
|
||||
|
||||
scene.SendInventoryUpdate(client, trashFolder, true, true);
|
||||
}
|
||||
|
||||
if (im.dialog == (byte)InstantMessageDialog.InventoryDeclined)
|
||||
{
|
||||
ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID));
|
||||
|
||||
if (user != null) // Local
|
||||
{
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
@@ -404,9 +279,146 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
else
|
||||
{
|
||||
if (m_TransferModule != null)
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success) { });
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success) {});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case InstantMessageDialog.TaskInventoryAccepted:
|
||||
{
|
||||
if (im.binaryBucket == null || im.binaryBucket.Length < 16)
|
||||
return;
|
||||
|
||||
UUID destinationFolderID = new UUID(im.binaryBucket, 0);
|
||||
if(destinationFolderID == UUID.Zero) // uuid-zero is a valid folder ID(?) keeping old code assuming not
|
||||
return;
|
||||
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
InventoryFolderBase destinationFolder = null;
|
||||
destinationFolder = invService.GetFolder(agentID, destinationFolderID);
|
||||
|
||||
if(destinationFolder == null)
|
||||
return; // no where to put it
|
||||
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
return;
|
||||
|
||||
InventoryItemBase item = invService.GetItem(agentID, inventoryID);
|
||||
InventoryFolderBase folder = null;
|
||||
//UUID? previousParentFolderID = null;
|
||||
|
||||
if (item != null) // It's an item
|
||||
{
|
||||
if(item.Folder != destinationFolderID)
|
||||
{
|
||||
//previousParentFolderID = item.Folder;
|
||||
item.Folder = destinationFolderID;
|
||||
invService.MoveItems(item.Owner, new List<InventoryItemBase>() { item });
|
||||
client.SendInventoryItemCreateUpdate(item, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
folder = invService.GetFolder(agentID, inventoryID);
|
||||
|
||||
if (folder != null) // It's a folder
|
||||
{
|
||||
if(folder.ParentID != destinationFolderID)
|
||||
{
|
||||
//previousParentFolderID = folder.ParentID;
|
||||
folder.ParentID = destinationFolderID;
|
||||
invService.MoveFolder(folder);
|
||||
client.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
|
||||
//if (previousParentFolderID != null)
|
||||
{
|
||||
//InventoryFolderBase previousParentFolder = invService.GetFolder(agentID, previousParentFolderID.Value);
|
||||
//if(previousParentFolder != null)
|
||||
//scene.SendInventoryUpdate(client, previousParentFolder, true, true);
|
||||
|
||||
//scene.SendInventoryUpdate(client, destinationFolder, true, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case InstantMessageDialog.InventoryDeclined:
|
||||
case InstantMessageDialog.TaskInventoryDeclined:
|
||||
{
|
||||
IInventoryService invService = scene.InventoryService;
|
||||
InventoryFolderBase trashFolder = invService.GetFolderForType(agentID, FolderType.Trash);
|
||||
if(trashFolder == null) //??
|
||||
{
|
||||
client.SendAgentAlertMessage("Trash folder not found", false);
|
||||
return;
|
||||
}
|
||||
|
||||
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
|
||||
if(inventoryID == UUID.Zero)
|
||||
{
|
||||
client.SendAgentAlertMessage("Item or folder not found", false);
|
||||
return;
|
||||
}
|
||||
|
||||
InventoryItemBase item = invService.GetItem(agentID, inventoryID);
|
||||
InventoryFolderBase folder = null;
|
||||
//UUID? previousParentFolderID = null;
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
if (trashFolder.ID != item.Folder)
|
||||
{
|
||||
//previousParentFolderID = item.Folder;
|
||||
item.Folder = trashFolder.ID;
|
||||
invService.MoveItems(item.Owner, new List<InventoryItemBase>() { item });
|
||||
client.SendInventoryItemCreateUpdate(item, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
folder = invService.GetFolder(agentID, inventoryID);
|
||||
if (folder != null)
|
||||
{
|
||||
if (trashFolder.ID != folder.ParentID)
|
||||
{
|
||||
//previousParentFolderID = folder.ParentID;
|
||||
folder.ParentID = trashFolder.ID;
|
||||
invService.MoveFolder(folder);
|
||||
client.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
|
||||
//if (previousParentFolderID != null)
|
||||
{
|
||||
//InventoryFolderBase previousParentFolder = invService.GetFolder(agentID, (UUID)previousParentFolderID);
|
||||
//if(previousParentFolder != null)
|
||||
//scene.SendInventoryUpdate(client, previousParentFolder, true, true);
|
||||
|
||||
//scene.SendInventoryUpdate(client, trashFolder, true, true);
|
||||
}
|
||||
|
||||
if (im.dialog == (byte)InstantMessageDialog.InventoryDeclined)
|
||||
{
|
||||
ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID));
|
||||
|
||||
if (user != null) // Local
|
||||
{
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_TransferModule != null)
|
||||
m_TransferModule.SendInstantMessage(im, delegate(bool success) { });
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,89 +441,93 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
if (user == null)
|
||||
return;
|
||||
|
||||
switch((InstantMessageDialog)im.dialog)
|
||||
{
|
||||
// This requires a little bit of processing because we have to make the
|
||||
// new item visible in the recipient's inventory here
|
||||
//
|
||||
if (im.dialog == (byte) InstantMessageDialog.InventoryOffered)
|
||||
{
|
||||
if (im.binaryBucket.Length < 17) // Invalid
|
||||
return;
|
||||
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
|
||||
// First byte is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
|
||||
if (AssetType.Folder == assetType)
|
||||
case InstantMessageDialog.InventoryOffered:
|
||||
{
|
||||
UUID folderID = new UUID(im.binaryBucket, 1);
|
||||
if (im.binaryBucket.Length < 17) // Invalid
|
||||
return;
|
||||
|
||||
InventoryFolderBase folder =
|
||||
scene.InventoryService.GetFolder(recipientID, folderID);
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
|
||||
if (folder != null)
|
||||
user.ControllingClient.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
else
|
||||
{
|
||||
UUID itemID = new UUID(im.binaryBucket, 1);
|
||||
// First byte is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
|
||||
InventoryItemBase item =
|
||||
scene.InventoryService.GetItem(recipientID, itemID);
|
||||
|
||||
if (item != null)
|
||||
if (AssetType.Folder == assetType)
|
||||
{
|
||||
user.ControllingClient.SendBulkUpdateInventory(item);
|
||||
UUID folderID = new UUID(im.binaryBucket, 1);
|
||||
|
||||
InventoryFolderBase folder =
|
||||
scene.InventoryService.GetFolder(recipientID, folderID);
|
||||
|
||||
if (folder != null)
|
||||
user.ControllingClient.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
}
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
}
|
||||
if (im.dialog == (byte) InstantMessageDialog.TaskInventoryOffered)
|
||||
{
|
||||
if (im.binaryBucket.Length < 1) // Invalid
|
||||
return;
|
||||
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
|
||||
// Bucket is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
|
||||
if (AssetType.Folder == assetType)
|
||||
{
|
||||
UUID folderID = new UUID(im.imSessionID);
|
||||
|
||||
InventoryFolderBase folder =
|
||||
scene.InventoryService.GetFolder(recipientID, folderID);
|
||||
|
||||
if (folder != null)
|
||||
user.ControllingClient.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
else
|
||||
{
|
||||
UUID itemID = new UUID(im.imSessionID);
|
||||
|
||||
InventoryItemBase item =
|
||||
scene.InventoryService.GetItem(recipientID, itemID);
|
||||
|
||||
if (item != null)
|
||||
else
|
||||
{
|
||||
user.ControllingClient.SendBulkUpdateInventory(item);
|
||||
UUID itemID = new UUID(im.binaryBucket, 1);
|
||||
|
||||
InventoryItemBase item =
|
||||
scene.InventoryService.GetItem(recipientID, itemID);
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
user.ControllingClient.SendBulkUpdateInventory(item);
|
||||
}
|
||||
}
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
break;
|
||||
}
|
||||
case InstantMessageDialog.TaskInventoryOffered:
|
||||
{
|
||||
if (im.binaryBucket.Length < 1) // Invalid
|
||||
return;
|
||||
|
||||
// Fix up binary bucket since this may be 17 chars long here
|
||||
Byte[] bucket = new Byte[1];
|
||||
bucket[0] = im.binaryBucket[0];
|
||||
im.binaryBucket = bucket;
|
||||
UUID recipientID = new UUID(im.toAgentID);
|
||||
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
}
|
||||
else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted ||
|
||||
im.dialog == (byte) InstantMessageDialog.InventoryDeclined ||
|
||||
im.dialog == (byte) InstantMessageDialog.TaskInventoryDeclined ||
|
||||
im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
|
||||
{
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
// Bucket is the asset type
|
||||
AssetType assetType = (AssetType)im.binaryBucket[0];
|
||||
|
||||
if (AssetType.Folder == assetType)
|
||||
{
|
||||
UUID folderID = new UUID(im.imSessionID);
|
||||
InventoryFolderBase folder = scene.InventoryService.GetFolder(recipientID, folderID);
|
||||
|
||||
if (folder != null)
|
||||
user.ControllingClient.SendBulkUpdateInventory(folder);
|
||||
}
|
||||
else
|
||||
{
|
||||
UUID itemID = new UUID(im.imSessionID);
|
||||
InventoryItemBase item = scene.InventoryService.GetItem(recipientID, itemID);
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
user.ControllingClient.SendBulkUpdateInventory(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Fix up binary bucket since this may be 17 chars long here
|
||||
Byte[] bucket = new Byte[1];
|
||||
bucket[0] = im.binaryBucket[0];
|
||||
im.binaryBucket = bucket;
|
||||
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
break;
|
||||
}
|
||||
case InstantMessageDialog.InventoryAccepted:
|
||||
case InstantMessageDialog.InventoryDeclined:
|
||||
case InstantMessageDialog.TaskInventoryDeclined:
|
||||
case InstantMessageDialog.TaskInventoryAccepted:
|
||||
{
|
||||
user.ControllingClient.SendInstantMessage(im);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user