private static void Postfix(MotionIKUI __instance, MotionIKUI.IKUIInfo ___infoBody, MotionIKUI.IKUIInfo ___infoLeftShoulder, MotionIKUI.IKUIInfo ___infoLeftElbow, MotionIKUI.IKUIInfo ___infoRightShoulder, MotionIKUI.IKUIInfo ___infoRightElbow, MotionIKUI.IKUIInfo ___infoLeftWaist, MotionIKUI.IKUIInfo ___infoLeftKnee, MotionIKUI.IKUIInfo ___infoRightWaist, MotionIKUI.IKUIInfo ___infoRightKnee, HPart.Group.MotionKind ___kindMotion) { if (__instance.CharaInfoData == null) { return; } var ik = __instance.CharaInfoData.motions[(int)___kindMotion].ik; SetParentName(___infoBody, ik.areas[(int)KinematicCtrl.IKTargetEN.Body]); SetParentName(___infoLeftShoulder, ik.areas[(int)KinematicCtrl.IKTargetEN.LeftShoulder]); SetParentName(___infoLeftElbow, ik.areas[(int)KinematicCtrl.IKTargetEN.LeftArmChain]); SetParentName(___infoRightShoulder, ik.areas[(int)KinematicCtrl.IKTargetEN.RightShoulder]); SetParentName(___infoRightElbow, ik.areas[(int)KinematicCtrl.IKTargetEN.RightArmChain]); SetParentName(___infoLeftWaist, ik.areas[(int)KinematicCtrl.IKTargetEN.LeftThigh]); SetParentName(___infoLeftKnee, ik.areas[(int)KinematicCtrl.IKTargetEN.LeftLegChain]); SetParentName(___infoRightWaist, ik.areas[(int)KinematicCtrl.IKTargetEN.RightThigh]); SetParentName(___infoRightKnee, ik.areas[(int)KinematicCtrl.IKTargetEN.RightLegChain]); }
internal static void Postfix(MotionIKUI __instance, MotionIKUI.IKUIInfo ___infoRightHand, MotionIKUI.IKUIInfo ___infoBody, MotionIKUI.IKUIInfo ___infoLeftShoulder, MotionIKUI.IKUIInfo ___infoLeftElbow, MotionIKUI.IKUIInfo ___infoRightShoulder, MotionIKUI.IKUIInfo ___infoRightElbow, MotionIKUI.IKUIInfo ___infoLeftWaist, MotionIKUI.IKUIInfo ___infoLeftKnee, MotionIKUI.IKUIInfo ___infoRightWaist, MotionIKUI.IKUIInfo ___infoRightKnee) { var motionSettingCanvas = __instance.motionSettingCanvas; CopyIKParentingButton(___infoRightHand, ___infoBody, IKTargetIndices.Body, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoLeftShoulder, IKTargetIndices.LeftShoulder, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoLeftElbow, IKTargetIndices.LeftElbow, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoRightShoulder, IKTargetIndices.RightShoulder, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoRightElbow, IKTargetIndices.RightElbow, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoLeftWaist, IKTargetIndices.LeftWaist, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoLeftKnee, IKTargetIndices.LeftKnee, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoRightWaist, IKTargetIndices.RightWaist, motionSettingCanvas, __instance); CopyIKParentingButton(___infoRightHand, ___infoRightKnee, IKTargetIndices.RightKnee, motionSettingCanvas, __instance); }
private static void SetParentName(MotionIKUI.IKUIInfo targetUIInfo, Motion.IK.Area ikTarget) { if (ikTarget.parentArea != -1) { targetUIInfo.textParent.text = Singleton <HEditData> .Instance.dicIKSelectPrefabsInfos[ikTarget.parentArea].names[Singleton <GameSystem> .Instance.languageInt]; } else { targetUIInfo.textParent.text = "-"; } }
private static void CopyIKParentingButton(MotionIKUI.IKUIInfo source, MotionIKUI.IKUIInfo target, IKTargetIndices category, MotionSettingCanvas motionSettingCanvas, MotionIKUI uiObject) { var ikButton = UnityEngine.Object.Instantiate(source.btnIKSelectArea.gameObject).GetComponent <Button>(); ikButton.transform.SetParent(target.tglUse.transform.parent, false); // MotionIKUI.kindMotion is a private field, so the copycat function will have to use reflection :/ ikButton.OnClickAsObservable().Subscribe(_ => motionSettingCanvas.motionIKParentUI.OpenCategory((int)category, (HPart.Group.MotionKind)AccessTools.Field(typeof(MotionIKUI), "kindMotion").GetValue(uiObject))); target.btnIKSelectArea = ikButton; var buttonText = UnityEngine.Object.Instantiate(source.textParent.gameObject).GetComponent <TextMeshProUGUI>(); buttonText.transform.SetParent(target.btnIKSelectArea.transform, false); buttonText.text = "-"; target.textParent = buttonText; }