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.]
parent
2a5a8c48c3
commit
94dded470d
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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 "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -706,7 +706,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue