Exemple #1
0
        public static Gesture GetGesture(Hand hand)
        {
            Gesture gesture = Gesture.Normal;

            HandGestureController handGestureController = GetHandGestureController();

            if (handGestureController == null)
            {
                return(gesture);
            }

            switch (hand == Hand.Left ? handGestureController.field_Private_EnumNPrivateSealedva9vUnique_0 : handGestureController.field_Private_EnumNPrivateSealedva9vUnique_2)
            {
            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue1:
                gesture = Gesture.Fist;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue2:
                gesture = Gesture.Open;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue3:
                gesture = Gesture.Point;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue4:
                gesture = Gesture.Victory;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue5:
                gesture = Gesture.RockNRoll;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue6:
                gesture = Gesture.Gun;
                break;

            case HandGestureController.EnumNPrivateSealedva9vUnique.EnumValue7:
                gesture = Gesture.ThumbsUp;
                break;
            }
            return(gesture);
        }
Exemple #2
0
        public override void OnLateUpdate()
        {
            if (isReady)
            {
                l_solver = VRCPlayer.field_Internal_Static_VRCPlayer_0?.field_Private_VRC_AnimationController_0?.field_Private_VRIK_0?.solver;
                if (l_solver != null)
                {
                    if (l_solver.leftArm?.target != null)
                    {
                        l_solver.leftArm.positionWeight  = 1f;
                        l_solver.leftArm.rotationWeight  = 1f;
                        l_solver.leftArm.target.position = m_leftTargetPosition;
                        l_solver.leftArm.target.rotation = m_leftTargetRotation;
                    }


                    if (l_solver.rightArm?.target != null)
                    {
                        l_solver.rightArm.positionWeight  = 1f;
                        l_solver.rightArm.rotationWeight  = 1f;
                        l_solver.rightArm.target.position = m_rightTargetPosition;
                        l_solver.rightArm.target.rotation = m_rightTargetRotation;
                    }
                }

                l_handController = VRCPlayer.field_Internal_Static_VRCPlayer_0?.field_Private_VRC_AnimationController_0?.field_Private_HandGestureController_0;
                if (l_handController != null)
                {
                    l_handController.field_Internal_Boolean_0 = true;
                    l_handController.field_Private_EnumNPublicSealedvaKeMoCoGaViOcViDaWaUnique_0 = VRCInputManager.EnumNPublicSealedvaKeMoCoGaViOcViDaWaUnique.Index;
                    for (int i = 0; i < 2; i++)
                    {
                        for (int j = 0; j < 5; j++)
                        {
                            int l_dataIndex = i * 5 + j;
                            l_handController.field_Private_ArrayOf_Single_1[l_dataIndex] = 1.0f - m_fingersBends[l_dataIndex]; // Squeeze
                            l_handController.field_Private_ArrayOf_Single_3[l_dataIndex] = m_fingersSpreads[l_dataIndex];      // Spread
                        }
                    }
                }
            }
        }
        /// <summary>
        /// This function will handle the main override of the ActionMenuOpener object according
        /// to the configuration supplied by MelonPrefs
        /// </summary>
        /// <param name="__0">Target state for the ActionMenu, either open or close</param>
        /// <param name="__instance">Instance of ActionMenuOpener __instance.name gives the MenuL or MenuR needed to determine hand</param>
        public static bool OnActionMenuOpen(bool __0, ref ActionMenuOpener __instance)
        {
            //MelonLogger.Log($"ActionMenuOpener OpenActionMenu Called OpenerName: {__instance.name}, BoolState: {__0}");
            if ((MelonPreferences.GetEntryValue <bool>(settingsCategory, rightHandSetting) && __instance.name.Equals("MenuR")) || (MelonPreferences.GetEntryValue <bool>(settingsCategory, leftHandSetting) && __instance.name.Equals("MenuL")))
            {
                if (__0)
                {
                    HandGestureController.Method_Public_Static_Void_Boolean_0(!HandGestureController.Method_Public_Static_Boolean_0());
                }
                else
                {
                    HandGestureController.Method_Public_Static_Void_Boolean_0(__0);
                }
                return(false); //Skip original function
            }

            //Check if action menu is disabled for hand
            if ((MelonPreferences.GetEntryValue <bool>(settingsCategory, rightHandActionDisable) && __instance.name.Equals("MenuR")) || (MelonPreferences.GetEntryValue <bool>(settingsCategory, leftHandActionDisable) && __instance.name.Equals("MenuL")))
            {
                return(false);
            }

            return(true);
        }