Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
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");
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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);
        }