using TMPro; using UnityEngine; public class AntSetup : MonoBehaviour { [Header("Speed")] public int speedSensorId = 0; public float wheelCircumference = 2.096f; public TextMeshProUGUI speedDisplay; [Header("Powermeter")] public int powerMeterId = 0; public TextMeshProUGUI powerDisplay; public TextMeshProUGUI cadenceDisplay; private SpeedSensorReceiver speedSensorReceiver; private PowerMeterReceiver powerMeterReceiver; private bool speedDisplayAvailable; private bool powerDisplayAvailable; private bool cadenceDisplayAvailable; private BicycleController bicycleController; // Start is called before the first frame update void Start() { bicycleController = GetComponent(); speedDisplayAvailable = speedDisplay != null; powerDisplayAvailable = powerDisplay != null; cadenceDisplayAvailable = cadenceDisplay != null; speedSensorReceiver = new SpeedSensorReceiver(speedSensorId, wheelCircumference); powerMeterReceiver = new PowerMeterReceiver(powerMeterId); speedSensorReceiver.StartScan(); powerMeterReceiver.StartScan(); } // Update is called once per frame void Update() { //transform.Translate(Vector3.forward * (Time.deltaTime * (speedSensorReceiver?.Speed ?? 0))); bicycleController.SetSpeed(speedSensorReceiver?.Speed ?? 0); if (speedDisplayAvailable) { speedDisplay.text = $"{(speedSensorReceiver?.SpeedKmh ?? 0f):n2} km/h"; } if (powerDisplayAvailable) { powerDisplay.text = $"{(powerMeterReceiver?.InstantaneousPower ?? 0f):0} W"; } if (cadenceDisplayAvailable) { cadenceDisplay.text = $"{(powerMeterReceiver?.InstantaneousCadence ?? 0f):0} rpm"; } } }