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.]

afrisby
MW 2007-08-15 18:34:36 +00:00
parent 2a5a8c48c3
commit 94dded470d
14 changed files with 247 additions and 54 deletions

View File

@ -41,14 +41,20 @@ namespace OpenSim.Framework.Communications.Caches
public class AssetTransactionManager public class AssetTransactionManager
{ {
// Fields // Fields
public CommunicationsManager CommsManager;
public Dictionary<LLUUID, AgentAssetTransactions> AgentTransactions = new Dictionary<LLUUID, AgentAssetTransactions>(); public Dictionary<LLUUID, AgentAssetTransactions> AgentTransactions = new Dictionary<LLUUID, AgentAssetTransactions>();
public AssetTransactionManager(CommunicationsManager commsManager)
{
CommsManager = commsManager;
}
// Methods // Methods
public AgentAssetTransactions AddUser(LLUUID userID) public AgentAssetTransactions AddUser(LLUUID userID)
{ {
if (!this.AgentTransactions.ContainsKey(userID)) if (!this.AgentTransactions.ContainsKey(userID))
{ {
AgentAssetTransactions transactions = new AgentAssetTransactions(userID); AgentAssetTransactions transactions = new AgentAssetTransactions(userID, this);
this.AgentTransactions.Add(userID, transactions); this.AgentTransactions.Add(userID, transactions);
return transactions; return transactions;
} }
@ -64,18 +70,38 @@ namespace OpenSim.Framework.Communications.Caches
return null; return null;
} }
public void HandleInventoryFromTransaction() public void HandleInventoryFromTransaction(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
{ {
AgentAssetTransactions transactions = this.GetUserTransActions(remoteClient.AgentId);
if (transactions != null)
{
transactions.RequestCreateInventoryItem(remoteClient, transactionID, folderID, callbackID, description, name, invType, type, wearableType, nextOwnerMask);
}
} }
public void HandleUDPUploadRequest() public void HandleUDPUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data)
{ {
AgentAssetTransactions transactions = this.GetUserTransActions(remoteClient.AgentId);
if (transactions != null)
{
AgentAssetTransactions.AssetXferUploader uploader = transactions.RequestXferUploader(transaction);
if (uploader != null)
{
uploader.Initialise(remoteClient, assetID, transaction, type, data);
}
}
} }
public void HandleXfer(IClientAPI remoteClient, uint xferID, uint packetID, byte[] data) public void HandleXfer(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data)
{ {
AgentAssetTransactions transactions = this.GetUserTransActions(remoteClient.AgentId);
if (transactions != null)
{
transactions.HandleXfer(xferID, packetID, data);
}
} }
} }
} }

View File

