public Packet MoveInventoryItem(
            LLUUID itemID
            , LLUUID folderID
            , string newFolderName
            )
        {
            MoveInventoryItemPacket p = new MoveInventoryItemPacket();

            p.AgentData.AgentID   = AgentID;
            p.AgentData.SessionID = SessionID;
            p.AgentData.Stamp     = true;

            p.InventoryData    = new MoveInventoryItemPacket.InventoryDataBlock[1];
            p.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();

            p.InventoryData[0].ItemID   = itemID;
            p.InventoryData[0].FolderID = folderID;

            if (newFolderName != null)
            {
                p.InventoryData[0].NewName = Helpers.StringToField(newFolderName);
            }

            return(p);
        }
示例#2
0
        /// <summary>
        /// Move item to new folder, optionally changing it's name in the process
        /// </summary>
        /// <param name="itemID"></param>
        /// <param name="folderID"></param>
        /// <param name="itemName">specify null to not change the name</param>
        /// <returns></returns>
        public Packet MoveInventoryItem(
            LLUUID itemID
            , LLUUID folderID
            , string itemName
            )
        {
            MoveInventoryItemPacket p = new MoveInventoryItemPacket();

            p.AgentData.AgentID   = AgentID;
            p.AgentData.SessionID = SessionID;
            p.AgentData.Stamp     = false; //the official client uses false.

            p.InventoryData    = new MoveInventoryItemPacket.InventoryDataBlock[1];
            p.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();

            p.InventoryData[0].ItemID   = itemID;
            p.InventoryData[0].FolderID = folderID;

            if (itemName == null)
            {
                p.InventoryData[0].NewName = new byte[0];
            }
            else
            {
                p.InventoryData[0].NewName = Helpers.StringToField(itemName);
            }

            return(p);
        }
示例#3
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);
        }
示例#4
0
        public void MoveItem(LLUUID item, LLUUID folder, string newItemName)
        {
            lock (_Store)
            {
                    if (_Store.Contains(item))
                    {
                        InventoryBase inv = _Store[item];
                        inv.ParentUUID = folder;
                        _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[1];
            move.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();
            move.InventoryData[0].ItemID = item;
            move.InventoryData[0].FolderID = folder;
            move.InventoryData[0].NewName = Helpers.StringToField(newItemName);

            _Client.Network.SendPacket(move);
        }
示例#5
0
        /// <summary>
        /// Move and rename an inventory item
        /// </summary>
        /// <param name="itemID">The <seealso cref="UUID"/> of the source item to move</param>
        /// <param name="folderID">The <seealso cref="UUID"/> of the destination folder</param>
        /// <param name="newName">The name to change the folder to</param>
        public void MoveItem(UUID itemID, UUID folderID, string newName)
        {
            lock (_Store)
            {
                if (_Store.Contains(itemID))
                {
                    InventoryBase inv = _Store[itemID];
                    inv.Name = newName;
                    inv.ParentUUID = folderID;
                    _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[1];
            move.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();
            move.InventoryData[0].ItemID = itemID;
            move.InventoryData[0].FolderID = folderID;
            move.InventoryData[0].NewName = Utils.StringToBytes(newName);

            Client.Network.SendPacket(move);
        }
        /// <summary>
        /// Move item to new folder, optionally changing it's name in the process
        /// </summary>
        /// <param name="itemID"></param>
        /// <param name="folderID"></param>
        /// <param name="itemName">specify null to not change the name</param>
        /// <returns></returns>
        public Packet MoveInventoryItem(
            LLUUID itemID
            , LLUUID folderID
            , string itemName
            )
        {
            MoveInventoryItemPacket p = new MoveInventoryItemPacket();
            p.AgentData.AgentID = AgentID;
            p.AgentData.SessionID = SessionID;
            p.AgentData.Stamp = false; //the official client uses false.

            p.InventoryData = new MoveInventoryItemPacket.InventoryDataBlock[1];
            p.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();

            p.InventoryData[0].ItemID = itemID;
            p.InventoryData[0].FolderID = folderID;

            if (itemName == null)
            {
                p.InventoryData[0].NewName = new byte[0];
            }
            else
            {
                p.InventoryData[0].NewName = Helpers.StringToField(itemName);
            }

            return p;

        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <summary>
        /// Rename an inventory item
        /// </summary>
        /// <param name="itemID">The <seealso cref="UUID"/> of the source item to move</param>
        /// <param name="parentID">The <seealso cref="UUID"/> of the item's parent.</param>
        /// <param name="newName">The name to change the folder to</param>
        public void RenameItem(UUID itemID, UUID parentID, string newName)
        {
            MoveInventoryItemPacket move = new MoveInventoryItemPacket();
            move.AgentData.AgentID = _Agents.AgentID;
            move.AgentData.SessionID = _Agents.SessionID;
            move.AgentData.Stamp = false; //FIXME: ??

            move.InventoryData = new MoveInventoryItemPacket.InventoryDataBlock[1];
            move.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();
            move.InventoryData[0].ItemID = itemID;
            move.InventoryData[0].FolderID = parentID;
            move.InventoryData[0].NewName = Utils.StringToBytes(newName);

            _Network.SendPacket(move);
        }
示例#9
0
        public bool MoveInventoryItem(MoveInventoryItemPacket 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 + "/MoveItem/";
                foreach (MoveInventoryItemPacket.InventoryDataBlock datablock in invPacket.InventoryData)
                {
                    InventoryItemBase item = new InventoryItemBase();
                    item.ID = datablock.ItemID;
                    item.Folder = datablock.FolderID;
                    item.Name = Util.FieldToString(datablock.NewName);
                    item.Owner = UserID;
                    OpenSimComms.InventoryItemOperation(uri, item, InventoryItemCreateCallBack);
                }
            }
            return true;
        }
        public Packet MoveInventoryItem(
            LLUUID itemID
            , LLUUID folderID
            , string newFolderName
            )
        {
            MoveInventoryItemPacket p = new MoveInventoryItemPacket();
            p.AgentData.AgentID = AgentID;
            p.AgentData.SessionID = SessionID;
            p.AgentData.Stamp = true;

            p.InventoryData = new MoveInventoryItemPacket.InventoryDataBlock[1];
            p.InventoryData[0] = new MoveInventoryItemPacket.InventoryDataBlock();

            p.InventoryData[0].ItemID = itemID;
            p.InventoryData[0].FolderID = folderID;

            if (newFolderName != null)
            {
                p.InventoryData[0].NewName = Helpers.StringToField(newFolderName);
            }

            return p;
        }