Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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 = "-";
     }
 }
Esempio n. 4
0
        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;
        }