diff options
author | Snoopy Pfeffer | 2011-08-15 17:46:51 +0200 |
---|---|---|
committer | Snoopy Pfeffer | 2011-08-15 17:46:51 +0200 |
commit | 9a6ad1535e83a4d1b216ae879173ab8c524da60b (patch) | |
tree | bcdba14d476b77d9326e274c9be921a8d032804b /OpenSim/Region/Framework/Scenes/Scene.cs | |
parent | Added optional Login Service parameter "Currency" to be able to change the cu... (diff) | |
download | opensim-SC_OLD-9a6ad1535e83a4d1b216ae879173ab8c524da60b.zip opensim-SC_OLD-9a6ad1535e83a4d1b216ae879173ab8c524da60b.tar.gz opensim-SC_OLD-9a6ad1535e83a4d1b216ae879173ab8c524da60b.tar.bz2 opensim-SC_OLD-9a6ad1535e83a4d1b216ae879173ab8c524da60b.tar.xz |
Added console command "delete object outside" to delete all objects outside region boundaries. This is especiyll useful in cases where physical objects outside regions boundaries cause much physics engine lag.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9aa9bf5..13b4cbc 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -611,6 +611,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
611 | "delete object name <name>", | 611 | "delete object name <name>", |
612 | "Delete object by name", HandleDeleteObject); | 612 | "Delete object by name", HandleDeleteObject); |
613 | 613 | ||
614 | MainConsole.Instance.Commands.AddCommand("region", false, "delete object outside", | ||
615 | "delete object outside", | ||
616 | "Delete all objects outside boundaries", HandleDeleteObject); | ||
617 | |||
614 | //Bind Storage Manager functions to some land manager functions for this scene | 618 | //Bind Storage Manager functions to some land manager functions for this scene |
615 | EventManager.OnLandObjectAdded += | 619 | EventManager.OnLandObjectAdded += |
616 | new EventManager.LandObjectAdded(simDataService.StoreLandObject); | 620 | new EventManager.LandObjectAdded(simDataService.StoreLandObject); |
@@ -4941,11 +4945,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
4941 | 4945 | ||
4942 | private void HandleDeleteObject(string module, string[] cmd) | 4946 | private void HandleDeleteObject(string module, string[] cmd) |
4943 | { | 4947 | { |
4944 | if (cmd.Length < 4) | 4948 | if (cmd.Length < 3) |
4945 | return; | 4949 | return; |
4946 | 4950 | ||
4947 | string mode = cmd[2]; | 4951 | string mode = cmd[2]; |
4948 | string o = cmd[3]; | 4952 | string o = ""; |
4953 | |||
4954 | if (mode != "outside") | ||
4955 | { | ||
4956 | if (cmd.Length < 4) | ||
4957 | return; | ||
4958 | |||
4959 | o = cmd[3]; | ||
4960 | } | ||
4949 | 4961 | ||
4950 | List<SceneObjectGroup> deletes = new List<SceneObjectGroup>(); | 4962 | List<SceneObjectGroup> deletes = new List<SceneObjectGroup>(); |
4951 | 4963 | ||
@@ -4987,10 +4999,33 @@ namespace OpenSim.Region.Framework.Scenes | |||
4987 | deletes.Add(g); | 4999 | deletes.Add(g); |
4988 | }); | 5000 | }); |
4989 | break; | 5001 | break; |
5002 | case "outside": | ||
5003 | ForEachSOG(delegate (SceneObjectGroup g) | ||
5004 | { | ||
5005 | SceneObjectPart rootPart = g.RootPart; | ||
5006 | bool delete = false; | ||
5007 | |||
5008 | if (rootPart.GroupPosition.Z < 0.0 || rootPart.GroupPosition.Z > 10000.0) | ||
5009 | { | ||
5010 | delete = true; | ||
5011 | } else { | ||
5012 | ILandObject parcel = LandChannel.GetLandObject(rootPart.GroupPosition.X, rootPart.GroupPosition.Y); | ||
5013 | |||
5014 | if (parcel == null || parcel.LandData.Name == "NO LAND") | ||
5015 | delete = true; | ||
5016 | } | ||
5017 | |||
5018 | if (delete && !rootPart.IsAttachment && !deletes.Contains(g)) | ||
5019 | deletes.Add(g); | ||
5020 | }); | ||
5021 | break; | ||
4990 | } | 5022 | } |
4991 | 5023 | ||
4992 | foreach (SceneObjectGroup g in deletes) | 5024 | foreach (SceneObjectGroup g in deletes) |
5025 | { | ||
5026 | m_log.InfoFormat("[SCENE]: Deleting object {0}", g.UUID); | ||
4993 | DeleteSceneObject(g, false); | 5027 | DeleteSceneObject(g, false); |
5028 | } | ||
4994 | } | 5029 | } |
4995 | 5030 | ||
4996 | private void HandleReloadEstate(string module, string[] cmd) | 5031 | private void HandleReloadEstate(string module, string[] cmd) |