@ -35,6 +35,7 @@ using libsecondlife.Packets;
using OpenSim.Framework.Interfaces; using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types; using OpenSim.Framework.Types;
using OpenSim.Framework.Utilities; using OpenSim.Framework.Utilities;
using OpenSim.Framework.Data;
using OpenSim.Region.Capabilities; using OpenSim.Region.Capabilities;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
@ -47,11 +48,13 @@ namespace OpenSim.Framework.Communications.Caches
public List<NoteCardCapsUpdate> NotecardUpdaters = new List<NoteCardCapsUpdate>(); public List<NoteCardCapsUpdate> NotecardUpdaters = new List<NoteCardCapsUpdate>();
public LLUUID UserID; public LLUUID UserID;
public Dictionary<LLUUID, AssetXferUploader> XferUploaders = new Dictionary<LLUUID, AssetXferUploader>(); public Dictionary<LLUUID, AssetXferUploader> XferUploaders = new Dictionary<LLUUID, AssetXferUploader>();
public AssetTransactionManager Manager;
// Methods // Methods
public AgentAssetTransactions(LLUUID agentID) public AgentAssetTransactions(LLUUID agentID, AssetTransactionManager manager)
{ {
this.UserID = agentID; this.UserID = agentID;
Manager = manager;
} }
public AssetCapsUploader RequestCapsUploader() public AssetCapsUploader RequestCapsUploader()
@ -70,9 +73,34 @@ namespace OpenSim.Framework.Communications.Caches
public AssetXferUploader RequestXferUploader(LLUUID transactionID) public AssetXferUploader RequestXferUploader(LLUUID transactionID)
{ {
AssetXferUploader uploader = new AssetXferUploader(); if (!this.XferUploaders.ContainsKey(transactionID))
this.XferUploaders.Add(transactionID, uploader); {
return uploader; AssetXferUploader uploader = new AssetXferUploader(this);
this.XferUploaders.Add(transactionID, uploader);
return uploader;
}
return null;
}
public void HandleXfer(ulong xferID, uint packetID, byte[] data)
{
foreach (AssetXferUploader uploader in this.XferUploaders.Values)
{
if (uploader.XferID == xferID)
{
uploader.HandleXferPacket(xferID, packetID, data);
break;
}
}
}
public void RequestCreateInventoryItem(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
{
if (this.XferUploaders.ContainsKey(transactionID))
{
this.XferUploaders[transactionID].RequestCreateInventoryItem(remoteClient, transactionID, folderID, callbackID, description, name, invType, type, wearableType, nextOwnerMask);
}
} }
// Nested Types // Nested Types
@ -143,10 +171,23 @@ namespace OpenSim.Framework.Communications.Caches
private IClientAPI ourClient; private IClientAPI ourClient;
public LLUUID TransactionID = LLUUID.Zero; public LLUUID TransactionID = LLUUID.Zero;
public bool UploadComplete; public bool UploadComplete;
public uint XferID; public ulong XferID;
private string m_name = "";
private string m_description = "";
private sbyte type = 0;
private sbyte invType = 0;
private uint nextPerm = 0;
private bool m_finished = false;
private bool m_createItem = false;
private AgentAssetTransactions m_userTransactions;
public AssetXferUploader(AgentAssetTransactions transactions)
{
this.m_userTransactions = transactions;
}
// Methods // Methods
public void HandleXferPacket(uint xferID, uint packetID, byte[] data) public void HandleXferPacket(ulong xferID, uint packetID, byte[] data)
{ {
if (this.XferID == xferID) if (this.XferID == xferID)
{ {
@ -216,6 +257,67 @@ namespace OpenSim.Framework.Communications.Caches
newPack.AssetBlock.Success = true; newPack.AssetBlock.Success = true;
newPack.AssetBlock.UUID = this.Asset.FullID; newPack.AssetBlock.UUID = this.Asset.FullID;
this.ourClient.OutPacket(newPack); this.ourClient.OutPacket(newPack);
this.m_finished = true;
if (m_createItem)
{
DoCreateItem();
}
Console.WriteLine("upload complete "+ this.TransactionID);
//SaveAssetToFile("testudpupload" + Util.RandomClass.Next(1, 1000) + ".dat", this.Asset.Data);
}
private void SaveAssetToFile(string filename, byte[] data)
{
FileStream fs = File.Create(filename);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(data);
bw.Close();
fs.Close();
}
public void RequestCreateInventoryItem(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
{
if (this.TransactionID == transactionID)
{
this.InventFolder = folderID;
this.m_name = name;
this.m_description = description;
this.type = type;
this.invType = invType;
this.nextPerm = nextOwnerMask;
this.Asset.Name = name;
this.Asset.Description = description;
this.Asset.Type = type;
this.Asset.InvType = invType;
m_createItem = true;
if (m_finished)
{
DoCreateItem();
}
}
}
private void DoCreateItem()
{
this.m_userTransactions.Manager.CommsManager.AssetCache.AddAsset(this.Asset);
CachedUserInfo userInfo = m_userTransactions.Manager.CommsManager.UserProfiles.GetUserDetails(ourClient.AgentId);
if (userInfo != null)
{
InventoryItemBase item = new InventoryItemBase();
item.avatarID = this.ourClient.AgentId;
item.creatorsID = ourClient.AgentId;
item.inventoryID = LLUUID.Random();
item.assetID = Asset.FullID;
item.inventoryDescription = this.m_description;
item.inventoryName = m_name;
item.assetType = type;
item.invType = this.invType;
item.parentFolderID = this.InventFolder;
item.inventoryCurrentPermissions = 2147483647;
item.inventoryNextPermissions = this.nextPerm;
userInfo.AddItem(ourClient.AgentId, item);
ourClient.SendInventoryItemUpdate(item);
}
} }
} }

View File

@ -45,6 +45,7 @@ namespace OpenSim.Framework.Communications
public IInventoryServices InventoryServer; public IInventoryServices InventoryServer;
public IInterRegionCommunications InterRegion; public IInterRegionCommunications InterRegion;
public UserProfileCache UserProfiles; public UserProfileCache UserProfiles;
public AssetTransactionManager TransactionsManager;
public AssetCache AssetCache; public AssetCache AssetCache;
public NetworkServersInfo ServersInfo; public NetworkServersInfo ServersInfo;
@ -53,6 +54,7 @@ namespace OpenSim.Framework.Communications
ServersInfo = serversInfo; ServersInfo = serversInfo;
this.AssetCache = assetCache; this.AssetCache = assetCache;
UserProfiles = new UserProfileCache(this); UserProfiles = new UserProfileCache(this);
TransactionsManager = new AssetTransactionManager(this);
} }
#region Packet Handlers #region Packet Handlers

