using UnityEngine; /// /// Receiving inputs from active vehicle on your scene, and feeds dashboard needles, texts, images. /// [AddComponentMenu("BoneCracker Games/Realistic Car Controller/UI/Dashboard Input Player2")] public class DashboardInputPlayer2 : MonoBehaviour { public RCC_CarControllerV3 vehiclePlayer2; // 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 turboGauge; public GameObject turboNeedle; public GameObject NOSGauge; public GameObject NoSNeedle; public GameObject heatGauge; public GameObject heatNeedle; public GameObject fuelGauge; public GameObject fuelNeedle; // Needle rotations. private float RPMNeedleRotation = 0f; private float KMHNeedleRotation = 0f; private float BoostNeedleRotation = 0f; private float NoSNeedleRotation = 0f; private float heatNeedleRotation = 0f; private float fuelNeedleRotation = 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; [HideInInspector] public bool ABS = false; [HideInInspector] public bool ESP = false; [HideInInspector] public bool Park = false; [HideInInspector] public bool Headlights = false; [HideInInspector] public RCC_CarControllerV3.IndicatorsOn indicators; private void Update() { if (autoAssignVehicle && RCC_SceneManager.Instance.activePlayerVehicle) vehiclePlayer2 = RCC_SceneManager.Instance.activePlayerVehicle; else vehiclePlayer2 = null; // If no any player vehicle, return. if (!vehiclePlayer2) return; // If player vehicle is not controllable or controlled by AI, return. if (!vehiclePlayer2.canControl || vehiclePlayer2.externalController) return; // If nos gauge is selected, enable or disable gauge related to vehicle. if (NOSGauge) { if (vehiclePlayer2.useNOS) { if (!NOSGauge.activeSelf) NOSGauge.SetActive(true); } else { if (NOSGauge.activeSelf) NOSGauge.SetActive(false); } } // If turbo gauge is selected, enable or disable turbo gauge related to vehicle. if (turboGauge) { if (vehiclePlayer2.useTurbo) { if (!turboGauge.activeSelf) turboGauge.SetActive(true); } else { if (turboGauge.activeSelf) turboGauge.SetActive(false); } } // If heat gauge is selected, enable or disable heat gauge related to vehicle. if (heatGauge) { if (vehiclePlayer2.useEngineHeat) { if (!heatGauge.activeSelf) heatGauge.SetActive(true); } else { if (heatGauge.activeSelf) heatGauge.SetActive(false); } } // If fuel gauge is selected, enable or disable fuel gauge related to vehicle. if (fuelGauge) { if (vehiclePlayer2.useFuelConsumption) { if (!fuelGauge.activeSelf) fuelGauge.SetActive(true); } else { if (fuelGauge.activeSelf) fuelGauge.SetActive(false); } } // Getting variables from the player vehicle. RPM = vehiclePlayer2.engineRPM; KMH = vehiclePlayer2.speed; direction = vehiclePlayer2.direction; Gear = vehiclePlayer2.currentGear; changingGear = vehiclePlayer2.changingGear; NGear = vehiclePlayer2.NGear; ABS = vehiclePlayer2.ABSAct; ESP = vehiclePlayer2.ESPAct; Park = vehiclePlayer2.handbrakeInput > .1f ? true : false; Headlights = vehiclePlayer2.lowBeamHeadLightsOn || vehiclePlayer2.highBeamHeadLightsOn; indicators = vehiclePlayer2.indicatorsOn; // If RPM needle is selected, assign rotation of the needle. if (RPMNeedle) { RPMNeedleRotation = (vehiclePlayer2.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 = (vehiclePlayer2.speed); else KMHNeedleRotation = (vehiclePlayer2.speed * 0.62f); KMHNeedle.transform.eulerAngles = new Vector3(KMHNeedle.transform.eulerAngles.x, KMHNeedle.transform.eulerAngles.y, -KMHNeedleRotation); } // If turbo needle is selected, assign rotation of the needle. if (turboNeedle) { BoostNeedleRotation = (vehiclePlayer2.turboBoost / 30f) * 270f; turboNeedle.transform.eulerAngles = new Vector3(turboNeedle.transform.eulerAngles.x, turboNeedle.transform.eulerAngles.y, -BoostNeedleRotation); } // If nos needle is selected, assign rotation of the needle. if (NoSNeedle) { NoSNeedleRotation = (vehiclePlayer2.NoS / 100f) * 270f; NoSNeedle.transform.eulerAngles = new Vector3(NoSNeedle.transform.eulerAngles.x, NoSNeedle.transform.eulerAngles.y, -NoSNeedleRotation); } // If heat needle is selected, assign rotation of the needle. if (heatNeedle) { heatNeedleRotation = (vehiclePlayer2.engineHeat / 110f) * 270f; heatNeedle.transform.eulerAngles = new Vector3(heatNeedle.transform.eulerAngles.x, heatNeedle.transform.eulerAngles.y, -heatNeedleRotation); } // If fuel needle is selected, assign rotation of the needle. if (fuelNeedle) { fuelNeedleRotation = (vehiclePlayer2.fuelTank / vehiclePlayer2.fuelTankCapacity) * 270f; fuelNeedle.transform.eulerAngles = new Vector3(fuelNeedle.transform.eulerAngles.x, fuelNeedle.transform.eulerAngles.y, -fuelNeedleRotation); } } }