using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI; public class InstrumentManager : MonoBehaviour { [Header("Input")] public InputActionReference throttleAction; // Your Input Action reference public InputActionReference attitudeAction; // Vector3 input for pitch/yaw/roll control [Header("Throttle Settings")] public float rampSpeed = 1f; // Units per second [Header("Attitude Control Settings")] public float attitudeResponseSpeed = 1f; // Multiplier for attitude input sensitivity [Header("References")] public MainEngine mainEngine; // Reference to your engine script public GimbalSystem gimbalSystem; // Reference to gimbal control system public RCSController rcsController; // Reference to RCS control system // Referance to TextMeshPro Throttle slider public Slider throttleDisplay; // Reference to UI Slider component void OnEnable() { if (throttleAction != null) { throttleAction.action.Enable(); Debug.Log("Throttle action enabled."); } else { Debug.LogWarning("Throttle action reference is not set!"); } if (attitudeAction != null) { attitudeAction.action.Enable(); Debug.Log("Attitude action enabled."); } else { Debug.LogWarning("Attitude action reference is not set!"); } } void OnDisable() { if (throttleAction != null) throttleAction.action.Disable(); if (attitudeAction != null) attitudeAction.action.Disable(); } void Update() { // Handle throttle input if (throttleAction == null || mainEngine == null) return; // Read input (-1, 0, +1) float input = throttleAction.action.ReadValue(); // Debug what the input is reading //Debug.Log($"Input value: {input}"); // Calculate new throttle target float target = mainEngine.throttleInput + input * rampSpeed * Time.deltaTime; // Clamp between 0 and 1 mainEngine.throttleInput = Mathf.Clamp01(target); // Debug the throttle value //Debug.Log($"Throttle value: {mainEngine.throttleInput}"); // Update the throttle display if (throttleDisplay != null) { throttleDisplay.value = mainEngine.throttleInput; } // Handle attitude control input if (attitudeAction != null) { // Read Vector3 input Vector3 attitudeInput = attitudeAction.action.ReadValue(); // Apply attitude response speed multiplier attitudeInput *= attitudeResponseSpeed; // Map inputs to gimbal system: // Y (up/down) → Pitch // X (left/right) → Yaw // Z (forward/backward) → Roll if (gimbalSystem != null) { gimbalSystem.SetPitchInput(attitudeInput.y); gimbalSystem.SetYawInput(attitudeInput.x); gimbalSystem.SetRollInput(attitudeInput.z); } // Map inputs to RCS controller: // Vector3(x=yaw, y=pitch, z=roll) if (rcsController != null) { Vector3 rcsInput = new Vector3(attitudeInput.x, attitudeInput.y, attitudeInput.z); rcsController.SetControlInput(rcsInput); } } } }