using ABI_RC.Core.Player; using ABI_RC.Systems.MovementSystem; using HarmonyLib; using UnityEngine; namespace NAK.HeadBobbingFix.HarmonyPatches; class PlayerSetupPatches { [HarmonyPostfix] [HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.HandleDesktopCameraPosition))] public static void Postfix_PlayerSetup_HandleDesktopCameraPosition(bool ignore, ref PlayerSetup __instance, ref MovementSystem ____movementSystem, ref int ___headBobbingLevel) { if (!HeadBobbingFix.EntryEnabled.Value) return; // this would be much simplier if I bothered with transpilers if (____movementSystem.disableCameraControl && !ignore) return; if (___headBobbingLevel != 2) return; Transform viewpointTransform = __instance._viewPoint.pointer.transform; if (viewpointTransform != null) { __instance.desktopCamera.transform.position = viewpointTransform.position; } } }