diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
10 files changed, 44 insertions, 65 deletions
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 | |||
228 | 228 | ||
229 | foreach (Scene s in m_scenes) | 229 | foreach (Scene s in m_scenes) |
230 | { | 230 | { |
231 | s.ForEachScenePresence( | 231 | // This should use ForEachClient, but clients don't have a position. |
232 | // If camera is moved into client, then camera position can be used | ||
233 | s.ForEachAvatar( | ||
232 | delegate(ScenePresence presence) | 234 | delegate(ScenePresence presence) |
233 | { | 235 | { |
234 | if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType)) | 236 | if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType)) |
@@ -279,11 +281,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
279 | 281 | ||
280 | HashSet<UUID> receiverIDs = new HashSet<UUID>(); | 282 | HashSet<UUID> receiverIDs = new HashSet<UUID>(); |
281 | 283 | ||
282 | ((Scene)c.Scene).ForEachRootScenePresence( | 284 | ((Scene)c.Scene).ForEachRootClient( |
283 | delegate(ScenePresence presence) | 285 | delegate(IClientAPI client) |
284 | { | 286 | { |
285 | IClientAPI client = presence.ControllingClient; | ||
286 | |||
287 | // don't forward SayOwner chat from objects to | 287 | // don't forward SayOwner chat from objects to |
288 | // non-owner agents | 288 | // non-owner agents |
289 | if ((c.Type == ChatTypeEnum.Owner) && | 289 | if ((c.Type == ChatTypeEnum.Owner) && |
@@ -292,8 +292,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
292 | return; | 292 | return; |
293 | 293 | ||
294 | client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, | 294 | client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, |
295 | (byte)sourceType, (byte)ChatAudibleLevel.Fully); | 295 | (byte)sourceType, (byte)ChatAudibleLevel.Fully); |
296 | receiverIDs.Add(presence.UUID); | 296 | receiverIDs.Add(client.AgentId); |
297 | }); | 297 | }); |
298 | 298 | ||
299 | (c.Scene as Scene).EventManager.TriggerOnChatToClients( | 299 | (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 | |||
98 | 98 | ||
99 | public void SendGeneralAlert(string message) | 99 | public void SendGeneralAlert(string message) |
100 | { | 100 | { |
101 | m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) | 101 | m_scene.ForEachRootClient(delegate(IClientAPI client) |
102 | { | 102 | { |
103 | presence.ControllingClient.SendAlertMessage(message); | 103 | client.SendAlertMessage(message); |
104 | }); | 104 | }); |
105 | } | 105 | } |
106 | 106 | ||
@@ -162,9 +162,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
162 | public void SendNotificationToUsersInRegion( | 162 | public void SendNotificationToUsersInRegion( |
163 | UUID fromAvatarID, string fromAvatarName, string message) | 163 | UUID fromAvatarID, string fromAvatarName, string message) |
164 | { | 164 | { |
165 | m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) | 165 | m_scene.ForEachRootClient(delegate(IClientAPI client) |
166 | { | 166 | { |
167 | presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); | 167 | client.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); |
168 | }); | 168 | }); |
169 | } | 169 | } |
170 | 170 | ||
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 | |||
140 | // This is a bit crude. It seems the client will be null before it actually stops the thread | 140 | // This is a bit crude. It seems the client will be null before it actually stops the thread |
141 | // The thread will kill itself eventually :/ | 141 | // The thread will kill itself eventually :/ |
142 | // Is there another way to make sure *all* clients get this 'inter region' message? | 142 | // Is there another way to make sure *all* clients get this 'inter region' message? |
143 | m_scene.ForEachRootScenePresence( | 143 | m_scene.ForEachRootClient( |
144 | delegate(ScenePresence p) | 144 | delegate(IClientAPI client) |
145 | { | 145 | { |
146 | if (p.UUID != godID) | 146 | if (client.AgentId != godID) |
147 | { | 147 | { |
148 | // Possibly this should really be p.Close() though that method doesn't send a close | 148 | client.Close(); |
149 | // to the client | ||
150 | p.ControllingClient.Close(); | ||
151 | } | 149 | } |
152 | } | 150 | } |
153 | ); | 151 | ); |
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 | |||
145 | param.Add(mBlock); | 145 | param.Add(mBlock); |
146 | return param; | 146 | return param; |
147 | } | 147 | } |
148 | public void SendProfileToClient(ScenePresence presence) | 148 | |
149 | public void SendProfileToClient(IClientAPI client) | ||
149 | { | 150 | { |
150 | IClientAPI client = presence.ControllingClient; | 151 | SendProfileToClient(client, m_scene.RegionInfo.WindlightSettings); |
151 | if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) | ||
152 | { | ||
153 | if (presence.IsChildAgent == false) | ||
154 | { | ||
155 | List<byte[]> param = compileWindlightSettings(m_scene.RegionInfo.WindlightSettings); | ||
156 | client.SendGenericMessage("Windlight", param); | ||
157 | } | ||
158 | } | ||
159 | else | ||
160 | { | ||
161 | //We probably don't want to spam chat with this.. probably | ||
162 | //m_log.Debug("[WINDLIGHT]: Module disabled"); | ||
163 | } | ||
164 | } | 152 | } |
165 | public void SendProfileToClient(ScenePresence presence, RegionLightShareData wl) | 153 | |
154 | public void SendProfileToClient(IClientAPI client, RegionLightShareData wl) | ||
166 | { | 155 | { |
167 | IClientAPI client = presence.ControllingClient; | ||
168 | if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) | 156 | if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) |
169 | { | 157 | { |
170 | if (presence.IsChildAgent == false) | 158 | List<byte[]> param = compileWindlightSettings(wl); |
171 | { | 159 | client.SendGenericMessage("Windlight", param); |
172 | List<byte[]> param = compileWindlightSettings(wl); | ||
173 | client.SendGenericMessage("Windlight", param); | ||
174 | } | ||
175 | } | ||
176 | else | ||
177 | { | ||
178 | //We probably don't want to spam chat with this.. probably | ||
179 | //m_log.Debug("[WINDLIGHT]: Module disabled"); | ||
180 | } | 160 | } |
181 | } | 161 | } |
162 | |||
182 | private void EventManager_OnMakeRootAgent(ScenePresence presence) | 163 | private void EventManager_OnMakeRootAgent(ScenePresence presence) |
183 | { | 164 | { |
184 | m_log.Debug("[WINDLIGHT]: Sending windlight scene to new client"); | 165 | m_log.Debug("[WINDLIGHT]: Sending windlight scene to new client"); |
185 | SendProfileToClient(presence); | 166 | SendProfileToClient(presence.ControllingClient); |
186 | } | 167 | } |
168 | |||
187 | private void EventManager_OnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID pUUID) | 169 | private void EventManager_OnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID pUUID) |
188 | { | 170 | { |
189 | ScenePresence Sc; | 171 | IClientAPI client; |
190 | if (m_scene.TryGetScenePresence(pUUID,out Sc)) | 172 | m_scene.TryGetClient(pUUID, out client); |
191 | { | 173 | SendProfileToClient(client, wl); |
192 | SendProfileToClient(Sc,wl); | ||
193 | } | ||
194 | } | 174 | } |
175 | |||
195 | private void EventManager_OnSaveNewWindlightProfile() | 176 | private void EventManager_OnSaveNewWindlightProfile() |
196 | { | 177 | { |
197 | if (m_scene.RegionInfo.WindlightSettings.valid) | 178 | if (m_scene.RegionInfo.WindlightSettings.valid) |
198 | m_scene.ForEachScenePresence(SendProfileToClient); | 179 | m_scene.ForEachRootClient(SendProfileToClient); |
199 | } | 180 | } |
200 | 181 | ||
201 | public void PostInitialise() | 182 | 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 | |||
658 | if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) | 658 | if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) |
659 | return; | 659 | return; |
660 | 660 | ||
661 | Scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 661 | Scene.ForEachRootClient(delegate(IClientAPI client) |
662 | { | 662 | { |
663 | if (sp.UUID != senderID) | 663 | if (client.AgentId != senderID) |
664 | { | 664 | { |
665 | // make sure they are still there, we could be working down a long list | 665 | // make sure they are still there, we could be working down a long list |
666 | // Also make sure they are actually in the region | 666 | // Also make sure they are actually in the region |
667 | ScenePresence p; | 667 | ScenePresence p; |
668 | if(Scene.TryGetScenePresence(sp.UUID, out p)) | 668 | if(Scene.TryGetScenePresence(client.AgentId, out p)) |
669 | Scene.TeleportClientHome(p.UUID, p.ControllingClient); | 669 | Scene.TeleportClientHome(p.UUID, p.ControllingClient); |
670 | } | 670 | } |
671 | }); | 671 | }); |
@@ -927,9 +927,9 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
927 | 927 | ||
928 | public void sendRegionInfoPacketToAll() | 928 | public void sendRegionInfoPacketToAll() |
929 | { | 929 | { |
930 | Scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 930 | Scene.ForEachRootClient(delegate(IClientAPI client) |
931 | { | 931 | { |
932 | HandleRegionInfoRequest(sp.ControllingClient); | 932 | HandleRegionInfoRequest(client); |
933 | }); | 933 | }); |
934 | } | 934 | } |
935 | 935 | ||
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 | |||
476 | 476 | ||
477 | public void SendLandUpdateToAvatarsOverMe(bool snap_selection) | 477 | public void SendLandUpdateToAvatarsOverMe(bool snap_selection) |
478 | { | 478 | { |
479 | m_scene.ForEachRootScenePresence(delegate(ScenePresence avatar) | 479 | m_scene.ForEachAvatar(delegate(ScenePresence avatar) |
480 | { | 480 | { |
481 | ILandObject over = null; | 481 | ILandObject over = null; |
482 | try | 482 | 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 | |||
70 | 70 | ||
71 | SceneObjectGroup grp = part.ParentGroup; | 71 | SceneObjectGroup grp = part.ParentGroup; |
72 | 72 | ||
73 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 73 | m_scene.ForEachAvatar(delegate(ScenePresence sp) |
74 | { | 74 | { |
75 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); | 75 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); |
76 | if (dis > 100.0) // Max audio distance | 76 | if (dis > 100.0) // Max audio distance |
@@ -119,7 +119,7 @@ namespace OpenSim.Region.CoreModules.World.Sound | |||
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 122 | m_scene.ForEachAvatar(delegate(ScenePresence sp) |
123 | { | 123 | { |
124 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); | 124 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); |
125 | if (dis > 100.0) // Max audio distance | 125 | 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 | |||
488 | 488 | ||
489 | private void SunUpdateToAllClients() | 489 | private void SunUpdateToAllClients() |
490 | { | 490 | { |
491 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 491 | m_scene.ForEachRootClient(delegate(IClientAPI client) |
492 | { | 492 | { |
493 | SunToClient(sp.ControllingClient); | 493 | SunToClient(client); |
494 | }); | 494 | }); |
495 | } | 495 | } |
496 | 496 | ||
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 | |||
435 | m_frameLastUpdateClientArray = m_frame; | 435 | m_frameLastUpdateClientArray = m_frame; |
436 | } | 436 | } |
437 | 437 | ||
438 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 438 | m_scene.ForEachRootClient(delegate(IClientAPI client) |
439 | { | 439 | { |
440 | sp.ControllingClient.SendWindData(windSpeeds); | 440 | client.SendWindData(windSpeeds); |
441 | }); | 441 | }); |
442 | } | 442 | } |
443 | } | 443 | } |
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 | |||
401 | } | 401 | } |
402 | else | 402 | else |
403 | { | 403 | { |
404 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 404 | m_scene.ForEachAvatar(delegate(ScenePresence sp) |
405 | { | 405 | { |
406 | // Don't send a green dot for yourself | 406 | // Don't send a green dot for yourself |
407 | if (sp.UUID != remoteClient.AgentId) | 407 | if (sp.UUID != remoteClient.AgentId) |
@@ -1180,7 +1180,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
1180 | else | 1180 | else |
1181 | { | 1181 | { |
1182 | OSDArray responsearr = new OSDArray(m_scene.GetRootAgentCount()); | 1182 | OSDArray responsearr = new OSDArray(m_scene.GetRootAgentCount()); |
1183 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) | 1183 | m_scene.ForEachAvatar(delegate(ScenePresence sp) |
1184 | { | 1184 | { |
1185 | OSDMap responsemapdata = new OSDMap(); | 1185 | OSDMap responsemapdata = new OSDMap(); |
1186 | responsemapdata["X"] = OSD.FromInteger((int)(xstart + sp.AbsolutePosition.X)); | 1186 | responsemapdata["X"] = OSD.FromInteger((int)(xstart + sp.AbsolutePosition.X)); |