aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorDan Lake2011-11-03 17:06:08 -0700
committerDan Lake2011-11-03 17:06:08 -0700
commit94dc7d07ebc22ce0e0d9b77e91538ddc90799bee (patch)
tree0d2ffc74fa937af0ca5d9e6fb2fafeac2c37dd61 /OpenSim/Region/CoreModules
parentremove the pointless check of the face texture struct against null in Bot.Obj... (diff)
downloadopensim-SC_OLD-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.zip
opensim-SC_OLD-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.tar.gz
opensim-SC_OLD-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.tar.bz2
opensim-SC_OLD-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.tar.xz
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.
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs14
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs8
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs10
-rw-r--r--OpenSim/Region/CoreModules/LightShare/LightShareModule.cs49
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs10
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Sound/SoundModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/Sun/SunModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/Wind/WindModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs4
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));