Exemple #1
0
        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);
        }