This commit is contained in:
kmyuhkyuk 2022-10-15 15:53:31 +08:00
parent b86f5edf5d
commit 4c5f9b4998

View File

@ -8,6 +8,7 @@ using EFT.Visual;
using SkinHide.Patches; using SkinHide.Patches;
using SkinHide.Utils; using SkinHide.Utils;
using System; using System;
using EFT.UI.DragAndDrop;
namespace SkinHide namespace SkinHide
{ {
@ -60,6 +61,7 @@ namespace SkinHide
reflectiondata.RefSlotViews = RefHelp.FieldRef<PlayerBody, object>.Create("SlotViews"); reflectiondata.RefSlotViews = RefHelp.FieldRef<PlayerBody, object>.Create("SlotViews");
reflectiondata.RefSlotList = RefHelp.FieldRef<object, IEnumerable<object>>.Create(reflectiondata.RefSlotViews.FieldType, "list_0"); reflectiondata.RefSlotList = RefHelp.FieldRef<object, IEnumerable<object>>.Create(reflectiondata.RefSlotViews.FieldType, "list_0");
reflectiondata.RefDresses = RefHelp.FieldRef<object, Dress[]>.Create(reflectiondata.RefSlotList.FieldType.GetGenericArguments()[0], "Dresses"); reflectiondata.RefDresses = RefHelp.FieldRef<object, Dress[]>.Create(reflectiondata.RefSlotList.FieldType.GetGenericArguments()[0], "Dresses");
reflectiondata.RefRenderers = RefHelp.FieldRef<Dress, Renderer[]>.Create("Renderers");
} }
void Update() void Update()
@ -135,11 +137,24 @@ namespace SkinHide
IEnumerable<object> slotlist = reflectiondata.RefSlotList.GetValue(slotviews); IEnumerable<object> slotlist = reflectiondata.RefSlotList.GetValue(slotviews);
IEnumerable<Dress> dresses = slotlist.Where(x => reflectiondata.RefDresses.GetValue(x) != null).SelectMany(x => reflectiondata.RefDresses.GetValue(x)); List<Dress> dresses = new List<Dress>();
IEnumerable<GameObject> dress = dresses.Where(x => x.GetType() == typeof(Dress)).Select(x => x.gameObject); foreach (object slot in slotlist)
{
Dress[] dres = reflectiondata.RefDresses.GetValue(slot);
IEnumerable<MeshRenderer> renderers = dress.SelectMany(x => x.GetComponentsInChildren<MeshRenderer>()); if (dres != null)
{
foreach (Dress dr in dres)
{
dresses.Add(dr);
}
}
}
IEnumerable<Dress> dress = dresses.Where(x => x.GetType() == typeof(Dress));
IEnumerable<Renderer> renderers = dress.SelectMany(x => reflectiondata.RefRenderers.GetValue(x));
IEnumerable<GameObject> skindress = dresses.Where(x => x.GetType() == typeof(SkinDress) || x.GetType() == typeof(ArmBandView)).Select(x => x.gameObject); IEnumerable<GameObject> 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<PlayerBody, object> RefSlotViews; public RefHelp.FieldRef<PlayerBody, object> RefSlotViews;
public RefHelp.FieldRef<object, IEnumerable<object>> RefSlotList; public RefHelp.FieldRef<object, IEnumerable<object>> RefSlotList;
public RefHelp.FieldRef<object, Dress[]> RefDresses; public RefHelp.FieldRef<object, Dress[]> RefDresses;
public RefHelp.FieldRef<Dress, Renderer[]> RefRenderers;
} }
} }
} }