diff options
Diffstat (limited to 'OpenSim/Region/Environment/Modules')
-rw-r--r-- | OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs index d3aa4aa..ab5898d 100644 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs | |||
@@ -313,12 +313,21 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
313 | } | 313 | } |
314 | private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) | 314 | private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) |
315 | { | 315 | { |
316 | Dictionary<uint, float> colliders = m_scene.PhysicsScene.GetTopColliders(); | 316 | Dictionary<uint, float> SceneData = new Dictionary<uint,float>(); |
317 | 317 | ||
318 | List<LandStatReportItem> collidera = new List<LandStatReportItem>(); | 318 | if (reportType == 1) |
319 | lock (colliders) | 319 | { |
320 | SceneData = m_scene.PhysicsScene.GetTopColliders(); | ||
321 | } | ||
322 | else if (reportType == 0) | ||
320 | { | 323 | { |
321 | foreach (uint obj in colliders.Keys) | 324 | SceneData = m_scene.m_innerScene.GetTopScripts(); |
325 | } | ||
326 | |||
327 | List<LandStatReportItem> SceneReport = new List<LandStatReportItem>(); | ||
328 | lock (SceneData) | ||
329 | { | ||
330 | foreach (uint obj in SceneData.Keys) | ||
322 | { | 331 | { |
323 | SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); | 332 | SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); |
324 | if (prt != null) | 333 | if (prt != null) |
@@ -332,21 +341,30 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
332 | lsri.LocationX = sog.AbsolutePosition.X; | 341 | lsri.LocationX = sog.AbsolutePosition.X; |
333 | lsri.LocationY = sog.AbsolutePosition.Y; | 342 | lsri.LocationY = sog.AbsolutePosition.Y; |
334 | lsri.LocationZ = sog.AbsolutePosition.Z; | 343 | lsri.LocationZ = sog.AbsolutePosition.Z; |
335 | lsri.Score = colliders[obj]; | 344 | lsri.Score = SceneData[obj]; |
336 | lsri.TaskID = sog.UUID; | 345 | lsri.TaskID = sog.UUID; |
337 | lsri.TaskLocalID = sog.LocalId; | 346 | lsri.TaskLocalID = sog.LocalId; |
338 | lsri.TaskName = sog.GetPartName(obj); | 347 | lsri.TaskName = sog.GetPartName(obj); |
339 | lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); | 348 | lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); |
340 | 349 | if (filter.Length != 0) | |
350 | { | ||
351 | if ((lsri.OwnerName.Contains(filter) || lsri.TaskName.Contains(filter))) | ||
352 | { | ||
353 | } | ||
354 | else | ||
355 | { | ||
356 | continue; | ||
357 | } | ||
358 | } | ||
341 | 359 | ||
342 | collidera.Add(lsri); | 360 | SceneReport.Add(lsri); |
343 | } | 361 | } |
344 | } | 362 | } |
345 | } | 363 | } |
346 | 364 | ||
347 | } | 365 | } |
348 | } | 366 | } |
349 | remoteClient.SendLandStatReply(reportType, requestFlags, (uint)collidera.Count,collidera.ToArray()); | 367 | remoteClient.SendLandStatReply(reportType, requestFlags, (uint)SceneReport.Count,SceneReport.ToArray()); |
350 | 368 | ||
351 | } | 369 | } |
352 | 370 | ||