Example #1
0
        public static Message DeserializeEQG(IValue value)
        {
            var llsd            = (MapType)value;
            var agentData       = (MapType)((AnArray)llsd["AgentData"])[0];
            var folderDataArray = (AnArray)llsd["FolderData"];
            var itemDataArray   = (AnArray)llsd["ItemData"];
            var res             = new BulkUpdateInventory
            {
                AgentID       = agentData["AgentID"].AsUUID,
                TransactionID = agentData["TransactionID"].AsUUID
            };

            foreach (MapType folderData in folderDataArray.OfType <MapType>())
            {
                res.FolderData.Add(new FolderDataEntry
                {
                    FolderID    = folderData["FolderID"].AsUUID,
                    ParentID    = folderData["ParentID"].AsUUID,
                    DefaultType = (AssetType)folderData["Type"].AsInt,
                    Name        = folderData["Name"].ToString()
                });
            }

            foreach (MapType itemData in itemDataArray.OfType <MapType>())
            {
                res.ItemData.Add(new ItemDataEntry
                {
                    ItemID        = itemData["ItemID"].AsUUID,
                    FolderID      = itemData["FolderID"].AsUUID,
                    CreatorID     = itemData["CreatorID"].AsUUID,
                    OwnerID       = itemData["OwnerID"].AsUUID,
                    GroupID       = itemData["GroupID"].AsUUID,
                    BaseMask      = (InventoryPermissionsMask)DecodeU32FromBinary((BinaryData)itemData["BaseMask"]),
                    OwnerMask     = (InventoryPermissionsMask)DecodeU32FromBinary((BinaryData)itemData["OwnerMask"]),
                    GroupMask     = (InventoryPermissionsMask)DecodeU32FromBinary((BinaryData)itemData["GroupMask"]),
                    EveryoneMask  = (InventoryPermissionsMask)DecodeU32FromBinary((BinaryData)itemData["EveryoneMask"]),
                    NextOwnerMask = (InventoryPermissionsMask)DecodeU32FromBinary((BinaryData)itemData["NextOwnerMask"]),
                    IsGroupOwned  = itemData["GroupOwned"].AsBoolean,
                    AssetID       = itemData["AssetID"].AsUUID,
                    Type          = (AssetType)itemData["Type"].AsInt,
                    InvType       = (InventoryType)itemData["InvType"].AsInt,
                    Flags         = (InventoryFlags)DecodeU32FromBinary((BinaryData)itemData["Flags"]),
                    SaleType      = (InventoryItem.SaleInfoData.SaleType)itemData["SaleType"].AsInt,
                    SalePrice     = itemData["SalePrice"].AsInt,
                    Name          = itemData["Name"].ToString(),
                    Description   = itemData["Description"].ToString(),
                    CreationDate  = itemData["CreationDate"].AsUInt,
                    CallbackID    = DecodeU32FromBinary((BinaryData)itemData["CallbackID"])
                });
            }

            return(res);
        }
Example #2
0
        public static Message Decode(UDPPacket p)
        {
            var m = new BulkUpdateInventory
            {
                AgentID       = p.ReadUUID(),
                TransactionID = p.ReadUUID()
            };
            uint n = p.ReadUInt8();

            while (n-- != 0)
            {
                m.FolderData.Add(new FolderDataEntry
                {
                    FolderID    = p.ReadUUID(),
                    ParentID    = p.ReadUUID(),
                    DefaultType = (AssetType)p.ReadInt8(),
                    Name        = p.ReadStringLen8()
                });
            }

            n = p.ReadUInt8();
            while (n-- != 0)
            {
                m.ItemData.Add(new ItemDataEntry
                {
                    ItemID        = p.ReadUUID(),
                    CallbackID    = p.ReadUInt32(),
                    FolderID      = p.ReadUUID(),
                    CreatorID     = p.ReadUUID(),
                    OwnerID       = p.ReadUUID(),
                    GroupID       = p.ReadUUID(),
                    BaseMask      = (InventoryPermissionsMask)p.ReadUInt32(),
                    OwnerMask     = (InventoryPermissionsMask)p.ReadUInt32(),
                    GroupMask     = (InventoryPermissionsMask)p.ReadUInt32(),
                    EveryoneMask  = (InventoryPermissionsMask)p.ReadUInt32(),
                    NextOwnerMask = (InventoryPermissionsMask)p.ReadUInt32(),
                    IsGroupOwned  = p.ReadBoolean(),
                    AssetID       = p.ReadUUID(),
                    Type          = (AssetType)p.ReadInt8(),
                    InvType       = (InventoryType)p.ReadInt8(),
                    Flags         = (InventoryFlags)p.ReadUInt32(),
                    SaleType      = (InventoryItem.SaleInfoData.SaleType)p.ReadUInt8(),
                    SalePrice     = p.ReadInt32(),
                    Name          = p.ReadStringLen8(),
                    Description   = p.ReadStringLen8(),
                    CreationDate  = p.ReadUInt32()
                });
                p.ReadUInt32(); /* checksum */
            }
            return(m);
        }