internal static TaskInventorySnapshot FromTaskInventory(OpenSim.Region.Framework.Scenes.SceneObjectPart part)
        {
            TaskInventorySnapshot snapshot = new TaskInventorySnapshot
            {
                Serial = part.InventorySerial,
                Items  = ExtractInventoryItems(part)
            };

            return(snapshot);
        }
        public byte[] SerializePartToBytes(OpenSim.Region.Framework.Scenes.SceneObjectPart part, SerializationFlags flags)
        {
            Serialization.SceneObjectPartSnapshot snap = Serialization.SceneObjectPartSnapshot.FromSceneObjectPart(part, flags);

            using (MemoryStream ms = new MemoryStream())
            {
                ProtoBuf.Serializer.Serialize <Serialization.SceneObjectPartSnapshot>(ms, snap);
                return(ms.ToArray());
            }
        }
        private static TaskInventoryItemSnapshot[] ExtractInventoryItems(OpenSim.Region.Framework.Scenes.SceneObjectPart part)
        {
            var inventory = part.Inventory.CollectInventoryForBackup();

            List <TaskInventoryItemSnapshot> snapItems = new List <TaskInventoryItemSnapshot>();

            foreach (var item in inventory.Value)
            {
                snapItems.Add(new TaskInventoryItemSnapshot
                {
                    AssetId             = item.AssetID.Guid,
                    BasePermissions     = item.BasePermissions,
                    CreationDate        = item.CreationDate,
                    CreatorId           = item.CreatorID.Guid,
                    CurrentPermissions  = item.CurrentPermissions,
                    Description         = item.Description,
                    EveryonePermissions = item.EveryonePermissions,
                    Flags                = item.Flags,
                    GroupId              = item.GroupID.Guid,
                    GroupPermissions     = item.GroupPermissions,
                    InvType              = item.InvType,
                    ItemId               = item.ItemID.Guid,
                    LastOwnerId          = item.LastOwnerID.Guid,
                    Name                 = item.Name,
                    NextOwnerPermissions = item.NextPermissions,
                    OldItemId            = item.OldItemID.Guid,
                    OwnerId              = item.OwnerID.Guid,
                    ParentId             = item.ParentID.Guid,
                    ParentPartId         = item.ParentPartID.Guid,
                    PermsGranter         = item.PermsGranter.Guid,
                    PermsMask            = item.PermsMask,
                    Type                 = item.Type
                });
            }

            return(snapItems.ToArray());
        }