mirror of
https://github.com/opensim/opensim.git
synced 2026-08-12 12:25:42 +08:00
More work on inventory, can now create other inventory types, like Clothes and body parts. [Note while you can edit these, at the moment your changes won't be saved between restarts. This will be fixed very soon.]
This commit is contained in:
@@ -86,6 +86,8 @@ namespace OpenSim.Region.ClientStack
|
||||
public event FetchInventoryDescendents OnFetchInventoryDescendents;
|
||||
public event FetchInventory OnFetchInventory;
|
||||
public event RequestTaskInventory OnRequestTaskInventory;
|
||||
public event UDPAssetUploadRequest OnAssetUploadRequest;
|
||||
public event XferReceive OnXferReceive;
|
||||
|
||||
public event UUIDNameRequest OnNameFromUUIDRequest;
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.ObjectAdd:
|
||||
if (OnAddPrim != null)
|
||||
{
|
||||
ObjectAddPacket addPacket = (ObjectAddPacket) Pack ;
|
||||
ObjectAddPacket addPacket = (ObjectAddPacket)Pack;
|
||||
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
|
||||
|
||||
OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape);
|
||||
@@ -290,7 +290,7 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectGrab:
|
||||
ObjectGrabPacket grab = (ObjectGrabPacket)Pack;
|
||||
ObjectGrabPacket grab = (ObjectGrabPacket)Pack;
|
||||
if (OnGrabObject != null)
|
||||
{
|
||||
OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this);
|
||||
@@ -338,7 +338,7 @@ namespace OpenSim.Region.ClientStack
|
||||
#region Inventory/Asset/Other related packets
|
||||
case PacketType.RequestImage:
|
||||
RequestImagePacket imageRequest = (RequestImagePacket)Pack;
|
||||
|
||||
|
||||
for (int i = 0; i < imageRequest.RequestImage.Length; i++)
|
||||
{
|
||||
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet);
|
||||
@@ -351,14 +351,20 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.AssetUploadRequest:
|
||||
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
|
||||
// Console.WriteLine(request.ToString());
|
||||
//this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
|
||||
if (OnAssetUploadRequest != null)
|
||||
{
|
||||
OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(this.SecureSessionID), request.AssetBlock.TransactionID, request.AssetBlock.Type, request.AssetBlock.AssetData);
|
||||
}
|
||||
break;
|
||||
case PacketType.RequestXfer:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
break;
|
||||
case PacketType.SendXferPacket:
|
||||
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
|
||||
SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack;
|
||||
if (OnXferReceive != null)
|
||||
{
|
||||
OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
|
||||
}
|
||||
break;
|
||||
case PacketType.CreateInventoryFolder:
|
||||
if (this.OnCreateNewInventoryFolder != null)
|
||||
@@ -369,18 +375,11 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.CreateInventoryItem:
|
||||
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
|
||||
if (createItem.InventoryBlock.TransactionID != LLUUID.Zero)
|
||||
if (this.OnCreateNewInventoryItem != null)
|
||||
{
|
||||
this.UploadAssets.CreateInventoryItem(createItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.OnCreateNewInventoryItem != null)
|
||||
{
|
||||
this.OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, createItem.InventoryBlock.FolderID, createItem.InventoryBlock.CallbackID,
|
||||
Util.FieldToString(createItem.InventoryBlock.Description), Util.FieldToString(createItem.InventoryBlock.Name), createItem.InventoryBlock.InvType,
|
||||
createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask);
|
||||
}
|
||||
this.OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, createItem.InventoryBlock.FolderID, createItem.InventoryBlock.CallbackID,
|
||||
Util.FieldToString(createItem.InventoryBlock.Description), Util.FieldToString(createItem.InventoryBlock.Name), createItem.InventoryBlock.InvType,
|
||||
createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask);
|
||||
}
|
||||
break;
|
||||
case PacketType.FetchInventory:
|
||||
@@ -558,7 +557,7 @@ namespace OpenSim.Region.ClientStack
|
||||
if (OnParcelPropertiesUpdateRequest != null)
|
||||
{
|
||||
OnParcelPropertiesUpdateRequest(updatePacket, this);
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
case PacketType.ParcelSelectObjects:
|
||||
|
||||
@@ -33,6 +33,7 @@ using OpenSim.Framework.Communications.Caches;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Framework.Data;
|
||||
using OpenSim.Framework.UserManagement;
|
||||
|
||||
namespace OpenSim.Region.Communications.Local
|
||||
{
|
||||
@@ -42,6 +43,7 @@ namespace OpenSim.Region.Communications.Local
|
||||
public LocalUserServices UserServices;
|
||||
public LocalLoginService LoginServices;
|
||||
public LocalInventoryService InvenServices;
|
||||
// public CAPSService CapsServices;
|
||||
|
||||
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, bool accountsAuthenticate, string welcomeMessage )
|
||||
: base(serversInfo, httpServer, assetCache)
|
||||
@@ -57,6 +59,8 @@ namespace OpenSim.Region.Communications.Local
|
||||
InstanceServices = new LocalBackEndServices();
|
||||
GridServer = InstanceServices;
|
||||
InterRegion = InstanceServices;
|
||||
|
||||
//CapsServices = new CAPSService(httpServer);
|
||||
|
||||
LoginServices = new LocalLoginService(UserServices, welcomeMessage, this, serversInfo, accountsAuthenticate);
|
||||
httpServer.AddXmlRPCHandler("login_to_simulator", LoginServices.XmlRpcLoginMethod);
|
||||
|
||||
@@ -90,6 +90,7 @@ namespace OpenSim.Region.Communications.Local
|
||||
response.RegionY = reg.RegionLocY;
|
||||
|
||||
response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CAPS/" + capsPath + "0000/";
|
||||
// response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/";
|
||||
theUser.currentAgent.currentRegion = reg.SimUUID;
|
||||
theUser.currentAgent.currentHandle = reg.RegionHandle;
|
||||
|
||||
|
||||
@@ -714,33 +714,41 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// <param name="nextOwnerMask"></param>
|
||||
public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
|
||||
{
|
||||
CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
|
||||
if (userInfo != null)
|
||||
if (transActionID == LLUUID.Zero)
|
||||
{
|
||||
AssetBase asset = new AssetBase();
|
||||
asset.Name = name;
|
||||
asset.Description = description;
|
||||
asset.InvType = invType;
|
||||
asset.Type = type;
|
||||
asset.FullID = LLUUID.Random();
|
||||
asset.Data = new byte[1];
|
||||
this.assetCache.AddAsset(asset);
|
||||
CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
|
||||
if (userInfo != null)
|
||||
{
|
||||
AssetBase asset = new AssetBase();
|
||||
asset.Name = name;
|
||||
asset.Description = description;
|
||||
asset.InvType = invType;
|
||||
asset.Type = type;
|
||||
asset.FullID = LLUUID.Random();
|
||||
asset.Data = new byte[1];
|
||||
this.assetCache.AddAsset(asset);
|
||||
|
||||
InventoryItemBase item = new InventoryItemBase();
|
||||
item.avatarID = remoteClient.AgentId;
|
||||
item.creatorsID = remoteClient.AgentId;
|
||||
item.inventoryID = LLUUID.Random();
|
||||
item.assetID = asset.FullID;
|
||||
item.inventoryDescription = description;
|
||||
item.inventoryName = name;
|
||||
item.assetType = invType;
|
||||
item.invType = invType;
|
||||
item.parentFolderID = folderID;
|
||||
item.inventoryCurrentPermissions = 2147483647;
|
||||
item.inventoryNextPermissions = nextOwnerMask;
|
||||
InventoryItemBase item = new InventoryItemBase();
|
||||
item.avatarID = remoteClient.AgentId;
|
||||
item.creatorsID = remoteClient.AgentId;
|
||||
item.inventoryID = LLUUID.Random();
|
||||
item.assetID = asset.FullID;
|
||||
item.inventoryDescription = description;
|
||||
item.inventoryName = name;
|
||||
item.assetType = invType;
|
||||
item.invType = invType;
|
||||
item.parentFolderID = folderID;
|
||||
item.inventoryCurrentPermissions = 2147483647;
|
||||
item.inventoryNextPermissions = nextOwnerMask;
|
||||
|
||||
userInfo.AddItem(remoteClient.AgentId, item);
|
||||
remoteClient.SendInventoryItemUpdate(item);
|
||||
userInfo.AddItem(remoteClient.AgentId, item);
|
||||
remoteClient.SendInventoryItemUpdate(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
commsManager.TransactionsManager.HandleInventoryFromTransaction(remoteClient, transActionID, folderID, callbackID, description, name, invType, type, wearableType, nextOwnerMask);
|
||||
//System.Console.WriteLine("request to create inventory item from transaction " + transActionID);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -577,6 +577,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
CreateAndAddScenePresence(client);
|
||||
m_LandManager.sendParcelOverlay(client);
|
||||
commsManager.UserProfiles.AddNewUser(client.AgentId);
|
||||
commsManager.TransactionsManager.AddUser(client.AgentId);
|
||||
}
|
||||
|
||||
protected virtual void SubscribeToClientEvents(IClientAPI client)
|
||||
@@ -625,6 +626,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
client.OnFetchInventoryDescendents += commsManager.UserProfiles.HandleFecthInventoryDescendents;
|
||||
client.OnRequestTaskInventory += RequestTaskInventory;
|
||||
client.OnFetchInventory += commsManager.UserProfiles.HandleFetchInventory;
|
||||
client.OnAssetUploadRequest += commsManager.TransactionsManager.HandleUDPUploadRequest;
|
||||
client.OnXferReceive += commsManager.TransactionsManager.HandleXfer;
|
||||
|
||||
client.OnGrabObject += ProcessObjectGrab;
|
||||
}
|
||||
|
||||
@@ -706,7 +706,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
/// <summary>
|
||||
///
|
||||
|
||||
@@ -71,6 +71,8 @@ namespace SimpleApp
|
||||
public event FetchInventoryDescendents OnFetchInventoryDescendents;
|
||||
public event FetchInventory OnFetchInventory;
|
||||
public event RequestTaskInventory OnRequestTaskInventory;
|
||||
public event UDPAssetUploadRequest OnAssetUploadRequest;
|
||||
public event XferReceive OnXferReceive;
|
||||
|
||||
public event UUIDNameRequest OnNameFromUUIDRequest;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user