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); }
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); }