using UnityEngine; using static OnlyScove.Scripts.CameraController; // Need to add this to access CameraController.CameraViewMode namespace OnlyScove.Scripts { [System.Serializable] public class CameraDynamicFOV { [Header("Dynamic FOV")] [SerializeField] private bool useDynamicFOV = true; [SerializeField] private float tpvSprintFOV = 70f; // Renamed from sprintFOV for clarity [SerializeField] private float fovSmoothTime = 5f; private float _currentTpvBaseFOV; // Stored from CameraController private float _currentFpvFOV; // Stored from CameraController public float CurrentTpvBaseFOV => _currentTpvBaseFOV; // Expose for CameraController transitions public void Initialize(float tpvBaseFOV, float fpvFOV) { _currentTpvBaseFOV = tpvBaseFOV; _currentFpvFOV = fpvFOV; } public void HandleDynamicFOV(Camera cam, InputReader inputReader, CameraViewMode viewMode) { if (!useDynamicFOV || cam == null || inputReader == null) return; float targetFOV = (viewMode == CameraViewMode.ThirdPerson) ? _currentTpvBaseFOV : _currentFpvFOV; // Apply sprint FOV only in TPV if (viewMode == CameraViewMode.ThirdPerson && inputReader.MoveInput.magnitude > 0.1f && inputReader.IsSprintHeld) { targetFOV = tpvSprintFOV; } cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, targetFOV, fovSmoothTime * Time.deltaTime); } } }