private uint RegisterItemsCopiedCallback(ItemCopiedCallback callback) { lock (_CallbacksLock) { if (_CallbackPos == UInt32.MaxValue) _CallbackPos = 0; _CallbackPos++; if (_ItemCopiedCallbacks.ContainsKey(_CallbackPos)) _Client.Log("Overwriting an existing ItemsCopiedCallback", Helpers.LogLevel.Warning); _ItemCopiedCallbacks[_CallbackPos] = callback; return _CallbackPos; } }
public void RequestCopyItem(LLUUID item, LLUUID newParent, string newName, LLUUID oldOwnerID, ItemCopiedCallback callback) { List<LLUUID> items = new List<LLUUID>(1); items.Add(item); List<LLUUID> folders = new List<LLUUID>(1); folders.Add(newParent); List<string> names = new List<string>(1); names.Add(newName); RequestCopyItems(items, folders, names, oldOwnerID, callback); }
public void RequestCopyItems(List<LLUUID> items, List<LLUUID> targetFolders, List<string> newNames, LLUUID oldOwnerID, ItemCopiedCallback callback) { if (items.Count != targetFolders.Count || (newNames != null && items.Count != newNames.Count)) throw new ArgumentException("All list arguments must have an equal number of entries"); uint callbackID = RegisterItemsCopiedCallback(callback); CopyInventoryItemPacket copy = new CopyInventoryItemPacket(); copy.AgentData.AgentID = _Client.Self.AgentID; copy.AgentData.SessionID = _Client.Self.SessionID; copy.InventoryData = new CopyInventoryItemPacket.InventoryDataBlock[items.Count]; for (int i = 0; i < items.Count; ++i) { copy.InventoryData[i] = new CopyInventoryItemPacket.InventoryDataBlock(); copy.InventoryData[i].CallbackID = callbackID; copy.InventoryData[i].NewFolderID = targetFolders[i]; copy.InventoryData[i].OldAgentID = oldOwnerID; copy.InventoryData[i].OldItemID = items[i]; if (newNames != null && !String.IsNullOrEmpty(newNames[i])) copy.InventoryData[i].NewName = Helpers.StringToField(newNames[i]); else copy.InventoryData[i].NewName = new byte[0]; } _Client.Network.SendPacket(copy); }
public void RequestCopyItem(LLUUID item, LLUUID newParent, string newName, ItemCopiedCallback callback) { RequestCopyItem(item, newParent, newName, _Client.Self.AgentID, callback); }
/// <summary> /// Request a copy of an asset embedded within a notecard /// </summary> /// <param name="objectID">Usually UUID.Zero for copying an asset from a notecard</param> /// <param name="notecardID">UUID of the notecard to request an asset from</param> /// <param name="folderID">Target folder for asset to go to in your inventory</param> /// <param name="itemID">UUID of the embedded asset</param> /// <param name="callback">callback to run when item is copied to inventory</param> public void RequestCopyItemFromNotecard(UUID objectID, UUID notecardID, UUID folderID, UUID itemID, ItemCopiedCallback callback) { _ItemCopiedCallbacks[0] = callback; //Notecards always use callback ID 0 Uri url = Client.Network.CurrentSim.Caps.CapabilityURI("CopyInventoryFromNotecard"); if (url != null) { CopyInventoryFromNotecardMessage message = new CopyInventoryFromNotecardMessage(); message.CallbackID = 0; message.FolderID = folderID; message.ItemID = itemID; message.NotecardID = notecardID; message.ObjectID = objectID; CapsClient request = new CapsClient(url); request.BeginGetResponse(message.Serialize(), OSDFormat.Xml, Client.Settings.CAPS_TIMEOUT); } else { CopyInventoryFromNotecardPacket copy = new CopyInventoryFromNotecardPacket(); copy.AgentData.AgentID = Client.Self.AgentID; copy.AgentData.SessionID = Client.Self.SessionID; copy.NotecardData.ObjectID = objectID; copy.NotecardData.NotecardItemID = notecardID; copy.InventoryData = new CopyInventoryFromNotecardPacket.InventoryDataBlock[1]; copy.InventoryData[0] = new CopyInventoryFromNotecardPacket.InventoryDataBlock(); copy.InventoryData[0].FolderID = folderID; copy.InventoryData[0].ItemID = itemID; Client.Network.SendPacket(copy); } }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="newParent"></param> /// <param name="newName"></param> /// <param name="callback"></param> public void RequestCopyItem(UUID item, UUID newParent, string newName, ItemCopiedCallback callback) { RequestCopyItem(item, newParent, newName, _Agents.AgentID, callback); }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="newParent"></param> /// <param name="newName"></param> /// <param name="oldOwnerID"></param> /// <param name="callback"></param> public void RequestCopyItem(Guid item, Guid newParent, string newName, Guid oldOwnerID, ItemCopiedCallback callback) { List<Guid> items = new List<Guid>(1); items.Add(item); List<Guid> folders = new List<Guid>(1); folders.Add(newParent); List<string> names = new List<string>(1); names.Add(newName); RequestCopyItems(items, folders, names, oldOwnerID, callback); }
/// <summary> /// Request a copy of an asset embedded within a notecard /// </summary> /// <param name="objectID">Usually UUID.Zero for copying an asset from a notecard</param> /// <param name="notecardID">UUID of the notecard to request an asset from</param> /// <param name="folderID">Target folder for asset to go to in your inventory</param> /// <param name="itemID">UUID of the embedded asset</param> /// <param name="callback">callback to run when item is copied to inventory</param> public void RequestCopyItemFromNotecard(UUID objectID, UUID notecardID, UUID folderID, UUID itemID, ItemCopiedCallback callback) { CopyInventoryFromNotecardPacket copy = new CopyInventoryFromNotecardPacket(); copy.AgentData.AgentID = _Network.AgentID; copy.AgentData.SessionID = _Network.SessionID; copy.NotecardData.ObjectID = objectID; copy.NotecardData.NotecardItemID = notecardID; copy.InventoryData = new CopyInventoryFromNotecardPacket.InventoryDataBlock[1]; copy.InventoryData[0] = new CopyInventoryFromNotecardPacket.InventoryDataBlock(); copy.InventoryData[0].FolderID = folderID; copy.InventoryData[0].ItemID = itemID; _ItemCopiedCallbacks[0] = callback; //Notecards always use callback ID 0 _Network.SendPacket(copy); }