diff options
author | Dan Lake | 2011-10-27 00:42:21 -0700 |
---|---|---|
committer | Dan Lake | 2011-10-27 00:42:21 -0700 |
commit | b98613091cd6dc2f914fb5ab38ca33cdff21fc24 (patch) | |
tree | 42be01a68146870ddcd64e842a13f2fbb46b4738 /OpenSim | |
parent | For now, comment out error message on new script engine console commands. (diff) | |
download | opensim-SC_OLD-b98613091cd6dc2f914fb5ab38ca33cdff21fc24.zip opensim-SC_OLD-b98613091cd6dc2f914fb5ab38ca33cdff21fc24.tar.gz opensim-SC_OLD-b98613091cd6dc2f914fb5ab38ca33cdff21fc24.tar.bz2 opensim-SC_OLD-b98613091cd6dc2f914fb5ab38ca33cdff21fc24.tar.xz |
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.
Diffstat (limited to 'OpenSim')
14 files changed, 79 insertions, 88 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 4359c01..2cd71c4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs | |||
@@ -279,12 +279,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
279 | 279 | ||
280 | HashSet<UUID> receiverIDs = new HashSet<UUID>(); | 280 | HashSet<UUID> receiverIDs = new HashSet<UUID>(); |
281 | 281 | ||
282 | ((Scene)c.Scene).ForEachScenePresence( | 282 | ((Scene)c.Scene).ForEachRootScenePresence( |
283 | delegate(ScenePresence presence) | 283 | delegate(ScenePresence presence) |
284 | { | 284 | { |
285 | // ignore chat from child agents | ||
286 | if (presence.IsChildAgent) return; | ||
287 | |||
288 | IClientAPI client = presence.ControllingClient; | 285 | IClientAPI client = presence.ControllingClient; |
289 | 286 | ||
290 | // don't forward SayOwner chat from objects to | 287 | // don't forward SayOwner chat from objects to |
diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs index 5ec64d5..562c3b1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs | |||
@@ -140,10 +140,10 @@ 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.ForEachScenePresence( | 143 | m_scene.ForEachRootScenePresence( |
144 | delegate(ScenePresence p) | 144 | delegate(ScenePresence p) |
145 | { | 145 | { |
146 | if (p.UUID != godID && !p.IsChildAgent) | 146 | if (p.UUID != godID) |
147 | { | 147 | { |
148 | // Possibly this should really be p.Close() though that method doesn't send a close | 148 | // Possibly this should really be p.Close() though that method doesn't send a close |
149 | // to the client | 149 | // to the client |
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index c199a77..5427b68 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -658,17 +658,15 @@ 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.ForEachScenePresence(delegate(ScenePresence sp) | 661 | Scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
662 | { | 662 | { |
663 | if (sp.UUID != senderID) | 663 | if (sp.UUID != senderID) |
664 | { | 664 | { |
665 | ScenePresence p = Scene.GetScenePresence(sp.UUID); | ||
666 | // 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 |
667 | // Also make sure they are actually in the region | 666 | // Also make sure they are actually in the region |
668 | if (p != null && !p.IsChildAgent) | 667 | ScenePresence p; |
669 | { | 668 | if(Scene.TryGetScenePresence(sp.UUID, out p)) |
670 | Scene.TeleportClientHome(p.UUID, p.ControllingClient); | 669 | Scene.TeleportClientHome(p.UUID, p.ControllingClient); |
671 | } | ||
672 | } | 670 | } |
673 | }); | 671 | }); |
674 | } | 672 | } |
@@ -929,10 +927,9 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
929 | 927 | ||
930 | public void sendRegionInfoPacketToAll() | 928 | public void sendRegionInfoPacketToAll() |
931 | { | 929 | { |
932 | Scene.ForEachScenePresence(delegate(ScenePresence sp) | 930 | Scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
933 | { | 931 | { |
934 | if (!sp.IsChildAgent) | 932 | HandleRegionInfoRequest(sp.ControllingClient); |
935 | HandleRegionInfoRequest(sp.ControllingClient); | ||
936 | }); | 933 | }); |
937 | } | 934 | } |
938 | 935 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 8c40171..0da0de3 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -476,11 +476,8 @@ 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.ForEachScenePresence(delegate(ScenePresence avatar) | 479 | m_scene.ForEachRootScenePresence(delegate(ScenePresence avatar) |
480 | { | 480 | { |
481 | if (avatar.IsChildAgent) | ||
482 | return; | ||
483 | |||
484 | ILandObject over = null; | 481 | ILandObject over = null; |
485 | try | 482 | try |
486 | { | 483 | { |
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs index 22ffcd6..93b1005 100644 --- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs +++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs | |||
@@ -70,11 +70,8 @@ namespace OpenSim.Region.CoreModules.World.Sound | |||
70 | 70 | ||
71 | SceneObjectGroup grp = part.ParentGroup; | 71 | SceneObjectGroup grp = part.ParentGroup; |
72 | 72 | ||
73 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 73 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
74 | { | 74 | { |
75 | if (sp.IsChildAgent) | ||
76 | return; | ||
77 | |||
78 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); | 75 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); |
79 | if (dis > 100.0) // Max audio distance | 76 | if (dis > 100.0) // Max audio distance |
80 | return; | 77 | return; |
@@ -122,11 +119,8 @@ namespace OpenSim.Region.CoreModules.World.Sound | |||
122 | } | 119 | } |
123 | } | 120 | } |
124 | 121 | ||
125 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 122 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
126 | { | 123 | { |
127 | if (sp.IsChildAgent) | ||
128 | return; | ||
129 | |||
130 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); | 124 | double dis = Util.GetDistanceTo(sp.AbsolutePosition, position); |
131 | if (dis > 100.0) // Max audio distance | 125 | if (dis > 100.0) // Max audio distance |
132 | return; | 126 | return; |
diff --git a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs index 4e14c73..d2c1289 100644 --- a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs +++ b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs | |||
@@ -488,12 +488,9 @@ namespace OpenSim.Region.CoreModules | |||
488 | 488 | ||
489 | private void SunUpdateToAllClients() | 489 | private void SunUpdateToAllClients() |
490 | { | 490 | { |
491 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 491 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
492 | { | 492 | { |
493 | if (!sp.IsChildAgent) | ||
494 | { | ||
495 | SunToClient(sp.ControllingClient); | 493 | SunToClient(sp.ControllingClient); |
496 | } | ||
497 | }); | 494 | }); |
498 | } | 495 | } |
499 | 496 | ||
diff --git a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs index 6bac555..bea5db1 100644 --- a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs +++ b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs | |||
@@ -435,10 +435,9 @@ namespace OpenSim.Region.CoreModules | |||
435 | m_frameLastUpdateClientArray = m_frame; | 435 | m_frameLastUpdateClientArray = m_frame; |
436 | } | 436 | } |
437 | 437 | ||
438 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 438 | m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
439 | { | 439 | { |
440 | if (!sp.IsChildAgent) | 440 | sp.ControllingClient.SendWindData(windSpeeds); |
441 | sp.ControllingClient.SendWindData(windSpeeds); | ||
442 | }); | 441 | }); |
443 | } | 442 | } |
444 | } | 443 | } |
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 857079c..509c0d8 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | |||
@@ -401,10 +401,10 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
401 | } | 401 | } |
402 | else | 402 | else |
403 | { | 403 | { |
404 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 404 | m_scene.ForEachRootScenePresence(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.IsChildAgent && sp.UUID != remoteClient.AgentId) | 407 | if (sp.UUID != remoteClient.AgentId) |
408 | { | 408 | { |
409 | mapitem = new mapItemReply(); | 409 | mapitem = new mapItemReply(); |
410 | mapitem.x = (uint)(xstart + sp.AbsolutePosition.X); | 410 | mapitem.x = (uint)(xstart + sp.AbsolutePosition.X); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e43185d..302103a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -893,22 +893,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
893 | 893 | ||
894 | try | 894 | try |
895 | { | 895 | { |
896 | ForEachScenePresence(delegate(ScenePresence agent) | 896 | ForEachRootScenePresence(delegate(ScenePresence agent) |
897 | { | 897 | { |
898 | // If agent is a root agent. | 898 | //agent.ControllingClient.new |
899 | if (!agent.IsChildAgent) | 899 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); |
900 | { | 900 | |
901 | //agent.ControllingClient.new | 901 | List<ulong> old = new List<ulong>(); |
902 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); | 902 | old.Add(otherRegion.RegionHandle); |
903 | 903 | agent.DropOldNeighbours(old); | |
904 | List<ulong> old = new List<ulong>(); | 904 | if (m_teleportModule != null) |
905 | old.Add(otherRegion.RegionHandle); | 905 | m_teleportModule.EnableChildAgent(agent, otherRegion); |
906 | agent.DropOldNeighbours(old); | 906 | }); |
907 | if (m_teleportModule != null) | ||
908 | m_teleportModule.EnableChildAgent(agent, otherRegion); | ||
909 | } | ||
910 | } | ||
911 | ); | ||
912 | } | 907 | } |
913 | catch (NullReferenceException) | 908 | catch (NullReferenceException) |
914 | { | 909 | { |
@@ -1043,16 +1038,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1043 | GridRegion r = new GridRegion(region); | 1038 | GridRegion r = new GridRegion(region); |
1044 | try | 1039 | try |
1045 | { | 1040 | { |
1046 | ForEachScenePresence(delegate(ScenePresence agent) | 1041 | ForEachRootScenePresence(delegate(ScenePresence agent) |
1047 | { | 1042 | { |
1048 | // If agent is a root agent. | 1043 | if (m_teleportModule != null) |
1049 | if (!agent.IsChildAgent) | 1044 | m_teleportModule.EnableChildAgent(agent, r); |
1050 | { | 1045 | }); |
1051 | if (m_teleportModule != null) | ||
1052 | m_teleportModule.EnableChildAgent(agent, r); | ||
1053 | } | ||
1054 | } | ||
1055 | ); | ||
1056 | } | 1046 | } |
1057 | catch (NullReferenceException) | 1047 | catch (NullReferenceException) |
1058 | { | 1048 | { |
@@ -1456,11 +1446,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1456 | /// <param name="stats">Stats on the Simulator's performance</param> | 1446 | /// <param name="stats">Stats on the Simulator's performance</param> |
1457 | private void SendSimStatsPackets(SimStats stats) | 1447 | private void SendSimStatsPackets(SimStats stats) |
1458 | { | 1448 | { |
1459 | ForEachScenePresence( | 1449 | ForEachRootScenePresence( |
1460 | delegate(ScenePresence agent) | 1450 | delegate(ScenePresence agent) |
1461 | { | 1451 | { |
1462 | if (!agent.IsChildAgent) | 1452 | agent.ControllingClient.SendSimStats(stats); |
1463 | agent.ControllingClient.SendSimStats(stats); | ||
1464 | } | 1453 | } |
1465 | ); | 1454 | ); |
1466 | } | 1455 | } |
@@ -4290,6 +4279,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
4290 | } | 4279 | } |
4291 | 4280 | ||
4292 | /// <summary> | 4281 | /// <summary> |
4282 | /// Performs action on all ROOT (not child) scene presences. | ||
4283 | /// This is just a shortcut function since frequently actions only appy to root SPs | ||
4284 | /// </summary> | ||
4285 | /// <param name="action"></param> | ||
4286 | public void ForEachRootScenePresence(Action<ScenePresence> action) | ||
4287 | { | ||
4288 | if(m_sceneGraph != null) | ||
4289 | { | ||
4290 | m_sceneGraph.ForEachRootScenePresence(action); | ||
4291 | } | ||
4292 | } | ||
4293 | |||
4294 | /// <summary> | ||
4293 | /// Performs action on all scene presences. | 4295 | /// Performs action on all scene presences. |
4294 | /// </summary> | 4296 | /// </summary> |
4295 | /// <param name="action"></param> | 4297 | /// <param name="action"></param> |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index caec704..542bd51 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1190,7 +1190,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
1190 | } | 1190 | } |
1191 | } | 1191 | } |
1192 | } | 1192 | } |
1193 | 1193 | ||
1194 | /// <summary> | ||
1195 | /// Performs action on all ROOT (not child) scene presences. | ||
1196 | /// This is just a shortcut function since frequently actions only appy to root SPs | ||
1197 | /// </summary> | ||
1198 | /// <param name="action"></param> | ||
1199 | public void ForEachRootScenePresence(Action<ScenePresence> action) | ||
1200 | { | ||
1201 | ForEachScenePresence(delegate(ScenePresence sp) | ||
1202 | { | ||
1203 | if (!sp.IsChildAgent) | ||
1204 | action(sp); | ||
1205 | }); | ||
1206 | } | ||
1207 | |||
1194 | /// <summary> | 1208 | /// <summary> |
1195 | /// Performs action on all scene presences. This can ultimately run the actions in parallel but | 1209 | /// Performs action on all scene presences. This can ultimately run the actions in parallel but |
1196 | /// any delegates passed in will need to implement their own locking on data they reference and | 1210 | /// any delegates passed in will need to implement their own locking on data they reference and |
diff --git a/OpenSim/Region/Framework/Scenes/SceneManager.cs b/OpenSim/Region/Framework/Scenes/SceneManager.cs index a58b87d..3bfd866 100644 --- a/OpenSim/Region/Framework/Scenes/SceneManager.cs +++ b/OpenSim/Region/Framework/Scenes/SceneManager.cs | |||
@@ -458,9 +458,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
458 | ForEachCurrentScene( | 458 | ForEachCurrentScene( |
459 | delegate(Scene scene) | 459 | delegate(Scene scene) |
460 | { | 460 | { |
461 | scene.ForEachScenePresence(delegate(ScenePresence scenePresence) | 461 | scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence) |
462 | { | 462 | { |
463 | if (!scenePresence.IsChildAgent && (name == null || scenePresence.Name == name)) | 463 | if (name == null || scenePresence.Name == name) |
464 | { | 464 | { |
465 | m_log.DebugFormat("Packet debug for {0} {1} set to {2}", | 465 | m_log.DebugFormat("Packet debug for {0} {1} set to {2}", |
466 | scenePresence.Firstname, | 466 | scenePresence.Firstname, |
@@ -481,10 +481,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
481 | ForEachCurrentScene( | 481 | ForEachCurrentScene( |
482 | delegate(Scene scene) | 482 | delegate(Scene scene) |
483 | { | 483 | { |
484 | scene.ForEachScenePresence(delegate(ScenePresence scenePresence) | 484 | scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence) |
485 | { | 485 | { |
486 | if (!scenePresence.IsChildAgent) | 486 | avatars.Add(scenePresence); |
487 | avatars.Add(scenePresence); | ||
488 | }); | 487 | }); |
489 | } | 488 | } |
490 | ); | 489 | ); |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs index 0d6313a..e22618d 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs | |||
@@ -373,13 +373,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge | |||
373 | scene.GetRootAgentCount(), scene.RegionInfo.RegionName, | 373 | scene.GetRootAgentCount(), scene.RegionInfo.RegionName, |
374 | scene.RegionInfo.RegionID, | 374 | scene.RegionInfo.RegionID, |
375 | DateTime.UtcNow.ToString("s"))); | 375 | DateTime.UtcNow.ToString("s"))); |
376 | scene.ForEachScenePresence(delegate(ScenePresence sp) | 376 | scene.ForEachRootScenePresence(delegate(ScenePresence sp) |
377 | { | 377 | { |
378 | if (!sp.IsChildAgent) | ||
379 | { | ||
380 | list.Append(String.Format(" <avatar name=\"{0}\" uuid=\"{1}\" />\n", sp.Name, sp.UUID)); | 378 | list.Append(String.Format(" <avatar name=\"{0}\" uuid=\"{1}\" />\n", sp.Name, sp.UUID)); |
381 | list.Append("</avatars>"); | 379 | list.Append("</avatars>"); |
382 | } | ||
383 | }); | 380 | }); |
384 | string payload = list.ToString(); | 381 | string payload = list.ToString(); |
385 | 382 | ||
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs index 4a24c7d..92cbbc6 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs | |||
@@ -711,10 +711,8 @@ namespace OpenSim.Region.RegionCombinerModule | |||
711 | 711 | ||
712 | List<Vector3> CoarseLocations = new List<Vector3>(); | 712 | List<Vector3> CoarseLocations = new List<Vector3>(); |
713 | List<UUID> AvatarUUIDs = new List<UUID>(); | 713 | List<UUID> AvatarUUIDs = new List<UUID>(); |
714 | connectiondata.RegionScene.ForEachScenePresence(delegate(ScenePresence sp) | 714 | connectiondata.RegionScene.ForEachRootScenePresence(delegate(ScenePresence sp) |
715 | { | 715 | { |
716 | if (sp.IsChildAgent) | ||
717 | return; | ||
718 | if (sp.UUID != presence.UUID) | 716 | if (sp.UUID != presence.UUID) |
719 | { | 717 | { |
720 | if (sp.ParentID != 0) | 718 | if (sp.ParentID != 0) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 82701ce..83c3b78 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3723,9 +3723,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3723 | m_host.AddScriptLPS(1); | 3723 | m_host.AddScriptLPS(1); |
3724 | List<UUID> keytable = new List<UUID>(); | 3724 | List<UUID> keytable = new List<UUID>(); |
3725 | // parse for sitting avatare-uuids | 3725 | // parse for sitting avatare-uuids |
3726 | World.ForEachScenePresence(delegate(ScenePresence presence) | 3726 | World.ForEachRootScenePresence(delegate(ScenePresence presence) |
3727 | { | 3727 | { |
3728 | if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) | 3728 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) |
3729 | keytable.Add(presence.UUID); | 3729 | keytable.Add(presence.UUID); |
3730 | }); | 3730 | }); |
3731 | 3731 | ||
@@ -3785,9 +3785,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3785 | m_host.AddScriptLPS(1); | 3785 | m_host.AddScriptLPS(1); |
3786 | // parse for sitting avatare-names | 3786 | // parse for sitting avatare-names |
3787 | List<String> nametable = new List<String>(); | 3787 | List<String> nametable = new List<String>(); |
3788 | World.ForEachScenePresence(delegate(ScenePresence presence) | 3788 | World.ForEachRootScenePresence(delegate(ScenePresence presence) |
3789 | { | 3789 | { |
3790 | if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) | 3790 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) |
3791 | nametable.Add(presence.ControllingClient.Name); | 3791 | nametable.Add(presence.ControllingClient.Name); |
3792 | }); | 3792 | }); |
3793 | 3793 | ||
@@ -7568,9 +7568,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7568 | { | 7568 | { |
7569 | m_host.AddScriptLPS(1); | 7569 | m_host.AddScriptLPS(1); |
7570 | int avatarCount = 0; | 7570 | int avatarCount = 0; |
7571 | World.ForEachScenePresence(delegate(ScenePresence presence) | 7571 | World.ForEachRootScenePresence(delegate(ScenePresence presence) |
7572 | { | 7572 | { |
7573 | if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) | 7573 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) |
7574 | avatarCount++; | 7574 | avatarCount++; |
7575 | }); | 7575 | }); |
7576 | 7576 | ||
@@ -9336,9 +9336,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
9336 | landObject.SetMediaUrl(url); | 9336 | landObject.SetMediaUrl(url); |
9337 | 9337 | ||
9338 | // now send to all (non-child) agents in the parcel | 9338 | // now send to all (non-child) agents in the parcel |
9339 | World.ForEachScenePresence(delegate(ScenePresence sp) | 9339 | World.ForEachRootScenePresence(delegate(ScenePresence sp) |
9340 | { | 9340 | { |
9341 | if (!sp.IsChildAgent && (sp.currentParcelUUID == landData.GlobalID)) | 9341 | if (sp.currentParcelUUID == landData.GlobalID) |
9342 | { | 9342 | { |
9343 | sp.ControllingClient.SendParcelMediaUpdate(landData.MediaURL, | 9343 | sp.ControllingClient.SendParcelMediaUpdate(landData.MediaURL, |
9344 | landData.MediaID, | 9344 | landData.MediaID, |
@@ -9369,9 +9369,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
9369 | if (presence == null) | 9369 | if (presence == null) |
9370 | { | 9370 | { |
9371 | // send to all (non-child) agents in the parcel | 9371 | // send to all (non-child) agents in the parcel |
9372 | World.ForEachScenePresence(delegate(ScenePresence sp) | 9372 | World.ForEachRootScenePresence(delegate(ScenePresence sp) |
9373 | { | 9373 | { |
9374 | if (!sp.IsChildAgent && (sp.currentParcelUUID == landData.GlobalID)) | 9374 | if (sp.currentParcelUUID == landData.GlobalID) |
9375 | { | 9375 | { |
9376 | sp.ControllingClient.SendParcelMediaCommand(0x4, // TODO what is this? | 9376 | sp.ControllingClient.SendParcelMediaCommand(0x4, // TODO what is this? |
9377 | (ParcelMediaCommandEnum)commandToSend, | 9377 | (ParcelMediaCommandEnum)commandToSend, |