From 94dc7d07ebc22ce0e0d9b77e91538ddc90799bee Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Thu, 3 Nov 2011 17:06:08 -0700 Subject: Renamed ForEachRootScenePresence to ForEachAvatar. Cleaned up calls to the 3 iteration functions so more of them are using the correct iteration for the action they are performing. The 3 iterators that seem to fit all actions within OpenSim at this time are: ForEachAvatar: Perform an action on all avatars (root presences) ForEachClient: Perform an action on all clients (root or child clients) ForEachRootClient: Perform an action on all clients that have an avatar There are still a dozen places or so calling the old ForEachScenePresence that will take a little more refactoring to eliminate. --- .../Region/CoreModules/Avatar/Chat/ChatModule.cs | 14 +++---- .../CoreModules/Avatar/Dialog/DialogModule.cs | 8 ++-- .../Region/CoreModules/Avatar/Gods/GodsModule.cs | 10 ++--- .../CoreModules/LightShare/LightShareModule.cs | 49 +++++++--------------- .../World/Estate/EstateManagementModule.cs | 10 ++--- .../Region/CoreModules/World/Land/LandObject.cs | 2 +- .../Region/CoreModules/World/Sound/SoundModule.cs | 4 +- OpenSim/Region/CoreModules/World/Sun/SunModule.cs | 4 +- .../Region/CoreModules/World/Wind/WindModule.cs | 4 +- .../CoreModules/World/WorldMap/WorldMapModule.cs | 4 +- 10 files changed, 44 insertions(+), 65 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index f5cc4c3..783a03b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs @@ -228,7 +228,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat foreach (Scene s in m_scenes) { - s.ForEachScenePresence( + // This should use ForEachClient, but clients don't have a position. + // If camera is moved into client, then camera position can be used + s.ForEachAvatar( delegate(ScenePresence presence) { if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType)) @@ -279,11 +281,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat HashSet receiverIDs = new HashSet(); - ((Scene)c.Scene).ForEachRootScenePresence( - delegate(ScenePresence presence) + ((Scene)c.Scene).ForEachRootClient( + delegate(IClientAPI client) { - IClientAPI client = presence.ControllingClient; - // don't forward SayOwner chat from objects to // non-owner agents if ((c.Type == ChatTypeEnum.Owner) && @@ -292,8 +292,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat return; client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, - (byte)sourceType, (byte)ChatAudibleLevel.Fully); - receiverIDs.Add(presence.UUID); + (byte)sourceType, (byte)ChatAudibleLevel.Fully); + receiverIDs.Add(client.AgentId); }); (c.Scene as Scene).EventManager.TriggerOnChatToClients( diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs index 3ce446b..ffe7718 100644 --- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs @@ -98,9 +98,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog public void SendGeneralAlert(string message) { - m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) + m_scene.ForEachRootClient(delegate(IClientAPI client) { - presence.ControllingClient.SendAlertMessage(message); + client.SendAlertMessage(message); }); } @@ -162,9 +162,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog public void SendNotificationToUsersInRegion( UUID fromAvatarID, string fromAvatarName, string message) { - m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) + m_scene.ForEachRootClient(delegate(IClientAPI client) { - presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); + client.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); }); } diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs index 562c3b1..2e3312f 100644 --- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs @@ -140,14 +140,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods // This is a bit crude. It seems the client will be null before it actually stops the thread // The thread will kill itself eventually :/ // Is there another way to make sure *all* clients get this 'inter region' message? - m_scene.ForEachRootScenePresence( - delegate(ScenePresence p) + m_scene.ForEachRootClient( + delegate(IClientAPI client) { - if (p.UUID != godID) + if (client.AgentId != godID) { - // Possibly this should really be p.Close() though that method doesn't send a close - // to the client - p.ControllingClient.Close(); + client.Close(); } } ); diff --git a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs index 2de8d7a..cabbd31 100644 --- a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs +++ b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs @@ -145,57 +145,38 @@ namespace OpenSim.Region.CoreModules.World.LightShare param.Add(mBlock); return param; } - public void SendProfileToClient(ScenePresence presence) + + public void SendProfileToClient(IClientAPI client) { - IClientAPI client = presence.ControllingClient; - if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) - { - if (presence.IsChildAgent == false) - { - List param = compileWindlightSettings(m_scene.RegionInfo.WindlightSettings); - client.SendGenericMessage("Windlight", param); - } - } - else - { - //We probably don't want to spam chat with this.. probably - //m_log.Debug("[WINDLIGHT]: Module disabled"); - } + SendProfileToClient(client, m_scene.RegionInfo.WindlightSettings); } - public void SendProfileToClient(ScenePresence presence, RegionLightShareData wl) + + public void SendProfileToClient(IClientAPI client, RegionLightShareData wl) { - IClientAPI client = presence.ControllingClient; if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) { - if (presence.IsChildAgent == false) - { - List param = compileWindlightSettings(wl); - client.SendGenericMessage("Windlight", param); - } - } - else - { - //We probably don't want to spam chat with this.. probably - //m_log.Debug("[WINDLIGHT]: Module disabled"); + List param = compileWindlightSettings(wl); + client.SendGenericMessage("Windlight", param); } } + private void EventManager_OnMakeRootAgent(ScenePresence presence) { m_log.Debug("[WINDLIGHT]: Sending windlight scene to new client"); - SendProfileToClient(presence); + SendProfileToClient(presence.ControllingClient); } + private void EventManager_OnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID pUUID) { - ScenePresence Sc; - if (m_scene.TryGetScenePresence(pUUID,out Sc)) - { - SendProfileToClient(Sc,wl); - } + IClientAPI client; + m_scene.TryGetClient(pUUID, out client); + SendProfileToClient(client, wl); } + private void EventManager_OnSaveNewWindlightProfile() { if (m_scene.RegionInfo.WindlightSettings.valid) - m_scene.ForEachScenePresence(SendProfileToClient); + m_scene.ForEachRootClient(SendProfileToClient); } public void PostInitialise() diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 5427b68..58d9455 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -658,14 +658,14 @@ namespace OpenSim.Region.CoreModules.World.Estate if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) return; - Scene.ForEachRootScenePresence(delegate(ScenePresence sp) + Scene.ForEachRootClient(delegate(IClientAPI client) { - if (sp.UUID != senderID) + if (client.AgentId != senderID) { // make sure they are still there, we could be working down a long list // Also make sure they are actually in the region ScenePresence p; - if(Scene.TryGetScenePresence(sp.UUID, out p)) + if(Scene.TryGetScenePresence(client.AgentId, out p)) Scene.TeleportClientHome(p.UUID, p.ControllingClient); } }); @@ -927,9 +927,9 @@ namespace OpenSim.Region.CoreModules.World.Estate public void sendRegionInfoPacketToAll() { - Scene.ForEachRootScenePresence(delegate(ScenePresence sp) + Scene.ForEachRootClient(delegate(IClientAPI client) { - HandleRegionInfoRequest(sp.ControllingClient); + HandleRegionInfoRequest(client); }); } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 0da0de3..ff3b107 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -476,7 +476,7 @@ namespace OpenSim.Region.CoreModules.World.Land public void SendLandUpdateToAvatarsOverMe(bool snap_selection) { - m_scene.ForEachRootScenePresence(delegate(ScenePresence avatar) + m_scene.ForEachAvatar(delegate(ScenePresence avatar) { ILandObject over = null; try diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs index 93b1005..fcbc159 100644 --- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs +++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs @@ -70,7 +70,7 @@ namespace OpenSim.Region.CoreModules.World.Sound SceneObjectGroup grp = part.ParentGroup; - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachAvatar(delegate(ScenePresence sp) { double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); if (dis > 100.0) // Max audio distance @@ -119,7 +119,7 @@ namespace OpenSim.Region.CoreModules.World.Sound } } - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachAvatar(delegate(ScenePresence sp) { double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); if (dis > 100.0) // Max audio distance diff --git a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs index d2c1289..a838e1e 100644 --- a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs +++ b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs @@ -488,9 +488,9 @@ namespace OpenSim.Region.CoreModules private void SunUpdateToAllClients() { - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachRootClient(delegate(IClientAPI client) { - SunToClient(sp.ControllingClient); + SunToClient(client); }); } diff --git a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs index bea5db1..a488725 100644 --- a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs +++ b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs @@ -435,9 +435,9 @@ namespace OpenSim.Region.CoreModules m_frameLastUpdateClientArray = m_frame; } - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachRootClient(delegate(IClientAPI client) { - sp.ControllingClient.SendWindData(windSpeeds); + client.SendWindData(windSpeeds); }); } } diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 00d7d55..cd4d7e3 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -401,7 +401,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap } else { - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachAvatar(delegate(ScenePresence sp) { // Don't send a green dot for yourself if (sp.UUID != remoteClient.AgentId) @@ -1180,7 +1180,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap else { OSDArray responsearr = new OSDArray(m_scene.GetRootAgentCount()); - m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) + m_scene.ForEachAvatar(delegate(ScenePresence sp) { OSDMap responsemapdata = new OSDMap(); responsemapdata["X"] = OSD.FromInteger((int)(xstart + sp.AbsolutePosition.X)); -- cgit v1.1