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