Ejemplo n.º 1
0
        private static void FbbIkInitPrefix(VRCFbbIkController __instance, VRCPlayer?__2, bool __3)
        {
            var vrcPlayer = __2;

            if (vrcPlayer == null)
            {
                return;
            }
            var isLocalPlayer = vrcPlayer.prop_Player_0?.prop_APIUser_0?.id == APIUser.CurrentUser?.id;

            if (isLocalPlayer != __3)
            {
                MelonLogger.LogWarning("Computed IsLocal is different from provided");
            }
            if (!isLocalPlayer)
            {
                return;
            }

            LastCalibrationWasInCustomIk = false;
            LastInitializedController    = __instance;
        }
Ejemplo n.º 2
0
        public static VRIK_New SetupVrIk(VRCFbbIkController source, GameObject targetGameObject)
        {
            var vrik = targetGameObject.GetComponent <VRIK_New>();

            vrik.AutoDetectReferences();

            if (!IkTweaksSettings.MapToes)
            {
                vrik.references.leftToes  = null;
                vrik.references.rightToes = null;
                vrik.solver.leftLeg.UnInitiate();
                vrik.solver.rightLeg.UnInitiate();
            }

            vrik.PublicInitiateSolver();

            vrik.enabled          = true;
            vrik.solver.plantFeet = false;

            vrik.solver.spine.bodyPosStiffness       = 0.55f;
            vrik.solver.spine.bodyRotStiffness       = 0.2f;
            vrik.solver.spine.neckStiffness          = 0.2f;
            vrik.solver.spine.chestClampWeight       = 0.5f;
            vrik.solver.spine.headClampWeight        = 0.9f;
            vrik.solver.spine.maintainPelvisPosition = 0.00f;
            vrik.solver.spine.minHeadHeight          = -100f;

            vrik.solver.spine.maxRootAngle = 180;

            AddTwistRelaxer(vrik.references.leftForearm, vrik, vrik.references.leftHand);
            AddTwistRelaxer(vrik.references.rightForearm, vrik, vrik.references.rightHand);

            vrik.solver.leftArm.shoulderRotationMode    = (IKSolverVR.Arm.ShoulderRotationMode)IkTweaksSettings.ShoulderMode;
            vrik.solver.leftArm.shoulderRotationWeight  = .8f;
            vrik.solver.rightArm.shoulderRotationMode   = (IKSolverVR.Arm.ShoulderRotationMode)IkTweaksSettings.ShoulderMode;
            vrik.solver.rightArm.shoulderRotationWeight = .8f;

            vrik.solver.spine.pelvisPositionWeight = 1f;
            vrik.solver.spine.pelvisRotationWeight = 1f;
            vrik.solver.spine.positionWeight       = 1f;
            vrik.solver.spine.rotationWeight       = 1f;

            vrik.solver.leftLeg.bendToTargetWeight  = 0.9f;
            vrik.solver.rightLeg.bendToTargetWeight = 0.9f;

            vrik.solver.locomotion.weight       = 0f;
            vrik.solver.leftLeg.positionWeight  = 1f;
            vrik.solver.leftLeg.rotationWeight  = 1f;
            vrik.solver.rightLeg.positionWeight = 1f;
            vrik.solver.rightLeg.rotationWeight = 1f;
            vrik.solver.leftArm.positionWeight  = 1f;
            vrik.solver.leftArm.rotationWeight  = 1f;
            vrik.solver.rightArm.positionWeight = 1f;
            vrik.solver.rightArm.rotationWeight = 1f;

            // bestest settings ever
            vrik.solver.spine.bodyPosStiffness          = 1f;
            vrik.solver.spine.bodyRotStiffness          = 0f;
            vrik.solver.spine.neckStiffness             = .5f;
            vrik.solver.spine.rotateChestByHands        = .25f;
            vrik.solver.spine.chestClampWeight          = 0f;
            vrik.solver.spine.headClampWeight           = 0f;
            vrik.solver.spine.maintainPelvisPosition    = 0f;
            vrik.solver.spine.minHeadHeight             = -100f;
            vrik.solver.spine.moveBodyBackWhenCrouching = 0f;
            // vrik.solver.spine.bodyOffsetWhenNotEvenCrouching = -2f;

            vrik.solver.IKPositionWeight = 1f;

            vrik.solver.leftLeg.bendGoalWeight = vrik.solver.rightLeg.bendGoalWeight = 0.75f;

            // source.field_Private_FullBodyBipedIK_0.solver.IKPositionWeight = 0f;

            source.field_Private_FullBodyBipedIK_0.enabled   = false;
            source.field_Private_FBBIKHeadEffector_0.enabled = false;
            source.field_Private_FBBIKArmBending_0.enabled   = false;
            source.field_Private_ShoulderRotator_0.enabled   = false;

            vrik.solver.Reset();

            vrik.solver.spine.headTarget = source.field_Private_FBBIKHeadEffector_0.transform;

            return(vrik);
        }