Added new ForEachRootScenePresence to Scene since almost every delegate passed to ForEachScenePresence checks for !IsChildAgent first. It consolidates child and root handling for coming refactors.

This commit is contained in:
Dan Lake
2011-10-27 00:42:21 -07:00
parent 40bee97015
commit b98613091c
14 changed files with 78 additions and 87 deletions

View File

@@ -658,17 +658,15 @@ namespace OpenSim.Region.CoreModules.World.Estate
if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false))
return;
Scene.ForEachScenePresence(delegate(ScenePresence sp)
Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
{
if (sp.UUID != senderID)
{
ScenePresence p = Scene.GetScenePresence(sp.UUID);
// make sure they are still there, we could be working down a long list
// Also make sure they are actually in the region
if (p != null && !p.IsChildAgent)
{
ScenePresence p;
if(Scene.TryGetScenePresence(sp.UUID, out p))
Scene.TeleportClientHome(p.UUID, p.ControllingClient);
}
}
});
}
@@ -929,10 +927,9 @@ namespace OpenSim.Region.CoreModules.World.Estate
public void sendRegionInfoPacketToAll()
{
Scene.ForEachScenePresence(delegate(ScenePresence sp)
Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
{
if (!sp.IsChildAgent)
HandleRegionInfoRequest(sp.ControllingClient);
HandleRegionInfoRequest(sp.ControllingClient);
});
}