diff --git a/SkinHide/SkinHidePlugin.cs b/SkinHide/SkinHidePlugin.cs index 446e4c9..ecec87d 100644 --- a/SkinHide/SkinHidePlugin.cs +++ b/SkinHide/SkinHidePlugin.cs @@ -8,6 +8,7 @@ using EFT.Visual; using SkinHide.Patches; using SkinHide.Utils; using System; +using EFT.UI.DragAndDrop; namespace SkinHide { @@ -60,6 +61,7 @@ namespace SkinHide reflectiondata.RefSlotViews = RefHelp.FieldRef.Create("SlotViews"); reflectiondata.RefSlotList = RefHelp.FieldRef>.Create(reflectiondata.RefSlotViews.FieldType, "list_0"); reflectiondata.RefDresses = RefHelp.FieldRef.Create(reflectiondata.RefSlotList.FieldType.GetGenericArguments()[0], "Dresses"); + reflectiondata.RefRenderers = RefHelp.FieldRef.Create("Renderers"); } void Update() @@ -135,11 +137,24 @@ namespace SkinHide IEnumerable slotlist = reflectiondata.RefSlotList.GetValue(slotviews); - IEnumerable dresses = slotlist.Where(x => reflectiondata.RefDresses.GetValue(x) != null).SelectMany(x => reflectiondata.RefDresses.GetValue(x)); + List dresses = new List(); - IEnumerable dress = dresses.Where(x => x.GetType() == typeof(Dress)).Select(x => x.gameObject); + foreach (object slot in slotlist) + { + Dress[] dres = reflectiondata.RefDresses.GetValue(slot); - IEnumerable renderers = dress.SelectMany(x => x.GetComponentsInChildren()); + if (dres != null) + { + foreach (Dress dr in dres) + { + dresses.Add(dr); + } + } + } + + IEnumerable dress = dresses.Where(x => x.GetType() == typeof(Dress)); + + IEnumerable renderers = dress.SelectMany(x => reflectiondata.RefRenderers.GetValue(x)); IEnumerable skindress = dresses.Where(x => x.GetType() == typeof(SkinDress) || x.GetType() == typeof(ArmBandView)).Select(x => x.gameObject); @@ -188,6 +203,7 @@ namespace SkinHide public RefHelp.FieldRef RefSlotViews; public RefHelp.FieldRef> RefSlotList; public RefHelp.FieldRef RefDresses; + public RefHelp.FieldRef RefRenderers; } } } \ No newline at end of file