From e3e38e34c5f58a3c466d1b651b41faf834ff5259 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 22:21:10 +0000 Subject: If a particular region is selected in the console, only try to delete objects in that region, rather than in every region on the simulator The old wrong behaviour was in place before the command was extracted to a module. --- .../World/Objects/Commands/ObjectCommandsModule.cs | 37 ++++++++++++---------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index 57c109e..42eeb6c 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -50,6 +50,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Scene m_scene; + private ICommandConsole m_console; public string Name { get { return "Object Commands Module"; } } @@ -75,36 +76,40 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands // m_log.DebugFormat("[OBJECT COMMANDS MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); m_scene = scene; - } - - public void RemoveRegion(Scene scene) - { -// m_log.DebugFormat("[OBJECTS COMMANDS MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); - } + m_console = MainConsole.Instance; - public void RegionLoaded(Scene scene) - { -// m_log.DebugFormat("[OBJECTS COMMANDS MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); - - MainConsole.Instance.Commands.AddCommand("region", false, "delete object owner", + m_console.Commands.AddCommand("region", false, "delete object owner", "delete object owner ", "Delete object by owner", HandleDeleteObject); - MainConsole.Instance.Commands.AddCommand("region", false, "delete object creator", + m_console.Commands.AddCommand("region", false, "delete object creator", "delete object creator ", "Delete object by creator", HandleDeleteObject); - MainConsole.Instance.Commands.AddCommand("region", false, "delete object uuid", + m_console.Commands.AddCommand("region", false, "delete object uuid", "delete object uuid ", "Delete object by uuid", HandleDeleteObject); - MainConsole.Instance.Commands.AddCommand("region", false, "delete object name", + m_console.Commands.AddCommand("region", false, "delete object name", "delete object name ", "Delete object by name", HandleDeleteObject); - MainConsole.Instance.Commands.AddCommand("region", false, "delete object outside", + m_console.Commands.AddCommand("region", false, "delete object outside", "delete object outside", "Delete all objects outside boundaries", HandleDeleteObject); } + public void RemoveRegion(Scene scene) + { +// m_log.DebugFormat("[OBJECTS COMMANDS MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); + } + + public void RegionLoaded(Scene scene) + { +// m_log.DebugFormat("[OBJECTS COMMANDS MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); + } + private void HandleDeleteObject(string module, string[] cmd) { + if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) + return; + if (cmd.Length < 3) return; @@ -198,7 +203,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands foreach (SceneObjectGroup g in deletes) { - MainConsole.Instance.OutputFormat("Deleting object {0}", g.UUID); + m_console.OutputFormat("Deleting object {0}", g.UUID); m_scene.DeleteSceneObject(g, false); } } -- cgit v1.1 From 77b032549ee8a12202a6aa974c6fd07761515d51 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 22:22:32 +0000 Subject: Add the name of a deleted object to the console output --- .../Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index 42eeb6c..3e0f622 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -203,7 +203,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands foreach (SceneObjectGroup g in deletes) { - m_console.OutputFormat("Deleting object {0}", g.UUID); + m_console.OutputFormat("Deleting object {0} {1}", g.UUID, g.Name); m_scene.DeleteSceneObject(g, false); } } -- cgit v1.1 From 647b326edcd5f80e31ebbff8bd6501c0919c267b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 22:27:05 +0000 Subject: Add more user feedback if an object isn't found for which delete was requested. --- .../World/Objects/Commands/ObjectCommandsModule.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index 3e0f622..78f86cc 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -140,6 +140,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); + if (deletes.Count == 0) + m_console.OutputFormat("No objects were found with owner {0}", match); + break; case "creator": @@ -152,6 +155,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); + if (deletes.Count == 0) + m_console.OutputFormat("No objects were found with creator {0}", match); + break; case "uuid": @@ -164,6 +170,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); + if (deletes.Count == 0) + m_console.OutputFormat("No objects were found with uuid {0}", match); + break; case "name": @@ -173,6 +182,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); + if (deletes.Count == 0) + m_console.OutputFormat("No objects were found with name {0}", o); + break; case "outside": @@ -198,6 +210,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); + if (deletes.Count == 0) + m_console.OutputFormat("No objects were found outside region bounds"); + break; } -- cgit v1.1 From ab89adfaefb7c2858cb2f90f783c010157d980a7 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 23:03:39 +0000 Subject: Implement "show object uuid " console command. This will show details about a part with the given uuid if it's found. --- .../World/Objects/Commands/ObjectCommandsModule.cs | 61 ++++++++++++++++++++-- 1 file changed, 56 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index 78f86cc..b378f7a 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -80,19 +80,33 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands m_console.Commands.AddCommand("region", false, "delete object owner", "delete object owner ", - "Delete object by owner", HandleDeleteObject); + "Delete a scene object by owner", HandleDeleteObject); m_console.Commands.AddCommand("region", false, "delete object creator", "delete object creator ", - "Delete object by creator", HandleDeleteObject); + "Delete a scene object by creator", HandleDeleteObject); m_console.Commands.AddCommand("region", false, "delete object uuid", "delete object uuid ", - "Delete object by uuid", HandleDeleteObject); + "Delete a scene object by uuid", HandleDeleteObject); m_console.Commands.AddCommand("region", false, "delete object name", "delete object name ", - "Delete object by name", HandleDeleteObject); + "Delete a scene object by name", HandleDeleteObject); m_console.Commands.AddCommand("region", false, "delete object outside", "delete object outside", - "Delete all objects outside boundaries", HandleDeleteObject); + "Delete all scene objects outside region boundaries", HandleDeleteObject); + + m_console.Commands.AddCommand( + "region", + false, + "show object uuid", + "show object uuid ", + "Show details of a scene object with the given UUID", HandleShowObjectByUuid); + +// m_console.Commands.AddCommand( +// "region", +// false, +// "show object name ", +// "show object name ", +// "Show details of scene objects with the given name", HandleShowObjectName); } public void RemoveRegion(Scene scene) @@ -105,6 +119,43 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands // m_log.DebugFormat("[OBJECTS COMMANDS MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); } + private void HandleShowObjectByUuid(string module, string[] cmd) + { + if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) + return; + + if (cmd.Length < 4) + { + m_console.OutputFormat("Usage: show object uuid "); + return; + } + + UUID objectUuid; + if (!UUID.TryParse(cmd[3], out objectUuid)) + { + m_console.OutputFormat("{0} is not a valid uuid", cmd[3]); + return; + } + + SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid); + + if (sop == null) + { + m_console.OutputFormat("No object found with uuid {0}", objectUuid); + return; + } + + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("Name: {0}\n", sop.Name); + sb.AppendFormat("Description: {0}\n", sop.Description); + sb.AppendFormat("Location: {0} @ {1}\n", sop.AbsolutePosition, sop.ParentGroup.Scene.RegionInfo.RegionName); + sb.AppendFormat("Parent: {0}", + sop.IsRoot ? "Is Root\n" : string.Format("{0} {1}\n", sop.ParentGroup.Name, sop.ParentGroup.UUID)); + sb.AppendFormat("Parts: {0}", sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString()); + + m_console.OutputFormat(sb.ToString()); + } + private void HandleDeleteObject(string module, string[] cmd) { if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) -- cgit v1.1 From ac7cded080ff4db606c42f81b4d1f798fe7fa624 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 23:06:48 +0000 Subject: Get rid of the "no objects found" feedback for now - this doesn't work well if a command is executed over multiple scenes. --- .../World/Objects/Commands/ObjectCommandsModule.cs | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index b378f7a..d5a3e77 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -141,7 +141,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands if (sop == null) { - m_console.OutputFormat("No object found with uuid {0}", objectUuid); +// m_console.OutputFormat("No object found with uuid {0}", objectUuid); return; } @@ -191,8 +191,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); - if (deletes.Count == 0) - m_console.OutputFormat("No objects were found with owner {0}", match); +// if (deletes.Count == 0) +// m_console.OutputFormat("No objects were found with owner {0}", match); break; @@ -206,8 +206,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); - if (deletes.Count == 0) - m_console.OutputFormat("No objects were found with creator {0}", match); +// if (deletes.Count == 0) +// m_console.OutputFormat("No objects were found with creator {0}", match); break; @@ -221,8 +221,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); - if (deletes.Count == 0) - m_console.OutputFormat("No objects were found with uuid {0}", match); +// if (deletes.Count == 0) +// m_console.OutputFormat("No objects were found with uuid {0}", match); break; @@ -233,8 +233,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); - if (deletes.Count == 0) - m_console.OutputFormat("No objects were found with name {0}", o); +// if (deletes.Count == 0) +// m_console.OutputFormat("No objects were found with name {0}", o); break; @@ -261,12 +261,14 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands deletes.Add(g); }); - if (deletes.Count == 0) - m_console.OutputFormat("No objects were found outside region bounds"); +// if (deletes.Count == 0) +// m_console.OutputFormat("No objects were found outside region bounds"); break; } + m_console.OutputFormat("Deleting {0} objects in {1}", deletes.Count, m_scene.RegionInfo.RegionName); + foreach (SceneObjectGroup g in deletes) { m_console.OutputFormat("Deleting object {0} {1}", g.UUID, g.Name); -- cgit v1.1 From 996cc6097e7d5bbccd1a0b85a1d901686037e19b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 23:21:02 +0000 Subject: Implement "show object name " console command to show details of an object with the given name --- .../World/Objects/Commands/ObjectCommandsModule.cs | 57 +++++++++++++++++++--- 1 file changed, 49 insertions(+), 8 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index d5a3e77..d1ae4dc 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -101,12 +101,12 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands "show object uuid ", "Show details of a scene object with the given UUID", HandleShowObjectByUuid); -// m_console.Commands.AddCommand( -// "region", -// false, -// "show object name ", -// "show object name ", -// "Show details of scene objects with the given name", HandleShowObjectName); + m_console.Commands.AddCommand( + "region", + false, + "show object name", + "show object name ", + "Show details of scene objects with the given name", HandleShowObjectByName); } public void RemoveRegion(Scene scene) @@ -146,14 +146,55 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands } StringBuilder sb = new StringBuilder(); + AddPartReport(sb, sop); + + m_console.OutputFormat(sb.ToString()); + } + + private void HandleShowObjectByName(string module, string[] cmd) + { + if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) + return; + + if (cmd.Length < 4) + { + m_console.OutputFormat("Usage: show object name "); + return; + } + + string name = cmd[3]; + + List parts = new List(); + + m_scene.ForEachSOG(so => so.ForEachPart(sop => { if (sop.Name == name) { parts.Add(sop); } })); + + if (parts.Count == 0) + { + m_console.OutputFormat("No parts with name {0} found in {1}", name, m_scene.RegionInfo.RegionName); + return; + } + + StringBuilder sb = new StringBuilder(); + + foreach (SceneObjectPart part in parts) + { + AddPartReport(sb, part); + sb.Append("\n"); + } + + m_console.OutputFormat(sb.ToString()); + } + + private StringBuilder AddPartReport(StringBuilder sb, SceneObjectPart sop) + { sb.AppendFormat("Name: {0}\n", sop.Name); sb.AppendFormat("Description: {0}\n", sop.Description); sb.AppendFormat("Location: {0} @ {1}\n", sop.AbsolutePosition, sop.ParentGroup.Scene.RegionInfo.RegionName); sb.AppendFormat("Parent: {0}", sop.IsRoot ? "Is Root\n" : string.Format("{0} {1}\n", sop.ParentGroup.Name, sop.ParentGroup.UUID)); - sb.AppendFormat("Parts: {0}", sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString()); + sb.AppendFormat("Parts: {0}\n", sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString());; - m_console.OutputFormat(sb.ToString()); + return sb; } private void HandleDeleteObject(string module, string[] cmd) -- cgit v1.1 From f028dca711c7ebcda32e4b035eb667455e3bc29d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 31 Jan 2012 23:35:13 +0000 Subject: Add "show part uuid" and "show part name" console commands. These commands will display part/prim details for a given uuid or name The "show object uuid" and "show object name" commands will now only display details for objects (i.e. not child parts in a linkset). This is for consistency with the "delete object" commands which only delete objects, not parts. --- .../World/Objects/Commands/ObjectCommandsModule.cs | 104 +++++++++++++++++++-- 1 file changed, 97 insertions(+), 7 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index d1ae4dc..e3d04cd 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -107,6 +107,20 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands "show object name", "show object name ", "Show details of scene objects with the given name", HandleShowObjectByName); + + m_console.Commands.AddCommand( + "region", + false, + "show part uuid", + "show part uuid ", + "Show details of a scene object parts with the given UUID", HandleShowPartByUuid); + + m_console.Commands.AddCommand( + "region", + false, + "show part name", + "show part name ", + "Show details of scene object parts with the given name", HandleShowPartByName); } public void RemoveRegion(Scene scene) @@ -137,16 +151,16 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands return; } - SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid); + SceneObjectGroup so = m_scene.GetSceneObjectGroup(objectUuid); - if (sop == null) + if (so == null) { -// m_console.OutputFormat("No object found with uuid {0}", objectUuid); +// m_console.OutputFormat("No part found with uuid {0}", objectUuid); return; } StringBuilder sb = new StringBuilder(); - AddPartReport(sb, sop); + AddSceneObjectReport(sb, so); m_console.OutputFormat(sb.ToString()); } @@ -164,6 +178,72 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands string name = cmd[3]; + List sceneObjects = new List(); + + m_scene.ForEachSOG(so => { if (so.Name == name) { sceneObjects.Add(so); }}); + + if (sceneObjects.Count == 0) + { + m_console.OutputFormat("No objects with name {0} found in {1}", name, m_scene.RegionInfo.RegionName); + return; + } + + StringBuilder sb = new StringBuilder(); + + foreach (SceneObjectGroup so in sceneObjects) + { + AddSceneObjectReport(sb, so); + sb.Append("\n"); + } + + m_console.OutputFormat(sb.ToString()); + } + + private void HandleShowPartByUuid(string module, string[] cmd) + { + if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) + return; + + if (cmd.Length < 4) + { + m_console.OutputFormat("Usage: show part uuid "); + return; + } + + UUID objectUuid; + if (!UUID.TryParse(cmd[3], out objectUuid)) + { + m_console.OutputFormat("{0} is not a valid uuid", cmd[3]); + return; + } + + SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid); + + if (sop == null) + { +// m_console.OutputFormat("No part found with uuid {0}", objectUuid); + return; + } + + StringBuilder sb = new StringBuilder(); + AddScenePartReport(sb, sop); + + m_console.OutputFormat(sb.ToString()); + } + + private void HandleShowPartByName(string module, string[] cmd) + { + if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) + return; + + if (cmd.Length < 4) + { + m_console.OutputFormat("Usage: show part name "); + return; + } + + string name = cmd[3]; + List parts = new List(); m_scene.ForEachSOG(so => so.ForEachPart(sop => { if (sop.Name == name) { parts.Add(sop); } })); @@ -178,21 +258,31 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands foreach (SceneObjectPart part in parts) { - AddPartReport(sb, part); + AddScenePartReport(sb, part); sb.Append("\n"); } m_console.OutputFormat(sb.ToString()); } - private StringBuilder AddPartReport(StringBuilder sb, SceneObjectPart sop) + private StringBuilder AddSceneObjectReport(StringBuilder sb, SceneObjectGroup so) + { + sb.AppendFormat("Name: {0}\n", so.Name); + sb.AppendFormat("Description: {0}\n", so.Description); + sb.AppendFormat("Location: {0} @ {1}\n", so.AbsolutePosition, so.Scene.RegionInfo.RegionName); + sb.AppendFormat("Parts: {0}\n", so.PrimCount); + + return sb; + } + + private StringBuilder AddScenePartReport(StringBuilder sb, SceneObjectPart sop) { sb.AppendFormat("Name: {0}\n", sop.Name); sb.AppendFormat("Description: {0}\n", sop.Description); sb.AppendFormat("Location: {0} @ {1}\n", sop.AbsolutePosition, sop.ParentGroup.Scene.RegionInfo.RegionName); sb.AppendFormat("Parent: {0}", sop.IsRoot ? "Is Root\n" : string.Format("{0} {1}\n", sop.ParentGroup.Name, sop.ParentGroup.UUID)); - sb.AppendFormat("Parts: {0}\n", sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString());; + sb.AppendFormat("Parts: {0}\n", !sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString());; return sb; } -- cgit v1.1