From 90b9b1dd6469653f8b836435135887768bbeecbf Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 10 Oct 2020 20:10:53 -0600 Subject: [PATCH] Fixed a crash when trying to call DriveVehicleToNextWaypoint when the path has no waypoints. Removed dead code. --- SceneManager/AITasking.cs | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/SceneManager/AITasking.cs b/SceneManager/AITasking.cs index ec9aea3..f12b8b9 100644 --- a/SceneManager/AITasking.cs +++ b/SceneManager/AITasking.cs @@ -33,7 +33,7 @@ namespace SceneManager { StopVehicleAtWaypoint(currentWaypoint, collectedVehicle); } - if(currentWaypoint != path?.Waypoints?.Last()) + if(path?.Waypoints?.Count > 0 && currentWaypoint != path?.Waypoints?.Last()) { DriveVehicleToNextWaypoint(collectedVehicle, path, currentWaypoint); } @@ -58,15 +58,7 @@ namespace SceneManager Logger.Log($"{collectedVehicle.Vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number} (directed)"); Logger.Log($"{collectedVehicle.Vehicle.Model.Name} Dismissed: {collectedVehicle.Dismissed}, Directed: {collectedVehicle.SkipWaypoint}"); - collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, currentWaypoint.DrivingFlag, acceptedDistance); - //if (currentWaypoint.DrivingFlag == VehicleDrivingFlags.IgnorePathFinding) - //{ - // collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)17040299, acceptedDistance); - //} - //else - //{ - // collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)263075, acceptedDistance); - //} + collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)currentWaypoint.DrivingFlagType, acceptedDistance); } void LoopWhileDrivingToDirectedWaypoint(float acceptedDistance) @@ -112,9 +104,9 @@ namespace SceneManager //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, currentWaypointTask); - Logger.Log($"{vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {path.Waypoints[currentWaypointTask].Number} (Stop: {currentWaypoint.IsStopWaypoint}, Driving flag: {(DrivingFlagType)currentWaypoint.DrivingFlag})"); + Logger.Log($"{vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {path.Waypoints[currentWaypointTask].Number} (Stop: {currentWaypoint.IsStopWaypoint}, Driving flag: {currentWaypoint.DrivingFlagType})"); Logger.Log($"{vehicle.Model.Name} driver is persistent: {driver.IsPersistent}"); - driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, path.Waypoints[currentWaypointTask].DrivingFlag, acceptedDistance); + driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); LoopWhileDrivingToWaypoint(currentWaypointTask, acceptedDistance); if (!VehicleAndDriverAreValid(collectedVehicle)) @@ -184,18 +176,12 @@ namespace SceneManager { Logger.Log($"Vehicle is null"); collectedVehicle.Dismiss(); - //if(collectedVehicle.Driver) - //{ - // collectedVehicle.Driver.IsPersistent = false; - //} return false; } if (!collectedVehicle.Driver || !collectedVehicle.Driver.IsAlive && !collectedVehicle.Dismissed) { collectedVehicle.Dismiss(); //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} driver is null or dead"); - //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} persistent: {collectedVehicle.Vehicle.IsPersistent}"); - //collectedVehicle.Vehicle.IsPersistent = false; return false; } return true;