Add "wearables show" console command.
This shows summary wearables information (shape, hair, etc.) for all avatars in the scene or specific information about a given avatar's wearables. Similar to the existing "attachments show" command.ghosts
							parent
							
								
									1c12930c03
								
							
						
					
					
						commit
						cc23d4bac5
					
				|  | @ -102,7 +102,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
|             scene.AddCommand( | ||||
|                 "Users", this, "appearance show", | ||||
|                 "appearance show [<first-name> <last-name>]", | ||||
|                 "Show appearance information for each avatar in the simulator.", | ||||
|                 "Show appearance information for avatars.", | ||||
|                 "This command checks whether the simulator has all the baked textures required to display an avatar to other viewers.  " | ||||
|                     + "\nIf not, then appearance is 'corrupt' and other avatars will continue to see it as a cloud." | ||||
|                     + "\nOptionally, you can view just a particular avatar's appearance information." | ||||
|  | @ -132,6 +132,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
|                 "Find out which avatar uses the given asset as a baked texture, if any.", | ||||
|                 "You can specify just the beginning of the uuid, e.g. 2008a8d.  A longer UUID must be in dashed format.", | ||||
|                 HandleFindAppearanceCommand); | ||||
| 
 | ||||
|             scene.AddCommand( | ||||
|                 "Users", this, "wearables show", | ||||
|                 "wearables show [<first-name> <last-name>]", | ||||
|                 "Show information about wearables for avatars.", | ||||
|                 "If no avatar name is given then a general summary for all avatars in the scene is shown.\n" | ||||
|                 + "If an avatar name is given then specific information about current wearables is shown.", | ||||
|                 HandleShowWearablesCommand); | ||||
|         } | ||||
| 
 | ||||
|         private void HandleSendAppearanceCommand(string module, string[] cmd) | ||||
|  | @ -186,7 +194,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         protected void HandleShowAppearanceCommand(string module, string[] cmd) | ||||
|         private void HandleShowAppearanceCommand(string module, string[] cmd) | ||||
|         { | ||||
|             if (cmd.Length != 2 && cmd.Length < 4) | ||||
|             { | ||||
|  | @ -263,7 +271,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         protected void HandleFindAppearanceCommand(string module, string[] cmd) | ||||
|         private void HandleFindAppearanceCommand(string module, string[] cmd) | ||||
|         { | ||||
|             if (cmd.Length != 3) | ||||
|             { | ||||
|  | @ -304,5 +312,91 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
|                     string.Join(", ", matchedAvatars.ToList().ConvertAll<string>(sp => sp.Name).ToArray())); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         protected void HandleShowWearablesCommand(string module, string[] cmd) | ||||
|         { | ||||
|             if (cmd.Length != 2 && cmd.Length < 4) | ||||
|             { | ||||
|                 MainConsole.Instance.OutputFormat("Usage: wearables show [<first-name> <last-name>]"); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             bool targetNameSupplied = false; | ||||
|             string optionalTargetFirstName = null; | ||||
|             string optionalTargetLastName = null; | ||||
| 
 | ||||
|             if (cmd.Length >= 4) | ||||
|             { | ||||
|                 targetNameSupplied = true; | ||||
|                 optionalTargetFirstName = cmd[2]; | ||||
|                 optionalTargetLastName = cmd[3]; | ||||
|             } | ||||
| 
 | ||||
|             StringBuilder sb = new StringBuilder(); | ||||
| 
 | ||||
|             if (targetNameSupplied) | ||||
|             { | ||||
|                 lock (m_scenes)    | ||||
|                 { | ||||
|                     foreach (Scene scene in m_scenes.Values) | ||||
|                     { | ||||
|                         ScenePresence sp = scene.GetScenePresence(optionalTargetFirstName, optionalTargetLastName); | ||||
|                         if (sp != null && !sp.IsChildAgent) | ||||
|                             AppendWearablesDetailReport(sp, sb); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 ConsoleDisplayTable cdt = new ConsoleDisplayTable(); | ||||
|                 cdt.AddColumn("Name", ConsoleDisplayUtil.UserNameSize); | ||||
|                 cdt.AddColumn("Wearables", 2); | ||||
| 
 | ||||
|                 lock (m_scenes)    | ||||
|                 { | ||||
|                     foreach (Scene scene in m_scenes.Values) | ||||
|                     { | ||||
|                         scene.ForEachRootScenePresence( | ||||
|                             sp =>  | ||||
|                             { | ||||
|                                 int count = 0; | ||||
| 
 | ||||
|                                 for (int i = (int)WearableType.Shape; i < (int)WearableType.Physics; i++) | ||||
|                                     count += sp.Appearance.Wearables[i].Count; | ||||
| 
 | ||||
|                                 cdt.AddRow(sp.Name, count); | ||||
|                             } | ||||
|                         ); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 sb.Append(cdt.ToString()); | ||||
|             } | ||||
| 
 | ||||
|             MainConsole.Instance.Output(sb.ToString()); | ||||
|         } | ||||
| 
 | ||||
|         private void AppendWearablesDetailReport(ScenePresence sp, StringBuilder sb) | ||||
|         { | ||||
|             sb.AppendFormat("\nWearables for {0}\n", sp.Name); | ||||
| 
 | ||||
|             ConsoleDisplayTable cdt = new ConsoleDisplayTable(); | ||||
|             cdt.AddColumn("Type", 10); | ||||
|             cdt.AddColumn("Item UUID", ConsoleDisplayUtil.UuidSize); | ||||
|             cdt.AddColumn("Asset UUID", ConsoleDisplayUtil.UuidSize); | ||||
| 
 | ||||
|             for (int i = (int)WearableType.Shape; i < (int)WearableType.Physics; i++) | ||||
|             { | ||||
|                 AvatarWearable aw = sp.Appearance.Wearables[i]; | ||||
| 
 | ||||
|                 for (int j = 0; j < aw.Count; j++) | ||||
|                 { | ||||
|                     WearableItem wi = aw[j]; | ||||
|                     cdt.AddRow(Enum.GetName(typeof(WearableType), i), wi.ItemID, wi.AssetID); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             sb.Append(cdt.ToString()); | ||||
|         } | ||||
|     } | ||||
| } | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)