//Wait for the car to stop before we generate a new path //or it might have passed the start position of the path when the path has been generated IEnumerator WaitForCarToStop() { //Get the car's current speed VehicleDataController carDataController = SimController.current.GetActiveCarData(); //Will continue looping until the car has a lower speed then 5 km/h while (Mathf.Abs(carDataController.GetSpeed_kmph()) > 5f) { yield return(null); } //Now we need to check again if the target position is possible because we might have moved the mouse while the car was braking if (HasMouseCarValidPosition()) { //Move the marker car to the end of the path so we know know where the path should end and at which heading Car carMouse = new Car(SimController.current.GetCarMouse(), SimController.current.GetActiveCarData()); Transform carShowingEndPos = SimController.current.GetCarShowingEndPosTrans(); carShowingEndPos.position = carMouse.carData.GetCenterPos(carMouse.rearWheelPos, carMouse.HeadingInRadians); carShowingEndPos.rotation = Quaternion.Euler(new Vector3(0f, carMouse.HeadingInDegrees, 0f)); carShowingEndPos.gameObject.SetActive(true); //The car has stopped and the target is a valid positon, so try to generate a path StartCoroutine(GeneratePath(carMouse)); yield break; } else { Debug.Log("The car cant move to this position"); } }
public void VehicleStatusChecker_Test() { try { var serviceProvider = new ServiceCollection() .AddSingleton <IVehicleBAL, VehicleBAL>() .AddSingleton <IVehicleRepository, VehicleRepository>() .BuildServiceProvider(); VehicleDataController vehicleDataController = new VehicleDataController(null, serviceProvider.GetService <IVehicleBAL>()); vehicleDataController.VehicleStatusUpdate(1, true); System.Threading.Thread.Sleep(65000); Vehicle x_Vehicle = vehicleDataController.VehiclesById(1); if (x_Vehicle.Status == false) { Assert.IsAssignableFrom <Vehicle>(x_Vehicle); } else { Assert.True(false); } } catch (Exception ex) { Assert.True(false); } }
//Get data such as speed, length, etc belonging to the self-driving car public VehicleDataController GetActiveCarData() { Transform activeCar = GetSelfDrivingCarTrans(); VehicleDataController carData = activeCar.GetComponent <VehicleController>().GetCarData(); return(carData); }
public void Vehicles_Filter4_Test() { try { var serviceProvider = new ServiceCollection() .AddSingleton <IVehicleBAL, VehicleBAL>() .AddSingleton <IVehicleRepository, VehicleRepository>() .BuildServiceProvider(); VehicleDataController vehicleDataController = new VehicleDataController(null, serviceProvider.GetService <IVehicleBAL>()); var list = vehicleDataController.Vehicles(1, true); Assert.IsAssignableFrom <List <Vehicle> >(list); } catch (Exception ex) { Assert.True(false); } }
public void VehicleStatusUpdate_Test() { try { var serviceProvider = new ServiceCollection() .AddSingleton <IVehicleBAL, VehicleBAL>() .AddSingleton <IVehicleRepository, VehicleRepository>() .BuildServiceProvider(); VehicleDataController vehicleDataController = new VehicleDataController(null, serviceProvider.GetService <IVehicleBAL>()); bool is_success = vehicleDataController.VehicleStatusUpdate(1, true); Assert.True(is_success); } catch (Exception ex) { Assert.True(false); } }
//Add a square showing the car's position if it has moved private void AddSquare() { Transform carTrans = SimController.current.GetSelfDrivingCarTrans(); VehicleDataController carDataController = carTrans.GetComponent <VehicleDataController>(); //How far has the car driven since last saved position? float distSqr = (lastPos - carTrans.position).sqrMagnitude; //How far should the car drive before we add a rectangle float dist = 2f; if (distSqr > dist * dist) { //Find the corner coordinates of the car at this position Vector3 F = carDataController.RearWheelPos(carTrans) + carTrans.forward * carDataController.carData.distancePivotToFront; Vector3 B = carDataController.RearWheelPos(carTrans) + carTrans.forward * carDataController.carData.distancePivotToRear; Vector3 center = (F + B) * 0.5f; float carWidth = carDataController.carData.carWidth; float carLength = carDataController.carData.CarLength; float heading = carTrans.eulerAngles.y * Mathf.Deg2Rad; Rectangle rect = CarData.GetCornerPositions(center, heading, carWidth, carLength); //Set the height of the rectangle rect.FL.y = DisplayController.oldPosHeight; rect.FR.y = DisplayController.oldPosHeight; rect.BL.y = DisplayController.oldPosHeight; rect.BR.y = DisplayController.oldPosHeight; //Save this position oldCarPositions.Add(rect); lastPos = carTrans.position; } }
// // Update speed // //Dont need to update speed every frame private IEnumerator UpdateSpeedText() { while (true) { if (SimController.current != null) { //Get the speed in km/h VehicleDataController dataController = SimController.current.GetActiveCarData(); float speed = dataController.GetSpeed_kmph(); //float speed = 0f; //Round int speedInt = Mathf.RoundToInt(speed); //Display the speed speedText.text = speedInt + " km/h"; } yield return(new WaitForSeconds(0.5f)); } }