View File

@ -87,6 +87,9 @@ namespace OpenSim.Framework.Interfaces
public delegate void FetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID); public delegate void FetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID);
public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID); public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID);
public delegate void UDPAssetUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data);
public delegate void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data);
public interface IClientAPI public interface IClientAPI
{ {
event ImprovedInstantMessage OnInstantMessage; event ImprovedInstantMessage OnInstantMessage;
@ -135,6 +138,8 @@ namespace OpenSim.Framework.Interfaces
event FetchInventoryDescendents OnFetchInventoryDescendents; event FetchInventoryDescendents OnFetchInventoryDescendents;
event FetchInventory OnFetchInventory; event FetchInventory OnFetchInventory;
event RequestTaskInventory OnRequestTaskInventory; event RequestTaskInventory OnRequestTaskInventory;
event UDPAssetUploadRequest OnAssetUploadRequest;
event XferReceive OnXferReceive;
event UUIDNameRequest OnNameFromUUIDRequest; event UUIDNameRequest OnNameFromUUIDRequest;

View File

@ -57,6 +57,8 @@ namespace OpenSim.Framework
public event FetchInventoryDescendents OnFetchInventoryDescendents; public event FetchInventoryDescendents OnFetchInventoryDescendents;
public event FetchInventory OnFetchInventory; public event FetchInventory OnFetchInventory;
public event RequestTaskInventory OnRequestTaskInventory; public event RequestTaskInventory OnRequestTaskInventory;
public event UDPAssetUploadRequest OnAssetUploadRequest;
public event XferReceive OnXferReceive;
public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnNameFromUUIDRequest;

View File

@ -0,0 +1,38 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Security.Cryptography;
using libsecondlife;
using Nwc.XmlRpc;
using OpenSim.Framework.Console;
using OpenSim.Framework.Data;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Inventory;
using OpenSim.Framework.Utilities;
using OpenSim.Framework.Servers;
namespace OpenSim.Framework.UserManagement
{
public class CAPSService
{
private BaseHttpServer m_server;
public CAPSService(BaseHttpServer httpServer)
{
m_server = httpServer;
this.AddCapsSeedHandler("/CapsSeed/", CapsRequest);
}
private void AddCapsSeedHandler(string path, RestMethod restMethod)
{
m_server.AddStreamHandler(new RestStreamHandler("POST", path, restMethod));
}
public string CapsRequest(string request, string path, string param)
{
System.Console.WriteLine("new caps request " + request +" from path "+ path);
return "";
}
}
}

View File

@ -86,6 +86,8 @@ namespace OpenSim.Region.ClientStack
public event FetchInventoryDescendents OnFetchInventoryDescendents; public event FetchInventoryDescendents OnFetchInventoryDescendents;
public event FetchInventory OnFetchInventory; public event FetchInventory OnFetchInventory;
public event RequestTaskInventory OnRequestTaskInventory; public event RequestTaskInventory OnRequestTaskInventory;
public event UDPAssetUploadRequest OnAssetUploadRequest;
public event XferReceive OnXferReceive;
public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnNameFromUUIDRequest;

View File

@ -217,7 +217,7 @@ namespace OpenSim.Region.ClientStack
case PacketType.ObjectAdd: case PacketType.ObjectAdd:
if (OnAddPrim != null) if (OnAddPrim != null)
{ {
ObjectAddPacket addPacket = (ObjectAddPacket) Pack ; ObjectAddPacket addPacket = (ObjectAddPacket)Pack;
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape); OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape);
@ -290,7 +290,7 @@ namespace OpenSim.Region.ClientStack
} }
break; break;
case PacketType.ObjectGrab: case PacketType.ObjectGrab:
ObjectGrabPacket grab = (ObjectGrabPacket)Pack; ObjectGrabPacket grab = (ObjectGrabPacket)Pack;
if (OnGrabObject != null) if (OnGrabObject != null)
{ {
OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this);
@ -338,7 +338,7 @@ namespace OpenSim.Region.ClientStack
#region Inventory/Asset/Other related packets #region Inventory/Asset/Other related packets
case PacketType.RequestImage: case PacketType.RequestImage:
RequestImagePacket imageRequest = (RequestImagePacket)Pack; RequestImagePacket imageRequest = (RequestImagePacket)Pack;
for (int i = 0; i < imageRequest.RequestImage.Length; i++) for (int i = 0; i < imageRequest.RequestImage.Length; i++)
{ {
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet); m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet);
@ -351,14 +351,20 @@ namespace OpenSim.Region.ClientStack
break; break;
case PacketType.AssetUploadRequest: case PacketType.AssetUploadRequest:
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
// Console.WriteLine(request.ToString()); if (OnAssetUploadRequest != null)
//this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID)); {
OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(this.SecureSessionID), request.AssetBlock.TransactionID, request.AssetBlock.Type, request.AssetBlock.AssetData);
}
break; break;
case PacketType.RequestXfer: case PacketType.RequestXfer:
//Console.WriteLine(Pack.ToString()); //Console.WriteLine(Pack.ToString());
break; break;
case PacketType.SendXferPacket: 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; break;
case PacketType.CreateInventoryFolder: case PacketType.CreateInventoryFolder:
if (this.OnCreateNewInventoryFolder != null) if (this.OnCreateNewInventoryFolder != null)
@ -369,18 +375,11 @@ namespace OpenSim.Region.ClientStack
break; break;
case PacketType.CreateInventoryItem: case PacketType.CreateInventoryItem:
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
if (createItem.InventoryBlock.TransactionID != LLUUID.Zero) if (this.OnCreateNewInventoryItem != null)
{ {
this.UploadAssets.CreateInventoryItem(createItem); 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,
else createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask);
{
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);
}
} }
break; break;
case PacketType.FetchInventory: case PacketType.FetchInventory:
@ -558,7 +557,7 @@ namespace OpenSim.Region.ClientStack
if (OnParcelPropertiesUpdateRequest != null) if (OnParcelPropertiesUpdateRequest != null)
{ {
OnParcelPropertiesUpdateRequest(updatePacket, this); OnParcelPropertiesUpdateRequest(updatePacket, this);
} }
break; break;
case PacketType.ParcelSelectObjects: case PacketType.ParcelSelectObjects:

