public Packet CopyInventoryItem( LLUUID itemID , LLUUID folderID , string newItemName ) { CopyInventoryItemPacket p = new CopyInventoryItemPacket(); p.AgentData.AgentID = AgentID; p.AgentData.SessionID = SessionID; p.InventoryData = new CopyInventoryItemPacket.InventoryDataBlock[1]; p.InventoryData[0] = new CopyInventoryItemPacket.InventoryDataBlock(); p.InventoryData[0].CallbackID = 0; p.InventoryData[0].OldAgentID = AgentID; //TODO: Find out what this is supposed to be. Added field 10/11/06, no docs in Message Template p.InventoryData[0].OldItemID = itemID; p.InventoryData[0].NewFolderID = folderID; if (newItemName != null) { p.InventoryData[0].NewName = Helpers.StringToField(newItemName); } return(p); }
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 Packet CopyInventoryItem( LLUUID itemID , LLUUID folderID , string newItemName ) { CopyInventoryItemPacket p = new CopyInventoryItemPacket(); p.AgentData.AgentID = AgentID; p.AgentData.SessionID = SessionID; p.InventoryData = new CopyInventoryItemPacket.InventoryDataBlock[1]; p.InventoryData[0] = new CopyInventoryItemPacket.InventoryDataBlock(); p.InventoryData[0].CallbackID = 0; p.InventoryData[0].OldAgentID = AgentID; //TODO: Find out what this is supposed to be. Added field 10/11/06, no docs in Message Template p.InventoryData[0].OldItemID = itemID; p.InventoryData[0].NewFolderID = folderID; if (newItemName != null) { p.InventoryData[0].NewName = Helpers.StringToField(newItemName); } return p; }
public bool CopyInventoryItem(CopyInventoryItemPacket invPacket) { if (invPacket.AgentData.AgentID.Equals(libOwner)) // Tell grid surfer to forward request to region, because the Library is served from there (!) return false; if (connected) { string uri = InventoryServerURL + "/" + AuthToken + "/CopyItem/"; Console.WriteLine(" >> CopyItem length " + invPacket.InventoryData.Length); foreach (CopyInventoryItemPacket.InventoryDataBlock datablock in invPacket.InventoryData) { InventoryItemBase item = new InventoryItemBase(); item.Owner = datablock.OldAgentID; item.ID = datablock.OldItemID; // Warning: BIG HACK HERE, so that we can get this UUID back to fetch the callbakID item.AssetID = UUID.Random(); item.Folder = datablock.NewFolderID; item.Name = Util.FieldToString(datablock.NewName); lock (invCallbackNumbers) { if (!invCallbackNumbers.ContainsKey(item.ID)) invCallbackNumbers.Add(item.AssetID, datablock.CallbackID); } OpenSimComms.InventoryItemOperation(uri, item, InventoryItemCreateCallBack); } } return true; }