From d9a8f5f16d1d91042ec0a891f8c0f0a542387758 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 31 Jan 2012 23:03:39 +0000 Subject: [PATCH] Implement "show object uuid " console command. This will show details about a part with the given uuid if it's found. --- .../Objects/Commands/ObjectCommandsModule.cs | 61 +++++++++++++++++-- .../Framework/Scenes/SceneObjectGroup.cs | 6 ++ 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index 78f86ccb85..b378f7a5cd 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)) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 750423deb4..41daaad13d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -264,6 +264,12 @@ namespace OpenSim.Region.Framework.Scenes set { RootPart.Name = value; } } + public string Description + { + get { return RootPart.Description; } + set { RootPart.Description = value; } + } + /// /// Added because the Parcel code seems to use it /// but not sure a object should have this