diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Land/LandObject.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index e85136a..b2d9b66 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -332,36 +332,38 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
332 | 332 | ||
333 | public void SendLandUpdateToAvatarsOverMe(bool snap_selection) | 333 | public void SendLandUpdateToAvatarsOverMe(bool snap_selection) |
334 | { | 334 | { |
335 | List<ScenePresence> avatars = m_scene.GetAvatars(); | 335 | m_scene.ForEachScenePresence(delegate(ScenePresence avatar) |
336 | ILandObject over = null; | ||
337 | for (int i = 0; i < avatars.Count; i++) | ||
338 | { | 336 | { |
337 | if (avatar.IsChildAgent) | ||
338 | return; | ||
339 | |||
340 | ILandObject over = null; | ||
339 | try | 341 | try |
340 | { | 342 | { |
341 | over = | 343 | over = |
342 | m_scene.LandChannel.GetLandObject(Util.Clamp<int>((int)Math.Round(avatars[i].AbsolutePosition.X), 0, ((int)Constants.RegionSize - 1)), | 344 | m_scene.LandChannel.GetLandObject(Util.Clamp<int>((int)Math.Round(avatar.AbsolutePosition.X), 0, ((int)Constants.RegionSize - 1)), |
343 | Util.Clamp<int>((int)Math.Round(avatars[i].AbsolutePosition.Y), 0, ((int)Constants.RegionSize - 1))); | 345 | Util.Clamp<int>((int)Math.Round(avatar.AbsolutePosition.Y), 0, ((int)Constants.RegionSize - 1))); |
344 | } | 346 | } |
345 | catch (Exception) | 347 | catch (Exception) |
346 | { | 348 | { |
347 | m_log.Warn("[LAND]: " + "unable to get land at x: " + Math.Round(avatars[i].AbsolutePosition.X) + " y: " + | 349 | m_log.Warn("[LAND]: " + "unable to get land at x: " + Math.Round(avatar.AbsolutePosition.X) + " y: " + |
348 | Math.Round(avatars[i].AbsolutePosition.Y)); | 350 | Math.Round(avatar.AbsolutePosition.Y)); |
349 | } | 351 | } |
350 | 352 | ||
351 | if (over != null) | 353 | if (over != null) |
352 | { | 354 | { |
353 | if (over.LandData.LocalID == LandData.LocalID) | 355 | if (over.LandData.LocalID == LandData.LocalID) |
354 | { | 356 | { |
355 | if (((over.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0) && | 357 | if (((over.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0) && |
356 | m_scene.RegionInfo.RegionSettings.AllowDamage) | 358 | m_scene.RegionInfo.RegionSettings.AllowDamage) |
357 | avatars[i].Invulnerable = false; | 359 | avatar.Invulnerable = false; |
358 | else | 360 | else |
359 | avatars[i].Invulnerable = true; | 361 | avatar.Invulnerable = true; |
360 | 362 | ||
361 | SendLandUpdateToClient(snap_selection, avatars[i].ControllingClient); | 363 | SendLandUpdateToClient(snap_selection, avatar.ControllingClient); |
362 | } | 364 | } |
363 | } | 365 | } |
364 | } | 366 | }); |
365 | } | 367 | } |
366 | 368 | ||
367 | #endregion | 369 | #endregion |