using UnityEngine; /// /// Receiving inputs from active vehicle on your scene, and feeds dashboard needles, texts, images. /// [AddComponentMenu("BoneCracker Games/Realistic Car Controller/UI/RCC UI Dashboard Inputs")] public class RCC_DashboardInputs : MonoBehaviour { public RCC_CarControllerV3 vehicle; // Target vehicle. // public bool autoAssignVehicle = true; // Auto assign target vehicle as player vehicle from the RCC_SceneManager. // Needles. [Header("Needles")] public GameObject RPMNeedle; public GameObject KMHNeedle; public GameObject NOSGauge; public GameObject NoSNeedle; // Needle rotations. private float RPMNeedleRotation = 0f; private float KMHNeedleRotation = 0f; private float NoSNeedleRotation = 0f; // Variables of the player vehicle. [HideInInspector] public float RPM; [HideInInspector] public float KMH; [HideInInspector] public int direction = 1; [HideInInspector] public float Gear; [HideInInspector] public bool changingGear = false; [HideInInspector] public bool NGear = false; private void Update() { // If no any player vehicle, return. if (!vehicle) return; // If player vehicle is not controllable or controlled by AI, return. if (!vehicle.canControl || vehicle.externalController) return; // If nos gauge is selected, enable or disable gauge related to vehicle. if (NOSGauge) { if (vehicle.useNOS) { if (!NOSGauge.activeSelf) NOSGauge.SetActive(true); } else { if (NOSGauge.activeSelf) NOSGauge.SetActive(false); } } // Getting variables from the player vehicle. RPM = vehicle.engineRPM; KMH = vehicle.speed; direction = vehicle.direction; Gear = vehicle.currentGear; changingGear = vehicle.changingGear; NGear = vehicle.NGear; // If RPM needle is selected, assign rotation of the needle. if (RPMNeedle) { RPMNeedleRotation = (vehicle.engineRPM / 50f); RPMNeedleRotation = Mathf.Clamp(RPMNeedleRotation, 0f, 180f); RPMNeedle.transform.eulerAngles = new Vector3(RPMNeedle.transform.eulerAngles.x, RPMNeedle.transform.eulerAngles.y, -RPMNeedleRotation); } // If KMH needle is selected, assign rotation of the needle. if (KMHNeedle) { if (RCC_Settings.Instance.units == RCC_Settings.Units.KMH) KMHNeedleRotation = (vehicle.speed); else KMHNeedleRotation = (vehicle.speed * 0.62f); KMHNeedle.transform.eulerAngles = new Vector3(KMHNeedle.transform.eulerAngles.x, KMHNeedle.transform.eulerAngles.y, -KMHNeedleRotation); } // If nos needle is selected, assign rotation of the needle. if (NoSNeedle) { NoSNeedleRotation = (vehicle.NoS / 100f) * 270f; NoSNeedle.transform.eulerAngles = new Vector3(NoSNeedle.transform.eulerAngles.x, NoSNeedle.transform.eulerAngles.y, -NoSNeedleRotation); } } }