chance new effective permissions code to ease aggregation on demand( ie on changes). But still doing full aggregation on checks, so still heavy

This commit is contained in:
UbitUmarov
2017-01-16 19:01:41 +00:00
parent d78f04b326
commit 733072b6a3
5 changed files with 136 additions and 162 deletions

View File

@@ -1317,48 +1317,16 @@ namespace OpenSim.Region.Framework.Scenes
}
}
// reduce to minimal set
public void AggregateEveryOnePerms(ref uint current)
public void AggregateInnerPerms(ref uint owner, ref uint group, ref uint everyone)
{
foreach (TaskInventoryItem item in m_items.Values)
{
current &= item.EveryonePermissions;
if(current == 0)
break;
owner &= item.CurrentPermissions;
group &= item.GroupPermissions;
everyone &= item.EveryonePermissions;
}
}
public void AggregateGroupPerms(ref uint current)
{
foreach (TaskInventoryItem item in m_items.Values)
{
current &= item.GroupPermissions;
if(current == 0)
break;
}
}
public void AggregateGroupOrEveryonePerms(ref uint current)
{
foreach (TaskInventoryItem item in m_items.Values)
{
current &= (item.GroupPermissions | item.EveryonePermissions);
if(current == 0)
break;
}
}
public void AggregateOwnerPerms(ref uint current)
{
foreach (TaskInventoryItem item in m_items.Values)
{
current &= item.CurrentPermissions;
if(current == 0)
break;
}
}
public uint MaskEffectivePermissions()
{
uint mask=0x7fffffff;