aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs104
1 files changed, 97 insertions, 7 deletions
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
107 "show object name", 107 "show object name",
108 "show object name <name>", 108 "show object name <name>",
109 "Show details of scene objects with the given name", HandleShowObjectByName); 109 "Show details of scene objects with the given name", HandleShowObjectByName);
110
111 m_console.Commands.AddCommand(
112 "region",
113 false,
114 "show part uuid",
115 "show part uuid <UUID>",
116 "Show details of a scene object parts with the given UUID", HandleShowPartByUuid);
117
118 m_console.Commands.AddCommand(
119 "region",
120 false,
121 "show part name",
122 "show part name <name>",
123 "Show details of scene object parts with the given name", HandleShowPartByName);
110 } 124 }
111 125
112 public void RemoveRegion(Scene scene) 126 public void RemoveRegion(Scene scene)
@@ -137,16 +151,16 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
137 return; 151 return;
138 } 152 }
139 153
140 SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid); 154 SceneObjectGroup so = m_scene.GetSceneObjectGroup(objectUuid);
141 155
142 if (sop == null) 156 if (so == null)
143 { 157 {
144// m_console.OutputFormat("No object found with uuid {0}", objectUuid); 158// m_console.OutputFormat("No part found with uuid {0}", objectUuid);
145 return; 159 return;
146 } 160 }
147 161
148 StringBuilder sb = new StringBuilder(); 162 StringBuilder sb = new StringBuilder();
149 AddPartReport(sb, sop); 163 AddSceneObjectReport(sb, so);
150 164
151 m_console.OutputFormat(sb.ToString()); 165 m_console.OutputFormat(sb.ToString());
152 } 166 }
@@ -164,6 +178,72 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
164 178
165 string name = cmd[3]; 179 string name = cmd[3];
166 180
181 List<SceneObjectGroup> sceneObjects = new List<SceneObjectGroup>();
182
183 m_scene.ForEachSOG(so => { if (so.Name == name) { sceneObjects.Add(so); }});
184
185 if (sceneObjects.Count == 0)
186 {
187 m_console.OutputFormat("No objects with name {0} found in {1}", name, m_scene.RegionInfo.RegionName);
188 return;
189 }
190
191 StringBuilder sb = new StringBuilder();
192
193 foreach (SceneObjectGroup so in sceneObjects)
194 {
195 AddSceneObjectReport(sb, so);
196 sb.Append("\n");
197 }
198
199 m_console.OutputFormat(sb.ToString());
200 }
201
202 private void HandleShowPartByUuid(string module, string[] cmd)
203 {
204 if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene))
205 return;
206
207 if (cmd.Length < 4)
208 {
209 m_console.OutputFormat("Usage: show part uuid <uuid>");
210 return;
211 }
212
213 UUID objectUuid;
214 if (!UUID.TryParse(cmd[3], out objectUuid))
215 {
216 m_console.OutputFormat("{0} is not a valid uuid", cmd[3]);
217 return;
218 }
219
220 SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid);
221
222 if (sop == null)
223 {
224// m_console.OutputFormat("No part found with uuid {0}", objectUuid);
225 return;
226 }
227
228 StringBuilder sb = new StringBuilder();
229 AddScenePartReport(sb, sop);
230
231 m_console.OutputFormat(sb.ToString());
232 }
233
234 private void HandleShowPartByName(string module, string[] cmd)
235 {
236 if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene))
237 return;
238
239 if (cmd.Length < 4)
240 {
241 m_console.OutputFormat("Usage: show part name <name>");
242 return;
243 }
244
245 string name = cmd[3];
246
167 List<SceneObjectPart> parts = new List<SceneObjectPart>(); 247 List<SceneObjectPart> parts = new List<SceneObjectPart>();
168 248
169 m_scene.ForEachSOG(so => so.ForEachPart(sop => { if (sop.Name == name) { parts.Add(sop); } })); 249 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
178 258
179 foreach (SceneObjectPart part in parts) 259 foreach (SceneObjectPart part in parts)
180 { 260 {
181 AddPartReport(sb, part); 261 AddScenePartReport(sb, part);
182 sb.Append("\n"); 262 sb.Append("\n");
183 } 263 }
184 264
185 m_console.OutputFormat(sb.ToString()); 265 m_console.OutputFormat(sb.ToString());
186 } 266 }
187 267
188 private StringBuilder AddPartReport(StringBuilder sb, SceneObjectPart sop) 268 private StringBuilder AddSceneObjectReport(StringBuilder sb, SceneObjectGroup so)
269 {
270 sb.AppendFormat("Name: {0}\n", so.Name);
271 sb.AppendFormat("Description: {0}\n", so.Description);
272 sb.AppendFormat("Location: {0} @ {1}\n", so.AbsolutePosition, so.Scene.RegionInfo.RegionName);
273 sb.AppendFormat("Parts: {0}\n", so.PrimCount);
274
275 return sb;
276 }
277
278 private StringBuilder AddScenePartReport(StringBuilder sb, SceneObjectPart sop)
189 { 279 {
190 sb.AppendFormat("Name: {0}\n", sop.Name); 280 sb.AppendFormat("Name: {0}\n", sop.Name);
191 sb.AppendFormat("Description: {0}\n", sop.Description); 281 sb.AppendFormat("Description: {0}\n", sop.Description);
192 sb.AppendFormat("Location: {0} @ {1}\n", sop.AbsolutePosition, sop.ParentGroup.Scene.RegionInfo.RegionName); 282 sb.AppendFormat("Location: {0} @ {1}\n", sop.AbsolutePosition, sop.ParentGroup.Scene.RegionInfo.RegionName);
193 sb.AppendFormat("Parent: {0}", 283 sb.AppendFormat("Parent: {0}",
194 sop.IsRoot ? "Is Root\n" : string.Format("{0} {1}\n", sop.ParentGroup.Name, sop.ParentGroup.UUID)); 284 sop.IsRoot ? "Is Root\n" : string.Format("{0} {1}\n", sop.ParentGroup.Name, sop.ParentGroup.UUID));
195 sb.AppendFormat("Parts: {0}\n", sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString());; 285 sb.AppendFormat("Parts: {0}\n", !sop.IsRoot ? "1" : sop.ParentGroup.PrimCount.ToString());;
196 286
197 return sb; 287 return sb;
198 } 288 }