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; }
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); }