222 lines
6.7 KiB
C#
222 lines
6.7 KiB
C#
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// Receiving inputs from active vehicle on your scene, and feeds dashboard needles, texts, images.
|
|
/// </summary>
|
|
[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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|