View File

@ -33,6 +33,7 @@ using OpenSim.Framework.Communications.Caches;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Framework.Utilities; using OpenSim.Framework.Utilities;
using OpenSim.Framework.Data; using OpenSim.Framework.Data;
using OpenSim.Framework.UserManagement;
namespace OpenSim.Region.Communications.Local namespace OpenSim.Region.Communications.Local
{ {
@ -42,6 +43,7 @@ namespace OpenSim.Region.Communications.Local
public LocalUserServices UserServices; public LocalUserServices UserServices;
public LocalLoginService LoginServices; public LocalLoginService LoginServices;
public LocalInventoryService InvenServices; public LocalInventoryService InvenServices;
// public CAPSService CapsServices;
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, bool accountsAuthenticate, string welcomeMessage ) public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, bool accountsAuthenticate, string welcomeMessage )
: base(serversInfo, httpServer, assetCache) : base(serversInfo, httpServer, assetCache)
@ -57,6 +59,8 @@ namespace OpenSim.Region.Communications.Local
InstanceServices = new LocalBackEndServices(); InstanceServices = new LocalBackEndServices();
GridServer = InstanceServices; GridServer = InstanceServices;
InterRegion = InstanceServices; InterRegion = InstanceServices;
//CapsServices = new CAPSService(httpServer);
LoginServices = new LocalLoginService(UserServices, welcomeMessage, this, serversInfo, accountsAuthenticate); LoginServices = new LocalLoginService(UserServices, welcomeMessage, this, serversInfo, accountsAuthenticate);
httpServer.AddXmlRPCHandler("login_to_simulator", LoginServices.XmlRpcLoginMethod); httpServer.AddXmlRPCHandler("login_to_simulator", LoginServices.XmlRpcLoginMethod);

View File

