mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Some work on Inventory (not yet finished or enabled)
This commit is contained in:
@@ -81,6 +81,10 @@ namespace OpenSim.Region.ClientStack
|
||||
public event RequestMapBlocks OnRequestMapBlocks;
|
||||
public event TeleportLocationRequest OnTeleportLocationRequest;
|
||||
|
||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||
public event FetchInventoryDescendents OnFetchInventoryDescendents;
|
||||
public event RequestTaskInventory OnRequestTaskInventory;
|
||||
|
||||
public event UUIDNameRequest OnNameFromUUIDRequest;
|
||||
|
||||
public event ParcelPropertiesRequest OnParcelPropertiesRequest;
|
||||
@@ -577,6 +581,48 @@ namespace OpenSim.Region.ClientStack
|
||||
this.OutPacket(inventoryReply);
|
||||
}
|
||||
|
||||
public void SendInventoryItemUpdate(InventoryItemBase Item)
|
||||
{
|
||||
Encoding enc = Encoding.ASCII;
|
||||
uint FULL_MASK_PERMISSIONS = 2147483647;
|
||||
UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket();
|
||||
InventoryReply.AgentData.AgentID = this.AgentID;
|
||||
InventoryReply.AgentData.SimApproved = true;
|
||||
InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1];
|
||||
InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock();
|
||||
InventoryReply.InventoryData[0].ItemID = Item.inventoryID;
|
||||
InventoryReply.InventoryData[0].AssetID = Item.assetID;
|
||||
InventoryReply.InventoryData[0].CreatorID = Item.creatorsID;
|
||||
InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
|
||||
InventoryReply.InventoryData[0].CreationDate = 1000;
|
||||
InventoryReply.InventoryData[0].Description = enc.GetBytes(Item.inventoryDescription + "\0");
|
||||
InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
|
||||
InventoryReply.InventoryData[0].Flags = 0;
|
||||
InventoryReply.InventoryData[0].FolderID = Item.parentFolderID;
|
||||
InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
|
||||
InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
|
||||
InventoryReply.InventoryData[0].InvType =(sbyte) Item.type;
|
||||
InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0");
|
||||
InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
|
||||
InventoryReply.InventoryData[0].OwnerID = Item.avatarID;
|
||||
InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
|
||||
InventoryReply.InventoryData[0].SalePrice = 100;
|
||||
InventoryReply.InventoryData[0].SaleType = 0;
|
||||
InventoryReply.InventoryData[0].Type =(sbyte) Item.type;
|
||||
InventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
|
||||
|
||||
OutPacket(InventoryReply);
|
||||
}
|
||||
|
||||
public void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName)
|
||||
{
|
||||
ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
|
||||
replytask.InventoryData.TaskID = taskID;
|
||||
replytask.InventoryData.Serial = serial;
|
||||
replytask.InventoryData.Filename = fileName;
|
||||
OutPacket(replytask);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
|
||||
@@ -373,7 +373,8 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.AssetUploadRequest:
|
||||
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
|
||||
this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
|
||||
// Console.WriteLine(request.ToString());
|
||||
//this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
|
||||
break;
|
||||
case PacketType.RequestXfer:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
@@ -382,9 +383,12 @@ namespace OpenSim.Region.ClientStack
|
||||
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
|
||||
break;
|
||||
case PacketType.CreateInventoryFolder:
|
||||
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
|
||||
m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
if (this.OnCreateNewInventoryFolder != null)
|
||||
{
|
||||
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
|
||||
this.OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
||||
//m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
||||
}
|
||||
break;
|
||||
case PacketType.CreateInventoryItem:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
@@ -405,8 +409,12 @@ namespace OpenSim.Region.ClientStack
|
||||
m_inventoryCache.FetchInventory(this, FetchInventory);
|
||||
break;
|
||||
case PacketType.FetchInventoryDescendents:
|
||||
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
|
||||
m_inventoryCache.FetchInventoryDescendents(this, Fetch);
|
||||
if (this.OnFetchInventoryDescendents != null)
|
||||
{
|
||||
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
|
||||
// m_inventoryCache.FetchInventoryDescendents(this, Fetch);
|
||||
this.OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, Fetch.InventoryData.SortOrder);
|
||||
}
|
||||
break;
|
||||
case PacketType.UpdateInventoryItem:
|
||||
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
|
||||
@@ -444,22 +452,10 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.RequestTaskInventory:
|
||||
// Console.WriteLine(Pack.ToString());
|
||||
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
|
||||
ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
|
||||
//bool foundent = false;
|
||||
/* foreach (Entity ent in m_world.Entities.Values)
|
||||
{
|
||||
if (ent.localid == requesttask.InventoryData.LocalID)
|
||||
{
|
||||
replytask.InventoryData.TaskID = ent.uuid;
|
||||
replytask.InventoryData.Serial = 0;
|
||||
replytask.InventoryData.Filename = new byte[0];
|
||||
foundent = true;
|
||||
}
|
||||
}
|
||||
if (foundent)
|
||||
{
|
||||
this.OutPacket(replytask);
|
||||
}*/
|
||||
if (this.OnRequestTaskInventory != null)
|
||||
{
|
||||
this.OnRequestTaskInventory(this, requesttask.InventoryData.LocalID);
|
||||
}
|
||||
break;
|
||||
case PacketType.UpdateTaskInventory:
|
||||
// Console.WriteLine(Pack.ToString());
|
||||
|
||||
Reference in New Issue
Block a user