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>
|
/// <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>
|
/// </summary>
|
||||||
/// <param name="client"></param>
|
/// <param name="client"></param>
|
||||||
public void SendPropertiesToClient(IClientAPI client)
|
public void SendPropertiesToClient(IClientAPI client)
|
||||||
|
@ -2481,6 +2481,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF);
|
parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF);
|
||||||
|
|
||||||
HasGroupChanged = true;
|
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
|
#endregion
|
||||||
|
|
|
@ -1338,22 +1338,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
client.SendObjectPropertiesReply(this);
|
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:
|
// TODO: unused:
|
||||||
// private void handleTimerAccounting(uint localID, double interval)
|
// 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)
|
public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
|
||||||
{
|
{
|
||||||
bool set = addRemTF == 1;
|
bool set = addRemTF == 1;
|
||||||
|
@ -4262,8 +4255,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
SendFullUpdateToAllClients();
|
SendFullUpdateToAllClients();
|
||||||
|
|
||||||
SendRootPartPropertiesToClient(AgentID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue