protected string GetWornIndicator(InventoryNode node) { var currentOutfit = client.Appearance.GetWearables(); var currentAttachments = client.Network.CurrentSim.ObjectsPrimitives.FindAll(p => p.ParentID == client.Self.LocalID); int myItemsCount = 0; int myItemsWornCount = 0; foreach (var n in node.Nodes.Values) { if (CurrentOutfitFolder.CanBeWorn(n.Data) && !n.Data.Name.StartsWith(".")) { myItemsCount++; if ((n.Data is InventoryWearable && CurrentOutfitFolder.IsWorn(currentOutfit, (InventoryItem)n.Data)) || CurrentOutfitFolder.IsAttached(currentAttachments, (InventoryItem)n.Data)) { myItemsWornCount++; } } } List <InventoryItem> allItems = new List <InventoryItem>(); foreach (var n in node.Nodes.Values) { if (n.Data is InventoryFolder && !n.Data.Name.StartsWith(".")) { AllSubfolderWearables(n, ref allItems); } } int allItemsCount = 0; int allItemsWornCount = 0; foreach (var n in allItems) { if (CurrentOutfitFolder.CanBeWorn(n) && !n.Name.StartsWith(".")) { allItemsCount++; if ((n is InventoryWearable && CurrentOutfitFolder.IsWorn(currentOutfit, n)) || CurrentOutfitFolder.IsAttached(currentAttachments, n)) { allItemsWornCount++; } } } return(WornIndicator(myItemsCount, myItemsWornCount) + WornIndicator(allItemsCount, allItemsWornCount)); }