thanks lkalif for Mantis #4676 - a patch that adds support for inventory links
Signed-off-by: dahlia <dahliaTrimble@gmail.removeme.com>slimupdates
parent
56c176f0a3
commit
3d0860ae61
|
@ -88,6 +88,7 @@ what it is today.
|
||||||
* Kitto Flora
|
* Kitto Flora
|
||||||
* KittyLiu
|
* KittyLiu
|
||||||
* Kurt Taylor (IBM)
|
* Kurt Taylor (IBM)
|
||||||
|
* lkalif
|
||||||
* lulurun
|
* lulurun
|
||||||
* M.Igarashi
|
* M.Igarashi
|
||||||
* maimedleech
|
* maimedleech
|
||||||
|
|
|
@ -642,6 +642,7 @@ namespace OpenSim.Client.MXP.ClientStack
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
public event ObjectPermissions OnObjectPermissions;
|
public event ObjectPermissions OnObjectPermissions;
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -288,6 +288,7 @@ namespace OpenSim.Client.Sirikata.ClientStack
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
public event ObjectPermissions OnObjectPermissions;
|
public event ObjectPermissions OnObjectPermissions;
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -291,6 +291,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
|
||||||
public event Action<UUID> OnRemoveAvatar = delegate { };
|
public event Action<UUID> OnRemoveAvatar = delegate { };
|
||||||
public event ObjectPermissions OnObjectPermissions = delegate { };
|
public event ObjectPermissions OnObjectPermissions = delegate { };
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem = delegate { };
|
public event CreateNewInventoryItem OnCreateNewInventoryItem = delegate { };
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem = delegate { };
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder = delegate { };
|
public event CreateInventoryFolder OnCreateNewInventoryFolder = delegate { };
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder = delegate { };
|
public event UpdateInventoryFolder OnUpdateInventoryFolder = delegate { };
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder = delegate { };
|
public event MoveInventoryFolder OnMoveInventoryFolder = delegate { };
|
||||||
|
|
|
@ -236,6 +236,10 @@ namespace OpenSim.Framework
|
||||||
IClientAPI remoteClient, UUID transActionID, UUID folderID, uint callbackID, string description, string name,
|
IClientAPI remoteClient, UUID transActionID, UUID folderID, uint callbackID, string description, string name,
|
||||||
sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask, int creationDate);
|
sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask, int creationDate);
|
||||||
|
|
||||||
|
public delegate void LinkInventoryItem(
|
||||||
|
IClientAPI remoteClient, UUID transActionID, UUID folderID, uint callbackID, string description, string name,
|
||||||
|
sbyte invType, sbyte type, UUID olditemID);
|
||||||
|
|
||||||
public delegate void FetchInventoryDescendents(
|
public delegate void FetchInventoryDescendents(
|
||||||
IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
|
IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
|
||||||
|
|
||||||
|
@ -930,6 +934,7 @@ namespace OpenSim.Framework
|
||||||
event ObjectPermissions OnObjectPermissions;
|
event ObjectPermissions OnObjectPermissions;
|
||||||
|
|
||||||
event CreateNewInventoryItem OnCreateNewInventoryItem;
|
event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
event LinkInventoryItem OnLinkInventoryItem;
|
||||||
event CreateInventoryFolder OnCreateNewInventoryFolder;
|
event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
event UpdateInventoryFolder OnUpdateInventoryFolder;
|
event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
event MoveInventoryFolder OnMoveInventoryFolder;
|
event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -182,6 +182,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
public event TeleportLocationRequest OnSetStartLocationRequest;
|
public event TeleportLocationRequest OnSetStartLocationRequest;
|
||||||
public event UpdateAvatarProperties OnUpdateAvatarProperties;
|
public event UpdateAvatarProperties OnUpdateAvatarProperties;
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
@ -4749,6 +4750,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
AddLocalPacketHandler(PacketType.UpdateInventoryFolder, HandleUpdateInventoryFolder);
|
AddLocalPacketHandler(PacketType.UpdateInventoryFolder, HandleUpdateInventoryFolder);
|
||||||
AddLocalPacketHandler(PacketType.MoveInventoryFolder, HandleMoveInventoryFolder);
|
AddLocalPacketHandler(PacketType.MoveInventoryFolder, HandleMoveInventoryFolder);
|
||||||
AddLocalPacketHandler(PacketType.CreateInventoryItem, HandleCreateInventoryItem);
|
AddLocalPacketHandler(PacketType.CreateInventoryItem, HandleCreateInventoryItem);
|
||||||
|
AddLocalPacketHandler(PacketType.LinkInventoryItem, HandleLinkInventoryItem);
|
||||||
AddLocalPacketHandler(PacketType.FetchInventory, HandleFetchInventory);
|
AddLocalPacketHandler(PacketType.FetchInventory, HandleFetchInventory);
|
||||||
AddLocalPacketHandler(PacketType.FetchInventoryDescendents, HandleFetchInventoryDescendents);
|
AddLocalPacketHandler(PacketType.FetchInventoryDescendents, HandleFetchInventoryDescendents);
|
||||||
AddLocalPacketHandler(PacketType.PurgeInventoryDescendents, HandlePurgeInventoryDescendents);
|
AddLocalPacketHandler(PacketType.PurgeInventoryDescendents, HandlePurgeInventoryDescendents);
|
||||||
|
@ -7348,6 +7350,38 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool HandleLinkInventoryItem(IClientAPI sender, Packet Pack)
|
||||||
|
{
|
||||||
|
LinkInventoryItemPacket createLink = (LinkInventoryItemPacket)Pack;
|
||||||
|
|
||||||
|
#region Packet Session and User Check
|
||||||
|
if (m_checkPackets)
|
||||||
|
{
|
||||||
|
if (createLink.AgentData.SessionID != SessionId ||
|
||||||
|
createLink.AgentData.AgentID != AgentId)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
LinkInventoryItem linkInventoryItem = OnLinkInventoryItem;
|
||||||
|
|
||||||
|
if (linkInventoryItem != null)
|
||||||
|
{
|
||||||
|
linkInventoryItem(
|
||||||
|
this,
|
||||||
|
createLink.InventoryBlock.TransactionID,
|
||||||
|
createLink.InventoryBlock.FolderID,
|
||||||
|
createLink.InventoryBlock.CallbackID,
|
||||||
|
Util.FieldToString(createLink.InventoryBlock.Description),
|
||||||
|
Util.FieldToString(createLink.InventoryBlock.Name),
|
||||||
|
createLink.InventoryBlock.InvType,
|
||||||
|
createLink.InventoryBlock.Type,
|
||||||
|
createLink.InventoryBlock.OldItemID);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private bool HandleFetchInventory(IClientAPI sender, Packet Pack)
|
private bool HandleFetchInventory(IClientAPI sender, Packet Pack)
|
||||||
{
|
{
|
||||||
if (OnFetchInventory != null)
|
if (OnFetchInventory != null)
|
||||||
|
|
|
@ -129,6 +129,7 @@ namespace OpenSim.Region.Examples.SimpleModule
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
|
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -722,6 +722,37 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void HandleLinkInventoryItem(IClientAPI remoteClient, UUID transActionID, UUID folderID,
|
||||||
|
uint callbackID, string description, string name,
|
||||||
|
sbyte invType, sbyte type, UUID olditemID)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[AGENT INVENTORY]: Received request to create inventory item link {0} in folder {1} pointing to {2}", name, folderID, olditemID);
|
||||||
|
|
||||||
|
if (!Permissions.CanCreateUserInventory(invType, remoteClient.AgentId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ScenePresence presence;
|
||||||
|
if (TryGetScenePresence(remoteClient.AgentId, out presence))
|
||||||
|
{
|
||||||
|
byte[] data = null;
|
||||||
|
|
||||||
|
AssetBase asset = new AssetBase();
|
||||||
|
asset.FullID = olditemID;
|
||||||
|
asset.Type = type;
|
||||||
|
asset.Name = name;
|
||||||
|
asset.Description = description;
|
||||||
|
|
||||||
|
CreateNewInventoryItem(remoteClient, remoteClient.AgentId.ToString(), folderID, name, 0, callbackID, asset, invType, (uint)PermissionMask.All, (uint)PermissionMask.All, (uint)PermissionMask.All, (uint)PermissionMask.All, (uint)PermissionMask.All, Util.UnixTimeSinceEpoch());
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat(
|
||||||
|
"ScenePresence for agent uuid {0} unexpectedly not found in HandleLinkInventoryItem",
|
||||||
|
remoteClient.AgentId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Remove an inventory item for the client's inventory
|
/// Remove an inventory item for the client's inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -2749,6 +2749,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public virtual void SubscribeToClientInventoryEvents(IClientAPI client)
|
public virtual void SubscribeToClientInventoryEvents(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnCreateNewInventoryItem += CreateNewInventoryItem;
|
client.OnCreateNewInventoryItem += CreateNewInventoryItem;
|
||||||
|
client.OnLinkInventoryItem += HandleLinkInventoryItem;
|
||||||
client.OnCreateNewInventoryFolder += HandleCreateInventoryFolder;
|
client.OnCreateNewInventoryFolder += HandleCreateInventoryFolder;
|
||||||
client.OnUpdateInventoryFolder += HandleUpdateInventoryFolder;
|
client.OnUpdateInventoryFolder += HandleUpdateInventoryFolder;
|
||||||
client.OnMoveInventoryFolder += HandleMoveInventoryFolder; // 2; //!!
|
client.OnMoveInventoryFolder += HandleMoveInventoryFolder; // 2; //!!
|
||||||
|
|
|
@ -724,6 +724,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
public event ObjectPermissions OnObjectPermissions;
|
public event ObjectPermissions OnObjectPermissions;
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -235,6 +235,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
|
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
|
@ -141,6 +141,7 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
public event Action<UUID> OnRemoveAvatar;
|
public event Action<UUID> OnRemoveAvatar;
|
||||||
|
|
||||||
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
public event CreateNewInventoryItem OnCreateNewInventoryItem;
|
||||||
|
public event LinkInventoryItem OnLinkInventoryItem;
|
||||||
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
public event CreateInventoryFolder OnCreateNewInventoryFolder;
|
||||||
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
public event UpdateInventoryFolder OnUpdateInventoryFolder;
|
||||||
public event MoveInventoryFolder OnMoveInventoryFolder;
|
public event MoveInventoryFolder OnMoveInventoryFolder;
|
||||||
|
|
Loading…
Reference in New Issue