From c20f7d6171a9df151c3ccde063336338da9ae322 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 25 May 2008 20:50:45 +0000 Subject: * A hacky Top Scripts display. It isn't accurate as far as ms accounting, however you can use it to help find out what scripts are causing your simulator to cry. * Access it from the Estate tools/Debug tab. --- .../Modules/World/Estate/EstateManagementModule.cs | 36 ++++++++++++++++------ 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/World/Estate') 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 } private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) { - Dictionary colliders = m_scene.PhysicsScene.GetTopColliders(); - - List collidera = new List(); - lock (colliders) + Dictionary SceneData = new Dictionary(); + + if (reportType == 1) + { + SceneData = m_scene.PhysicsScene.GetTopColliders(); + } + else if (reportType == 0) { - foreach (uint obj in colliders.Keys) + SceneData = m_scene.m_innerScene.GetTopScripts(); + } + + List SceneReport = new List(); + lock (SceneData) + { + foreach (uint obj in SceneData.Keys) { SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); if (prt != null) @@ -332,21 +341,30 @@ namespace OpenSim.Region.Environment.Modules.World.Estate lsri.LocationX = sog.AbsolutePosition.X; lsri.LocationY = sog.AbsolutePosition.Y; lsri.LocationZ = sog.AbsolutePosition.Z; - lsri.Score = colliders[obj]; + lsri.Score = SceneData[obj]; lsri.TaskID = sog.UUID; lsri.TaskLocalID = sog.LocalId; lsri.TaskName = sog.GetPartName(obj); lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); - + if (filter.Length != 0) + { + if ((lsri.OwnerName.Contains(filter) || lsri.TaskName.Contains(filter))) + { + } + else + { + continue; + } + } - collidera.Add(lsri); + SceneReport.Add(lsri); } } } } } - remoteClient.SendLandStatReply(reportType, requestFlags, (uint)collidera.Count,collidera.ToArray()); + remoteClient.SendLandStatReply(reportType, requestFlags, (uint)SceneReport.Count,SceneReport.ToArray()); } -- cgit v1.1