feat: polish nightdrive road sun and signage

This commit is contained in:
2026-09-03 00:29:26 +03:00
parent bc18bc2043
commit a03d4d8dba
44 changed files with 1208 additions and 202 deletions

View File

@@ -0,0 +1,31 @@
export interface TravelDistance {
advance(deltaSeconds: number, speed: number, roadEnergy: number): number;
snapshot(): number;
}
const MAX_FRAME_SECONDS = 0.1;
const CRUISE_UNITS_PER_SECOND = 18;
const SPEED_UNITS_PER_SECOND = 54;
const ENERGY_UNITS_PER_SECOND = 48;
export function createTravelDistance(): TravelDistance {
let distance = 0;
return {
advance(deltaSeconds, speed, roadEnergy) {
if (!Number.isFinite(deltaSeconds) || deltaSeconds <= 0) return distance;
const dt = Math.min(MAX_FRAME_SECONDS, deltaSeconds);
distance += dt * (
CRUISE_UNITS_PER_SECOND
+ clamp01(speed) * SPEED_UNITS_PER_SECOND
+ clamp01(roadEnergy) * ENERGY_UNITS_PER_SECOND
);
return distance;
},
snapshot: () => distance,
};
}
function clamp01(value: number): number {
return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 0;
}