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