示例#1
0
 public InventoryItem(InventoryItem item)
 {
     AssetID        = new UUID(item.AssetID);
     AssetType      = item.AssetType;
     CreationDate   = new Date(item.CreationDate);
     Creator        = new UGUI(item.Creator);
     Description    = item.Description;
     Flags          = item.Flags;
     Group          = new UGI(item.Group);
     IsGroupOwned   = item.IsGroupOwned;
     ID             = item.ID;
     InventoryType  = item.InventoryType;
     LastOwner      = new UGUI(item.LastOwner);
     Name           = item.Name;
     Owner          = new UGUI(item.Owner);
     ParentFolderID = new UUID(item.ParentFolderID);
     Permissions    = new InventoryPermissionsData(item.Permissions);
     SaleInfo       = item.SaleInfo;
 }
        private void HandleRezOverwritePerms(ObjectGroup group, InventoryItem sourceItem)
        {
            InventoryFlags invFlags = sourceItem.Flags;

            if ((invFlags & InventoryFlags.PermOverwriteMask) != 0)
            {
                if ((invFlags & InventoryFlags.ObjectSlamSale) != 0)
                {
                    group.SaleType = InventoryItem.SaleInfoData.SaleType.NoSale;
                }
                foreach (ObjectPart part in group.ValuesByKey1)
                {
                    if ((invFlags & InventoryFlags.ObjectPermOverwriteBase) != 0)
                    {
                        part.BaseMask = sourceItem.Permissions.Base;
                    }

                    if ((invFlags & InventoryFlags.ObjectPermOverwriteOwner) != 0)
                    {
                        part.OwnerMask = sourceItem.Permissions.Current;
                    }

                    if ((invFlags & InventoryFlags.ObjectPermOverwriteGroup) != 0)
                    {
                        part.GroupMask = sourceItem.Permissions.Group;
                    }

                    if ((invFlags & InventoryFlags.ObjectPermOverwriteEveryOne) != 0)
                    {
                        part.EveryoneMask = sourceItem.Permissions.EveryOne;
                    }

                    if ((invFlags & InventoryFlags.ObjectPermOverwriteNextOwner) != 0)
                    {
                        part.NextOwnerMask = sourceItem.Permissions.NextOwner;
                    }

                    if ((invFlags & InventoryFlags.ObjectSlamPerm) != 0)
                    {
                        part.AdjustToNextOwner();
                    }

                    foreach (ObjectPartInventoryItem item in part.Inventory.ValuesByKey1)
                    {
                        bool isUpdated = false;
                        if ((invFlags & InventoryFlags.ObjectSlamPerm) != 0)
                        {
                            item.AdjustToNextOwner();
                            isUpdated = true;
                        }

                        if ((invFlags & InventoryFlags.ObjectSlamSale) != 0 &&
                            sourceItem.AssetType == AssetType.Object)
                        {
                            item.Flags |= InventoryFlags.ObjectSlamSale;
                            isUpdated   = true;
                        }

                        if (isUpdated)
                        {
                            part.Inventory.TriggerItemUpdated(item.ID);
                        }
                    }
                }
            }
        }