private static void VrikInitPatch(VRCVrIkController __instance, VRCPlayer?__2) { if (__2 != null && __2.prop_Player_0?.prop_APIUser_0?.id == APIUser.CurrentUser?.id) { FullBodyHandling.LastCalibrationWasInCustomIk = false; LastInitializedIk = __instance.field_Private_VRIK_0; } }
public WallFreezeFixer(VRCVrIkController controller) { var ikControllerParent = controller.field_Private_IkController_0.transform; myLeftEffector = ikControllerParent.Find("LeftEffector"); myRightEffector = ikControllerParent.Find("RightEffector"); myHeadEffector = ikControllerParent.Find("HeadEffector"); }
private static byte VrIkInitReplacement(IntPtr thisPtr, IntPtr vrcAnimController, IntPtr animatorPtr, IntPtr playerPtr, byte isLocalPlayer, IntPtr nativeMethod) { var __instance = new VRCVrIkController(thisPtr); var __2 = playerPtr == IntPtr.Zero ? null : new VRCPlayer(playerPtr); var animator = animatorPtr == IntPtr.Zero ? null : new Animator(animatorPtr); var result = ourOriginalVrIkInit(thisPtr, vrcAnimController, animatorPtr, playerPtr, isLocalPlayer, nativeMethod); VrikInitPatch(__instance, animator, __2); return(result); }
private static void VrikInitPatch(VRCVrIkController __instance, Animator animator, VRCPlayer?__2) { if (__2 != null && __2.prop_Player_0?.prop_APIUser_0?.id == APIUser.CurrentUser?.id) { ourLastIkController = __instance.field_Private_IkController_0; ourLastInitializedIk = __instance.field_Private_VRIK_0; ourCachedSolver = new CachedSolver(ourLastInitializedIk.solver); var handler = new HumanPoseHandler(animator.avatar, animator.transform); var hips = animator.GetBoneTransform(HumanBodyBones.Hips); ourAnimationsHandler = new AnimationsHandler(handler, hips, in ourCachedSolver); ourCustomSpineSolver = new CustomSpineSolver(in ourCachedSolver); ourWallFreezeFixer = new WallFreezeFixer(__instance); HandOffsetsManager?.Dispose(); HandOffsetsManager = new HandOffsetsManager(__instance); } }
public HandOffsetsManager(VRCVrIkController controller) { var ikControllerParent = controller.field_Private_IkController_0.transform; var leftEffector = ikControllerParent.Find("LeftEffector"); var rightEffector = ikControllerParent.Find("RightEffector"); myLeftHandOffset = MakeTarget(leftEffector); myRightHandOffset = MakeTarget(rightEffector); var vrik = controller.field_Private_VRIK_0; vrik.solver.leftArm.target = myLeftHandOffset; vrik.solver.rightArm.target = myRightHandOffset; myOriginalScale = vrik.GetComponent <VRC_AvatarDescriptor>().ViewPosition.y; UpdatePositionOffset(Vector3.zero, IkTweaksSettings.HandPositionOffset.Value); UpdateRotationOffset(Vector3.zero, IkTweaksSettings.HandAngleOffset.Value); }