public void UpdateDynamicLaneSelectionParameters() { #if DEBUG if (GlobalConfig.Instance.Debug.Switches[9]) { Log._Debug($"VehicleState.UpdateDynamicLaneSelectionParameters({vehicleId}) called."); } #endif if (!Options.IsDynamicLaneSelectionActive()) { dlsReady = false; return; } if (dlsReady) { return; } float egoism = (float)timedRand / 100f; float altruism = 1f - egoism; DynamicLaneSelection dls = GlobalConfig.Instance.DynamicLaneSelection; if (Options.individualDrivingStyle) { maxReservedSpace = recklessDriver ? Mathf.Lerp(dls.MinMaxRecklessReservedSpace, dls.MaxMaxRecklessReservedSpace, altruism) : Mathf.Lerp(dls.MinMaxReservedSpace, dls.MaxMaxReservedSpace, altruism); laneSpeedRandInterval = Mathf.Lerp(dls.MinLaneSpeedRandInterval, dls.MaxLaneSpeedRandInterval, egoism); maxOptLaneChanges = (int)Math.Round(Mathf.Lerp(dls.MinMaxOptLaneChanges, dls.MaxMaxOptLaneChanges + 1, egoism)); maxUnsafeSpeedDiff = Mathf.Lerp(dls.MinMaxUnsafeSpeedDiff, dls.MaxMaxOptLaneChanges, egoism); minSafeSpeedImprovement = Mathf.Lerp(dls.MinMinSafeSpeedImprovement, dls.MaxMinSafeSpeedImprovement, altruism); minSafeTrafficImprovement = Mathf.Lerp(dls.MinMinSafeTrafficImprovement, dls.MaxMinSafeTrafficImprovement, altruism); } else { maxReservedSpace = recklessDriver ? dls.MaxRecklessReservedSpace : dls.MaxReservedSpace; laneSpeedRandInterval = dls.LaneSpeedRandInterval; maxOptLaneChanges = dls.MaxOptLaneChanges; maxUnsafeSpeedDiff = dls.MaxUnsafeSpeedDiff; minSafeSpeedImprovement = dls.MinSafeSpeedImprovement; minSafeTrafficImprovement = dls.MinSafeTrafficImprovement; } dlsReady = true; }
public void UpdateDynamicLaneSelectionParameters(ref ExtVehicle extVehicle) { #if DEBUG if (DebugSwitch.VehicleLinkingToSegmentEnd.Get()) { Log._Debug("VehicleState.UpdateDynamicLaneSelectionParameters" + $"({extVehicle.vehicleId}) called."); } #endif if (!Options.IsDynamicLaneSelectionActive()) { extVehicle.dlsReady = false; return; } if (extVehicle.dlsReady) { return; } float egoism = extVehicle.timedRand / 100f; float altruism = 1f - egoism; DynamicLaneSelection dls = GlobalConfig.Instance.DynamicLaneSelection; if (Options.individualDrivingStyle) { extVehicle.maxReservedSpace = extVehicle.recklessDriver ? Mathf.Lerp( dls.MinMaxRecklessReservedSpace, dls.MaxMaxRecklessReservedSpace, altruism) : Mathf.Lerp(dls.MinMaxReservedSpace, dls.MaxMaxReservedSpace, altruism); extVehicle.laneSpeedRandInterval = Mathf.Lerp( dls.MinLaneSpeedRandInterval, dls.MaxLaneSpeedRandInterval, egoism); extVehicle.maxOptLaneChanges = (int)Math.Round( Mathf.Lerp(dls.MinMaxOptLaneChanges, dls.MaxMaxOptLaneChanges + 1, egoism)); extVehicle.maxUnsafeSpeedDiff = Mathf.Lerp( dls.MinMaxUnsafeSpeedDiff, dls.MaxMaxOptLaneChanges, egoism); extVehicle.minSafeSpeedImprovement = Mathf.Lerp( dls.MinMinSafeSpeedImprovement.GameUnits, dls.MaxMinSafeSpeedImprovement.GameUnits, altruism); extVehicle.minSafeTrafficImprovement = Mathf.Lerp( dls.MinMinSafeTrafficImprovement, dls.MaxMinSafeTrafficImprovement, altruism); } else { extVehicle.maxReservedSpace = extVehicle.recklessDriver ? dls.MaxRecklessReservedSpace : dls.MaxReservedSpace; extVehicle.laneSpeedRandInterval = dls.LaneSpeedRandInterval; extVehicle.maxOptLaneChanges = dls.MaxOptLaneChanges; extVehicle.maxUnsafeSpeedDiff = dls.MaxUnsafeSpeedDiff; extVehicle.minSafeSpeedImprovement = dls.MinSafeSpeedImprovement; extVehicle.minSafeTrafficImprovement = dls.MinSafeTrafficImprovement; } extVehicle.dlsReady = true; }