public void MoveItems(Dictionary<LLUUID, LLUUID> itemsNewParents) { lock (_Store) { foreach (KeyValuePair<LLUUID, LLUUID> entry in itemsNewParents) { if (_Store.Contains(entry.Key)) { InventoryBase inv = _Store[entry.Key]; inv.ParentUUID = entry.Value; _Store.UpdateNodeFor(inv); } } } MoveInventoryItemPacket move = new MoveInventoryItemPacket(); move.AgentData.AgentID = _Client.Self.AgentID; move.AgentData.SessionID = _Client.Self.SessionID; move.AgentData.Stamp = false; //FIXME: ?? move.InventoryData = new MoveInventoryItemPacket.InventoryDataBlock[itemsNewParents.Count]; int index = 0; foreach (KeyValuePair<LLUUID, LLUUID> entry in itemsNewParents) { MoveInventoryItemPacket.InventoryDataBlock block = new MoveInventoryItemPacket.InventoryDataBlock(); block.ItemID = entry.Key; block.FolderID = entry.Value; block.NewName = new byte[0]; move.InventoryData[index++] = block; } _Client.Network.SendPacket(move); }
/// <summary> /// Move multiple inventory items. /// </summary> /// <param name="newParentID">The <seealso cref="UUID"/> of the new parent.</param> /// <param name="items">The <seealso cref="UUID"/>s of the items.</param> public void MoveItems(ICollection<UUID> items, UUID newParentID) { MoveInventoryItemPacket move = new MoveInventoryItemPacket(); move.AgentData.AgentID = _Agents.AgentID; move.AgentData.SessionID = _Agents.SessionID; move.AgentData.Stamp = false; //FIXME: ?? move.InventoryData = new MoveInventoryItemPacket.InventoryDataBlock[items.Count]; int i = 0; foreach (UUID item in items) { MoveInventoryItemPacket.InventoryDataBlock block = new MoveInventoryItemPacket.InventoryDataBlock(); block.ItemID = item; block.FolderID = newParentID; block.NewName = new byte[0]; move.InventoryData[i] = block; ++i; } _Network.SendPacket(move); }