Skip to content

Commit

Permalink
Sl-cleanup (#1275)
Browse files Browse the repository at this point in the history
renamed SpeedLimit API:
slow calculations use the Calculate prefix instead of the Get prefix
fast access uses the Get prefix.
  • Loading branch information
kianzarrin authored Jan 7, 2022
1 parent fe93f68 commit 9177ef5
Show file tree
Hide file tree
Showing 12 changed files with 39 additions and 41 deletions.
8 changes: 4 additions & 4 deletions TLM/TLM/Custom/PathFinding/CustomPathFind.cs
Original file line number Diff line number Diff line change
Expand Up @@ -961,7 +961,7 @@ private void ProcessItemMain(

// NON-STOCK CODE START
#if SPEEDLIMITS
prevMaxSpeed = speedLimitManager.GetLockFreeGameSpeedLimit(
prevMaxSpeed = speedLimitManager.GetGameSpeedLimit(
prevSegmentId,
prevLaneIndex,
item.LaneId,
Expand Down Expand Up @@ -2190,7 +2190,7 @@ private void ProcessItemPublicTransport(

#if SPEEDLIMITS
// NON-STOCK CODE START
float nextMaxSpeed = speedLimitManager.GetLockFreeGameSpeedLimit(
float nextMaxSpeed = speedLimitManager.GetGameSpeedLimit(
nextSegmentId,
(byte)nextLaneIndex,
nextLaneId,
Expand Down Expand Up @@ -2728,7 +2728,7 @@ private bool ProcessItemCosts(
float nextMaxSpeed;
#if SPEEDLIMITS
// NON-STOCK CODE START
nextMaxSpeed = speedLimitManager.GetLockFreeGameSpeedLimit(
nextMaxSpeed = speedLimitManager.GetGameSpeedLimit(
nextSegmentId,
(byte)nextLaneIndex,
nextLaneId,
Expand Down Expand Up @@ -3325,7 +3325,7 @@ private void ProcessItemPedBicycle(

#if SPEEDLIMITS
// NON-STOCK CODE START
float nextMaxSpeed = speedLimitManager.GetLockFreeGameSpeedLimit(nextSegmentId, (byte)nextLaneIndex, nextLaneId, nextLaneInfo);
float nextMaxSpeed = speedLimitManager.GetGameSpeedLimit(nextSegmentId, (byte)nextLaneIndex, nextLaneId, nextLaneInfo);

// NON-STOCK CODE END
#else
Expand Down
28 changes: 18 additions & 10 deletions TLM/TLM/Manager/Impl/SpeedLimitManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private SpeedLimitManager() {
/// <param name="finalDir">Direction.</param>
/// <returns>Mean speed limit, average for custom and default lane speeds or null
/// if cannot be determined.</returns>
public SpeedValue? GetCustomSpeedLimit(ushort segmentId, NetInfo.Direction finalDir) {
public SpeedValue? CalculateCustomSpeedLimit(ushort segmentId, NetInfo.Direction finalDir) {
// calculate the currently set mean speed limit
if (segmentId == 0) {
return null;
Expand Down Expand Up @@ -99,7 +99,7 @@ private SpeedLimitManager() {
goto nextIter;
}

SpeedValue? setSpeedLimit = this.GetLaneSpeedLimit(curLaneId);
SpeedValue? setSpeedLimit = this.CalculateLaneSpeedLimit(curLaneId);

if (setSpeedLimit.HasValue) {
// custom speed limit
Expand Down Expand Up @@ -128,11 +128,11 @@ private SpeedLimitManager() {
/// </summary>
/// <param name="laneId">Interested in this lane</param>
/// <returns>Speed limit if set for lane, otherwise 0</returns>
public GetSpeedLimitResult GetCustomSpeedLimit(uint laneId) {
public GetSpeedLimitResult CalculateCustomSpeedLimit(uint laneId) {
//----------------------------------------
// check custom speed limit for the lane
//----------------------------------------
SpeedValue? overrideValue = this.GetLaneSpeedLimit(laneId);
SpeedValue? overrideValue = this.CalculateLaneSpeedLimit(laneId);

//----------------------------
// check default speed limit
Expand Down Expand Up @@ -183,8 +183,8 @@ public GetSpeedLimitResult GetCustomSpeedLimit(uint laneId) {
/// <summary>Determines the currently set speed limit for the given lane.</summary>
/// <param name="laneId">The lane id.</param>
/// <returns>Game units.</returns>
public float GetGameSpeedLimit(uint laneId) {
GetSpeedLimitResult overrideSpeedLimit = this.GetCustomSpeedLimit(laneId);
public float CalculateGameSpeedLimit(uint laneId) {
GetSpeedLimitResult overrideSpeedLimit = this.CalculateCustomSpeedLimit(laneId);
if (overrideSpeedLimit.DefaultValue != null) {
SpeedValue activeLimit = overrideSpeedLimit.OverrideValue ?? overrideSpeedLimit.DefaultValue.Value;
return ToGameSpeedLimit(activeLimit.GameUnits);
Expand All @@ -193,7 +193,15 @@ public float GetGameSpeedLimit(uint laneId) {
return 0f;
}

public float GetLockFreeGameSpeedLimit(ushort segmentId,
public float GetGameSpeedLimit(uint laneId) {
return GetGameSpeedLimit(
segmentId: laneId.ToLane().m_segment,
laneIndex: (byte)LaneUtil.GetLaneIndex(laneId),
laneId: laneId,
laneInfo: LaneUtil.GetLaneInfo(laneId));
}

public float GetGameSpeedLimit(ushort segmentId,
byte laneIndex,
uint laneId,
NetInfo.Lane laneInfo) {
Expand Down Expand Up @@ -265,7 +273,7 @@ private float GetVanillaNetInfoSpeedLimit(NetInfo info) {
/// </summary>
/// <param name="info">the NetInfo of which the custom speed limit should be determined</param>
/// <returns>-1 if no custom speed limit was set</returns>
public float GetCustomNetinfoSpeedLimit(NetInfo info) {
public float CalculateCustomNetinfoSpeedLimit(NetInfo info) {
if (info == null) {
Log._DebugOnlyWarning($"SpeedLimitManager.GetCustomNetinfoSpeedLimit: info is null!");
return -1f;
Expand Down Expand Up @@ -702,7 +710,7 @@ public bool LoadData(List<Configuration.LaneSpeedLimit> data) {
.m_buffer[laneSpeedLimit.laneId]
.m_segment;
NetInfo info = segmentId.ToSegment().Info;
float customSpeedLimit = GetCustomNetinfoSpeedLimit(info);
float customSpeedLimit = CalculateCustomNetinfoSpeedLimit(info);
#if DEBUG
Log._DebugIf(
debugSpeedLimits,
Expand Down Expand Up @@ -947,7 +955,7 @@ public void SetLaneSpeedLimit(ushort segmentId,
}
}

public SpeedValue? GetLaneSpeedLimit(uint laneId) {
public SpeedValue? CalculateLaneSpeedLimit(uint laneId) {
lock(laneSpeedLimitLock_) {
if (laneId <= 0 || !laneSpeedLimit_.TryGetValue(laneId, out float gameUnitsOverride)) {
return null;
Expand Down
2 changes: 1 addition & 1 deletion TLM/TLM/Manager/Impl/TrafficMeasurementManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public ushort CalcLaneRelativeMeanSpeed(ushort segmentId,
uint laneVehicleSpeedLimit = Math.Min(
3u * 8u,
(uint)((Options.customSpeedLimitsEnabled
? SpeedLimitManager.Instance.GetLockFreeGameSpeedLimit(
? SpeedLimitManager.Instance.GetGameSpeedLimit(
segmentId,
laneIndex,
laneId,
Expand Down
2 changes: 1 addition & 1 deletion TLM/TLM/Manager/Impl/VehicleBehaviorManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2487,7 +2487,7 @@ LaneTransitionData[] next1BackTransitions
#endif
NetInfo.Lane next1LaneInfo =
next1SegInfo.m_lanes[currentFwdTransitions[i].laneIndex];
float next1MaxSpeed = SpeedLimitManager.Instance.GetLockFreeGameSpeedLimit(
float next1MaxSpeed = SpeedLimitManager.Instance.GetGameSpeedLimit(
currentFwdTransitions[i].segmentId,
currentFwdTransitions[i].laneIndex,
currentFwdTransitions[i].laneId,
Expand Down
2 changes: 1 addition & 1 deletion TLM/TLM/Patch/_VehicleAI/VehicleAICommons.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public static void CustomCalculateTargetSpeed(VehicleAI instance,
out float maxSpeed) {
if (info.m_lanes != null && info.m_lanes.Length > position.m_lane) {
float laneSpeedLimit = Options.customSpeedLimitsEnabled
? SpeedLimitManager.Instance.GetLockFreeGameSpeedLimit(
? SpeedLimitManager.Instance.GetGameSpeedLimit(
position.m_segment,
position.m_lane,
laneId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private static List<CodeInstruction> GetInstructions() {

private static float GetCustomSpeed(PathUnit.Position position, uint laneID, NetInfo info) {
return Options.customSpeedLimitsEnabled
? SpeedLimitManager.Instance.GetLockFreeGameSpeedLimit(
? SpeedLimitManager.Instance.GetGameSpeedLimit(
position.m_segment,
position.m_lane,
laneID,
Expand Down
8 changes: 4 additions & 4 deletions TLM/TLM/UI/SubTools/SpeedLimits/Overlay/SpeedLimitsOverlay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ private bool DrawSpeedLimitHandles_SegmentCenter(
NetSegment segment = segmentId.ToSegment();
NetInfo neti = segment.Info;
var defaultSpeedLimit = new SpeedValue(
gameUnits: SpeedLimitManager.Instance.GetCustomNetinfoSpeedLimit(info: neti));
gameUnits: SpeedLimitManager.Instance.CalculateCustomNetinfoSpeedLimit(info: neti));

// Render override if interactive, or if readonly info layer and override exists
if (drawEnv.drawDefaults_) {
Expand All @@ -547,9 +547,9 @@ private bool DrawSpeedLimitHandles_SegmentCenter(
// Get speed limit override for segment
//-------------------------------------
SpeedValue? overrideSpeedlimitForward =
SpeedLimitManager.Instance.GetCustomSpeedLimit(segmentId, finalDir: NetInfo.Direction.Forward);
SpeedLimitManager.Instance.CalculateCustomSpeedLimit(segmentId, finalDir: NetInfo.Direction.Forward);
SpeedValue? overrideSpeedlimitBack =
SpeedLimitManager.Instance.GetCustomSpeedLimit(segmentId, finalDir: NetInfo.Direction.Backward);
SpeedLimitManager.Instance.CalculateCustomSpeedLimit(segmentId, finalDir: NetInfo.Direction.Backward);
SpeedValue? drawSpeedlimit = GetAverageSpeedlimit(
forward: overrideSpeedlimitForward,
back: overrideSpeedlimitBack);
Expand Down Expand Up @@ -720,7 +720,7 @@ private bool DrawSpeedLimitHandles_PerLane(

// Get speed limit override for the lane
GetSpeedLimitResult overrideSpeedlimit =
SpeedLimitManager.Instance.GetCustomSpeedLimit(laneId);
SpeedLimitManager.Instance.CalculateCustomSpeedLimit(laneId);

if (!overrideSpeedlimit.OverrideValue.HasValue
|| (overrideSpeedlimit.DefaultValue.HasValue &&
Expand Down
2 changes: 1 addition & 1 deletion TLM/TLM/UI/TrafficManagerTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -984,7 +984,7 @@ private void DebugGuiDisplayLanes(ushort segmentId,
RoutingManager.Instance.CalcInnerSimilarLaneIndex(segmentId, i),
RoutingManager.Instance.CalcOuterSimilarLaneIndex(segmentId, i),
(NetLane.Flags)lanesBuffer[curLaneId].m_flags,
SpeedLimitManager.Instance.GetCustomSpeedLimit(curLaneId).ToString(),
SpeedLimitManager.Instance.CalculateCustomSpeedLimit(curLaneId).ToString(),
VehicleRestrictionsManager.Instance.GetAllowedVehicleTypes(
segmentId,
segmentInfo,
Expand Down
7 changes: 6 additions & 1 deletion TLM/TLM/Util/LaneUtil.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
namespace TrafficManager.Util {
using System;
using TrafficManager.Util.Extensions;
public static class LaneUtil {
/// <summary>
Expand Down Expand Up @@ -27,7 +28,11 @@ public static int GetLaneIndex(uint laneId) {
public static NetInfo.Lane GetLaneInfo(uint laneId) {
int laneIndex = GetLaneIndex(laneId);
ushort segmentId = laneId.ToLane().m_segment;
return segmentId.ToSegment().GetLaneInfo(laneIndex);
try {
return segmentId.ToSegment().GetLaneInfo(laneIndex);
} catch (Exception ex) {
throw new Exception($"laneId:{laneId} segmentId:{segmentId} laneIndex:{laneIndex}", ex);
}
}
}
}
2 changes: 1 addition & 1 deletion TLM/TLM/Util/Record/SpeedLimitLaneRecord.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class SpeedLimitLaneRecord : IRecordable {
InstanceID InstanceID => new InstanceID { NetLane = LaneId };

public void Record() {
GetSpeedLimitResult gsl = SpeedLimitManager.Instance.GetCustomSpeedLimit(this.LaneId);
GetSpeedLimitResult gsl = SpeedLimitManager.Instance.CalculateCustomSpeedLimit(this.LaneId);
this.speedLimit_ = gsl.OverrideValue.HasValue && gsl.OverrideValue.Value.GameUnits > 0f
? gsl.OverrideValue.Value.GameUnits
: (float?)null;
Expand Down
2 changes: 1 addition & 1 deletion TLM/TLM/Util/RoundaboutMassEdit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ private static void FixSegmentRoundabout(ushort segmentId, ushort nextSegmentId)

if (OptionsMassEditTab.RoundAboutQuickFix_RealisticSpeedLimits) {
SpeedValue? targetSpeed = CalculatePreferedSpeed(segmentId);
float defaultSpeed = SpeedLimitManager.Instance.GetCustomNetinfoSpeedLimit(segmentId.ToSegment().Info);
float defaultSpeed = SpeedLimitManager.Instance.CalculateCustomNetinfoSpeedLimit(segmentId.ToSegment().Info);

if (targetSpeed != null && targetSpeed.Value.GetKmph() < defaultSpeed) {
SpeedLimitManager.Instance.SetSegmentSpeedLimit(
Expand Down
15 changes: 0 additions & 15 deletions TLM/TMPE.API/Manager/ISpeedLimitManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,6 @@ public interface ISpeedLimitManager {

public VehicleInfo.VehicleType VehicleTypes { get; }

/// <summary>
/// For use by external code.
/// Retrieves the speed limit for the given lane without locking.
/// </summary>
/// <param name="segmentId">segment id</param>
/// <param name="laneIndex">lane index</param>
/// <param name="laneId">lane id</param>
/// <param name="laneInfo">lane info</param>
/// <returns>speed limit in game units</returns>
[UsedImplicitly]
float GetLockFreeGameSpeedLimit(ushort segmentId,
byte laneIndex,
uint laneId,
NetInfo.Lane laneInfo);

/// <summary>
/// For use by external code.
/// Returns active speed limit for a lane.
Expand Down

0 comments on commit 9177ef5

Please sign in to comment.