aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar
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/Avatar
parentremove the pointless check of the face texture struct against null in Bot.Obj... (diff)
downloadopensim-SC-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.zip
opensim-SC-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.tar.gz
opensim-SC-94dc7d07ebc22ce0e0d9b77e91538ddc90799bee.tar.bz2
opensim-SC-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/Avatar')
-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
3 files changed, 15 insertions, 17 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 );