From d684d57cb2cc8ffb443763cd6bf67a749c661323 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Tue, 22 Sep 2020 14:24:59 -0600 Subject: [PATCH] Added loop to ensure driver is deleted before the vehicle upon dismiss from world --- .../Object Classes/CollectedVehicle.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index 825edfa..c3b84cb 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -40,13 +40,19 @@ namespace SceneManager if (dismissOption == DismissOption.FromWorld) { Game.LogTrivial($"Dismissed {Vehicle.Model.Name} from the world"); - Vehicle.Driver.Delete(); + if (Vehicle.HasDriver) + { + while (Vehicle.Driver) + { + Vehicle.Driver.Dismiss(); + Vehicle.Driver.Delete(); + GameFiber.Yield(); + } + } Vehicle.Delete(); return; } - Dismissed = true; - Dismissed = false; Driver.Tasks.Clear(); if(StoppedAtWaypoint) { @@ -66,12 +72,17 @@ namespace SceneManager { Logger.Log($"Dismissed from waypoint."); SkipWaypoint = true; - SkipWaypoint = false; + GameFiber.StartNew(() => + { + GameFiber.Sleep(100); + SkipWaypoint = false; + }); } if(dismissOption == DismissOption.FromWaypoint && CurrentWaypoint.Number == Path.Waypoints.Count || dismissOption == DismissOption.FromPath) { Logger.Log($"Dismissed from path."); + Dismissed = true; GameFiber.StartNew(() => { // check if the vehicle is near any of the path's collector waypoints