public static void CreateReferenceInfoPostfix(ChaReference __instance, ulong flags, GameObject objRef) { if (flags >= 1UL && flags <= 15UL && (int)(flags - 1UL) == 2) { Dictionary <ChaReference.RefObjKey, GameObject> dictRefObj = __instance.GetField("dictRefObj").ToDictionary <ChaReference.RefObjKey, GameObject>(); /* cf_o_root * └ n_silhouetteTop (SimpleTop) * └ n_body_silhouette * └ n_tang_silhouette */ GameObject SimpleTop = CreateSilhouetteGameObjects(); SimpleTop.transform.SetParent(objRef.FindChild("cf_o_root").transform); editDict(ChaReference.RefObjKey.S_SimpleTop, SimpleTop); editDict(ChaReference.RefObjKey.S_SimpleBody, SimpleTop.FindChild("n_body_silhouette")); editDict(ChaReference.RefObjKey.S_SimpleTongue, SimpleTop.FindChild("n_tang_silhouette")); void editDict(ChaReference.RefObjKey key, GameObject newGO) { if (dictRefObj.TryGetValue(key, out GameObject oldGO) && null != oldGO) { GameObject.Destroy(oldGO); } dictRefObj[key] = newGO; } __instance.SetField("dictRefObj", dictRefObj); } }
public static void CreateReferenceInfoHook(ChaReference __instance, ulong flags, GameObject objRef) { if (null == objRef || (int)(flags - 1UL) != 0) { return; } CreateReferenceImpl(__instance, objRef); }
private static void ChaReference_CreateReferenceInfo_Postfix(ChaReference __instance, ulong flags, GameObject objRef) { if (null == objRef || (int)(flags - 1UL) != 0) { return; } CreateReferenceImpl(__instance, objRef); }
private static void ChaReference_ReleaseRefObject_Postfix(ChaReference __instance, ulong flags) { if ((int)(flags - 1UL) != 0) { return; } for (int i = 0; i < AccessoryParentKey.Count; i++) { __instance.dictRefObj.Remove((ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)); } }
public static void ReleaseRefObjectHook(ChaReference __instance, ulong flags) { if ((int)(flags - 1UL) != 0) { return; } var dict = (Dictionary <ChaReference.RefObjKey, GameObject>)AccessTools.Field(typeof(ChaReference), "dictRefObj").GetValue(__instance); for (var i = 0; i < InterfaceEntries.AllBones.Length; i++) { dict.Remove((ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)); } }
public static void ReleaseRefObjectHook(ChaReference __instance, ulong flags) { if ((int)(flags - 1UL) != 0) { return; } var dict = __instance.dictRefObj; for (var i = 0; i < InterfaceEntries.AllBones.Length; i++) { dict.Remove((ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)); } }
public static void CreateReferenceInfoHook(ChaReference __instance, ulong flags, ChaLoad.ChaPreparationBodyBone.BoneInfo[] boneInfos) { if (null == boneInfos || (int)(flags - 1UL) != 0) { return; } var dict = __instance.dictRefObj; for (var i = 0; i < InterfaceEntries.AllBones.Length; i++) { dict[(ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)] = boneInfos.First(x => x.name == InterfaceEntries.AllBones[i]).gameObject; } }
private static void CreateReferenceImpl(ChaReference __instance, GameObject objRef) { var findAssist = new FindAssist(); findAssist.Initialize(objRef.transform); var dict = (Dictionary <ChaReference.RefObjKey, GameObject>) AccessTools.Field(typeof(ChaReference), "dictRefObj").GetValue(__instance); for (var i = 0; i < AccessoryParentKey.Count; i++) { dict[(ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)] = findAssist.GetObjectFromName(AccessoryParentKey[i]); } }
public static void CreateReferenceInfoHook(ChaReference __instance, ulong flags, GameObject objRef) { if (null == objRef || (int)(flags - 1UL) != 0) { return; } var findAssist = new FindAssist(); findAssist.Initialize(objRef.transform); var dict = __instance.dictRefObj; for (var i = 0; i < InterfaceEntries.AllBones.Length; i++) { dict[(ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)] = findAssist.GetObjectFromName(InterfaceEntries.AllBones[i]); } }
public void InitBones(OICharInfo _info, ChaReference _charReference) { if (_info == null) { return; } this.listBones.Clear(); Dictionary <int, FKCtrl.TargetInfo> dictionary = new Dictionary <int, FKCtrl.TargetInfo>(); foreach (KeyValuePair <int, Info.BoneInfo> keyValuePair in Singleton <Info> .Instance.dicBoneInfo) { GameObject loop; switch (keyValuePair.Value.group) { case 7: case 8: case 9: loop = _charReference.GetReferenceInfo(ChaReference.RefObjKey.HeadParent).get_transform().FindLoop(keyValuePair.Value.bone); break; default: loop = this.transform.FindLoop(keyValuePair.Value.bone); if (Object.op_Equality((Object)loop, (Object)null)) { Debug.LogWarning((object)keyValuePair.Value.bone); break; } break; } if (!Object.op_Equality((Object)loop, (Object)null)) { FKCtrl.TargetInfo targetInfo1 = (FKCtrl.TargetInfo)null; if (dictionary.TryGetValue(keyValuePair.Value.sync, out targetInfo1)) { targetInfo1.AddSyncBone(loop); } else { OIBoneInfo oiBoneInfo = (OIBoneInfo)null; if (_info.bones.TryGetValue(keyValuePair.Key, out oiBoneInfo)) { OIBoneInfo.BoneGroup _group; switch (keyValuePair.Value.group) { case 0: case 1: case 2: case 3: case 4: _group = OIBoneInfo.BoneGroup.Body; break; case 7: case 8: case 9: _group = OIBoneInfo.BoneGroup.Hair; break; case 10: _group = OIBoneInfo.BoneGroup.Neck; break; case 11: case 12: _group = OIBoneInfo.BoneGroup.Breast; break; case 13: _group = OIBoneInfo.BoneGroup.Skirt; break; default: _group = (OIBoneInfo.BoneGroup)(1 << keyValuePair.Value.group); break; } FKCtrl.TargetInfo targetInfo2 = new FKCtrl.TargetInfo(loop, oiBoneInfo.changeAmount, _group, keyValuePair.Value.level); this.listBones.Add(targetInfo2); if (keyValuePair.Value.sync != -1) { dictionary.Add(keyValuePair.Key, targetInfo2); } } } } } this.count = this.listBones.Count; }