@ -90,6 +90,7 @@ namespace OpenSim.Region.Communications.Local
response.RegionY = reg.RegionLocY; 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() + "/CAPS/" + capsPath + "0000/";
// response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/";
theUser.currentAgent.currentRegion = reg.SimUUID; theUser.currentAgent.currentRegion = reg.SimUUID;
theUser.currentAgent.currentHandle = reg.RegionHandle; theUser.currentAgent.currentHandle = reg.RegionHandle;

View File

@ -714,33 +714,41 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="nextOwnerMask"></param> /// <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) 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 (transActionID == LLUUID.Zero)
if (userInfo != null)
{ {
AssetBase asset = new AssetBase(); CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
asset.Name = name; if (userInfo != null)
asset.Description = description; {
asset.InvType = invType; AssetBase asset = new AssetBase();
asset.Type = type; asset.Name = name;
asset.FullID = LLUUID.Random(); asset.Description = description;
asset.Data = new byte[1]; asset.InvType = invType;
this.assetCache.AddAsset(asset); asset.Type = type;
asset.FullID = LLUUID.Random();
asset.Data = new byte[1];
this.assetCache.AddAsset(asset);
InventoryItemBase item = new InventoryItemBase(); InventoryItemBase item = new InventoryItemBase();
item.avatarID = remoteClient.AgentId; item.avatarID = remoteClient.AgentId;
item.creatorsID = remoteClient.AgentId; item.creatorsID = remoteClient.AgentId;
item.inventoryID = LLUUID.Random(); item.inventoryID = LLUUID.Random();
item.assetID = asset.FullID; item.assetID = asset.FullID;
item.inventoryDescription = description; item.inventoryDescription = description;
item.inventoryName = name; item.inventoryName = name;
item.assetType = invType; item.assetType = invType;
item.invType = invType; item.invType = invType;
item.parentFolderID = folderID; item.parentFolderID = folderID;
item.inventoryCurrentPermissions = 2147483647; item.inventoryCurrentPermissions = 2147483647;
item.inventoryNextPermissions = nextOwnerMask; item.inventoryNextPermissions = nextOwnerMask;
userInfo.AddItem(remoteClient.AgentId, item); userInfo.AddItem(remoteClient.AgentId, item);
remoteClient.SendInventoryItemUpdate(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);
} }
} }

View File

@ -577,6 +577,7 @@ namespace OpenSim.Region.Environment.Scenes
CreateAndAddScenePresence(client); CreateAndAddScenePresence(client);
m_LandManager.sendParcelOverlay(client); m_LandManager.sendParcelOverlay(client);
commsManager.UserProfiles.AddNewUser(client.AgentId); commsManager.UserProfiles.AddNewUser(client.AgentId);
commsManager.TransactionsManager.AddUser(client.AgentId);
} }
protected virtual void SubscribeToClientEvents(IClientAPI client) protected virtual void SubscribeToClientEvents(IClientAPI client)
@ -625,6 +626,8 @@ namespace OpenSim.Region.Environment.Scenes
client.OnFetchInventoryDescendents += commsManager.UserProfiles.HandleFecthInventoryDescendents; client.OnFetchInventoryDescendents += commsManager.UserProfiles.HandleFecthInventoryDescendents;
client.OnRequestTaskInventory += RequestTaskInventory; client.OnRequestTaskInventory += RequestTaskInventory;
client.OnFetchInventory += commsManager.UserProfiles.HandleFetchInventory; client.OnFetchInventory += commsManager.UserProfiles.HandleFetchInventory;
client.OnAssetUploadRequest += commsManager.TransactionsManager.HandleUDPUploadRequest;
client.OnXferReceive += commsManager.TransactionsManager.HandleXfer;
client.OnGrabObject += ProcessObjectGrab; client.OnGrabObject += ProcessObjectGrab;
} }

View File

@ -706,7 +706,6 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
#endregion #endregion
/// <summary> /// <summary>
/// ///

View File

@ -71,6 +71,8 @@ namespace SimpleApp
public event FetchInventoryDescendents OnFetchInventoryDescendents; public event FetchInventoryDescendents OnFetchInventoryDescendents;
public event FetchInventory OnFetchInventory; public event FetchInventory OnFetchInventory;
public event RequestTaskInventory OnRequestTaskInventory; public event RequestTaskInventory OnRequestTaskInventory;
public event UDPAssetUploadRequest OnAssetUploadRequest;
public event XferReceive OnXferReceive;
public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnNameFromUUIDRequest;