Cleaned UpdatePermissions calls on SOP and SOG to eliminate redundant properties packet sends and so one part is not telling a different part what to do. That should be up to the SOG to manage permissions on its parts and notify clients when one of them changes.
parent
f3fea81936
commit
9359293b11
|
@ -1873,7 +1873,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send metadata about the root prim (name, description, sale price, etc.) to a client.
|
||||
/// Send metadata about the root prim (name, description, sale price, permissions, etc.) to a client.
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
public void SendPropertiesToClient(IClientAPI client)
|
||||
|
@ -2481,6 +2481,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF);
|
||||
|
||||
HasGroupChanged = true;
|
||||
|
||||
// Send the group's properties to all clients once all parts are updated
|
||||
IClientAPI client;
|
||||
if (Scene.TryGetClient(AgentID, out client))
|
||||
SendPropertiesToClient(client);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -1338,22 +1338,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
client.SendObjectPropertiesReply(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the scene object group to which this part belongs, send that scene object's root part properties to a client.
|
||||
/// </summary>
|
||||
/// <param name="AgentID"></param>
|
||||
private void SendRootPartPropertiesToClient(UUID AgentID)
|
||||
{
|
||||
m_parentGroup.Scene.ForEachClient(delegate(IClientAPI client)
|
||||
{
|
||||
// Ugly reference :(
|
||||
if (client.AgentId == AgentID)
|
||||
{
|
||||
m_parentGroup.SendPropertiesToClient(client);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: unused:
|
||||
// private void handleTimerAccounting(uint localID, double interval)
|
||||
// {
|
||||
|
@ -4214,6 +4198,15 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update permissions on the SOP. Should only be called from SOG.UpdatePermissions because the SOG
|
||||
/// will handle the client notifications once all of its parts are updated.
|
||||
/// </summary>
|
||||
/// <param name="AgentID"></param>
|
||||
/// <param name="field"></param>
|
||||
/// <param name="localID"></param>
|
||||
/// <param name="mask"></param>
|
||||
/// <param name="addRemTF"></param>
|
||||
public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
|
||||
{
|
||||
bool set = addRemTF == 1;
|
||||
|
@ -4262,8 +4255,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
SendFullUpdateToAllClients();
|
||||
|
||||
SendRootPartPropertiesToClient(AgentID);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue