static void Prefix(ActorEquip __instance, string[] ___nudeAppearUnits, string[] ___equipAppearUnits, GameObject clothRoot, bool showHat, AppearData ___appearData, string ___tattooPath) { return; List <AppearUnit> list = new List <AppearUnit>(); AppearUnit tattooTarget = null; for (int i = 0; i < 5; i++) { if (___nudeAppearUnits.Length > i && ___nudeAppearUnits[i] != null) { AppearUnit appearUnit = null; if (i < ___equipAppearUnits.Length && !string.IsNullOrEmpty(___equipAppearUnits[i]) && ((showHat && Singleton <OptionsMgr> .Self.ShowHat) || i != 1)) { AppearUnit appearUnit2 = Singleton <ResMgr> .Instance.LoadSyncByType <AppearUnit>(AssetType.Appear, ___equipAppearUnits[i]); if (appearUnit2 != null) { appearUnit = appearUnit2; } } else { appearUnit = Singleton <ResMgr> .Instance.LoadSyncByType <AppearUnit>(AssetType.Appear, ___nudeAppearUnits[i]); } if (appearUnit != null) { list.Add(appearUnit); if (i == 0) { tattooTarget = appearUnit; } } } } if (clothRoot == null) { clothRoot = __instance.ClothRoot; } AppearTarget.Instance.SetRoot(clothRoot); AppearTarget.Instance.BuildMesh(list, ___appearData, tattooTarget, ___tattooPath); MethodInfo dynMethod = __instance.GetType().GetMethod("ApplyDyboneConfigs", BindingFlags.NonPublic | BindingFlags.Instance); dynMethod.Invoke(__instance, new object[] { AppearTarget.Instance.BoneDic }); }
static void Postfix(Player __instance) { if (!enabled) { return; } string[] array = new string[5]; for (int i = 0; i < array.Length; i++) { AppearPartEnum part = (AppearPartEnum)i; ActorEquip.EEquipSlot eequipSlot = ActorEquip.AppaerPartEnumToEEquipSlot(part); if (eequipSlot != ActorEquip.EEquipSlot.Max) { array[i] = __instance.GetInfo(__instance.bag.EquipSlot.GetItemEquipmentCmpt(eequipSlot)); } } Dbgl($"updating appearances"); Actor emily = ActorMgr.Self.Get(4000003); Actor alice = ActorMgr.Self.Get(4000050); emily.gameObject.AddComponent <ActorEquip>(); alice.gameObject.AddComponent <ActorEquip>(); ActorMgr.Self.Get(4000003).SetEquipInfo(array); ActorMgr.Self.Get(4000050).SetEquipInfo(array); AccessTools.FieldRefAccess <ActorEquip, string[]>(emily.GetComponent <ActorEquip>(), "nudeAppearUnits") = Module <Player> .Self.actor.GetComponent <ActorEquip>().GetCurrentNudeAppearsPath(); AccessTools.FieldRefAccess <ActorEquip, string[]>(emily.GetComponent <ActorEquip>(), "equipAppearUnits") = Module <Player> .Self.actor.GetComponent <ActorEquip>().GetCurrentNudeAppearsPath(); AccessTools.FieldRefAccess <ActorEquip, string[]>(alice.GetComponent <ActorEquip>(), "nudeAppearUnits") = Module <Player> .Self.actor.GetComponent <ActorEquip>().GetCurrentNudeAppearsPath(); AccessTools.FieldRefAccess <ActorEquip, string[]>(alice.GetComponent <ActorEquip>(), "equipAppearUnits") = Module <Player> .Self.actor.GetComponent <ActorEquip>().GetCurrentNudeAppearsPath(); emily.ApplyCloth(true); alice.ApplyCloth(true); }
static bool Prefix(ref SkinnedMeshRenderer __result, ref ActorEquip __instance, string[] ___nudeAppearUnits, string[] ___equipAppearUnits, ref AppearData ___appearData, ref string ___tattooPath, GameObject clothRoot = null, bool showHat = true) { List <AppearUnit> list = new List <AppearUnit>(); AppearUnit tattooTarget = null; for (int i = 0; i < 5; i++) { if (___nudeAppearUnits.Length > i && ___nudeAppearUnits[i] != null) { AppearUnit appearUnit = null; if (i < ___equipAppearUnits.Length && !string.IsNullOrEmpty(___equipAppearUnits[i]) && ((showHat && Singleton <OptionsMgr> .Self.ShowHat) || i != 1)) { AppearUnit appearUnit2 = Singleton <ResMgr> .Instance.LoadSyncByType <AppearUnit>(AssetType.Appear, ___equipAppearUnits[i]); if (appearUnit2 != null) { Dbgl("ActorEquip path: " + ___equipAppearUnits[i]); foreach (string key in customClothes.Keys) { if (___equipAppearUnits[i].EndsWith(key)) { appearUnit2.Smr.material.SetTexture("_MainTex", customClothes[key]); } } appearUnit = appearUnit2; } } else { appearUnit = Singleton <ResMgr> .Instance.LoadSyncByType <AppearUnit>(AssetType.Appear, ___nudeAppearUnits[i]); } if (appearUnit != null) { list.Add(appearUnit); if (i == 0) { tattooTarget = appearUnit; } } } } if (clothRoot == null) { clothRoot = __instance.ClothRoot; } AppearTarget.Instance.SetRoot(clothRoot); SkinnedMeshRenderer result = AppearTarget.Instance.BuildMesh(list, ___appearData, tattooTarget, ___tattooPath); MethodInfo dynMethod = __instance.GetType() .GetMethod("ApplyDyboneConfigs", BindingFlags.NonPublic | BindingFlags.Instance); dynMethod.Invoke(__instance, new object[] { AppearTarget.Instance.BoneDic }); __result = result; return(false); }