Beispiel #1
0
        private static void PerformCalibration(ref VRCTrackingSteam __instance, Animator __0, bool __1, bool __2)
        {
            var avatarId = VRCPlayer.field_Internal_Static_VRCPlayer_0.field_Private_Player_0.prop_ApiAvatar_0.id;

            _savedCalibrations[avatarId] = new FbtCalibration
            {
                LeftFoot  = new KeyValuePair <Vector3, Quaternion>(__instance.field_Public_Transform_10.localPosition, __instance.field_Public_Transform_10.localRotation),
                RightFoot = new KeyValuePair <Vector3, Quaternion>(__instance.field_Public_Transform_11.localPosition, __instance.field_Public_Transform_11.localRotation),
                Hip       = new KeyValuePair <Vector3, Quaternion>(__instance.field_Public_Transform_12.localPosition, __instance.field_Public_Transform_12.localRotation),
            };

            try
            {
                File.WriteAllText($"{CalibrationsDirectory}{CalibrationsFile}", JsonConvert.SerializeObject(_savedCalibrations, Formatting.Indented, new JsonSerializerSettings
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                    ContractResolver      = new DynamicContractResolver("normalized")
                }));
            }
            catch (Exception e)
            {
                File.WriteAllText($"{CalibrationsDirectory}error.log", e.Message);
                MelonLogger.LogError(
                    $"Could not save current calibration to file! Created error.log in /UserData/FTBSaver. Please create an issue on GitHub or message Requi in the VRChat Modding Group Discord with that file.");
            }
        }
Beispiel #2
0
        private static bool IsCalibratedForAvatar(ref VRCTrackingSteam __instance, ref bool __result, string __0)
        {
            if (__instance.field_Private_String_0 == null)
            {
                __result = false;
                return(true);
            }

            var avatarId = __0;

            if (_savedCalibrations.ContainsKey(avatarId))
            {
                var savedCalib = _savedCalibrations[avatarId];
                __instance.field_Public_Transform_10.localPosition = savedCalib.LeftFoot.Key;
                __instance.field_Public_Transform_10.localRotation = savedCalib.LeftFoot.Value;

                __instance.field_Public_Transform_11.localPosition = savedCalib.RightFoot.Key;
                __instance.field_Public_Transform_11.localRotation = savedCalib.RightFoot.Value;

                __instance.field_Public_Transform_12.localPosition = savedCalib.Hip.Key;
                __instance.field_Public_Transform_12.localRotation = savedCalib.Hip.Value;
            }

            __result = true;
            return(false);
        }