UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

62 lines 4.84 kB
export function tgdCalcClamp(value, a, b) { const min = Math.min(a, b); const max = Math.max(a, b); if (value < min) return min; if (value > max) return max; return value; } export function tgdCalcMapRange(value, fromMin, fromMax, toMin, toMax, clamp = false) { const v = clamp ? tgdCalcClamp(value, fromMin, fromMax) : value; if (fromMin === fromMax) return v; const alpha = (v - fromMin) / (fromMax - fromMin); return toMin + alpha * (toMax - toMin); } export function tgdCalcMix(valueAtT0, valueAtT1, t) { return (1 - t) * valueAtT0 + t * valueAtT1; } const DEG_PER_RAD = 180 / Math.PI; const RAD_PER_DEG = Math.PI / 180; export function tgdCalcDegToRad(deg) { return deg * RAD_PER_DEG; } export function tgdCalcRadToDeg(rad) { return rad * DEG_PER_RAD; } export function tgdCalcSmoothStep(boundFor0, boundFor1, value) { const t = tgdCalcClamp((value - boundFor0) / (boundFor1 - boundFor0), 0, 1); return t * t * (3 - 2 * t); } /** * Force `value` to be between `min` and `max` by shifting it * by `max - min` as many times as needed. * @example * ```ts * tgdCalcModulo(3, 10, 20) === 13 * tgdCalcModulo(13, 10, 20) === 13 * tgdCalcModulo(23, 10, 20) === 13 * ``` */ export function tgdCalcModulo(value, min, max) { const range = max - min; if (range === 0) return min; if (value < min) { const n = Math.ceil((min - value) / range); return value + n * range; } if (value > max) { const n = Math.ceil((value - max) / range); return value - n * range; } return value; } export function tgdCalcModuloDiscrete(value, size, count) { if (size === 0) return 0; const alpha = tgdCalcModulo(value, 0, size); return Math.floor((count * alpha) / size); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRoL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsQ0FBUyxFQUFFLENBQVM7SUFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDMUIsSUFBSSxLQUFLLEdBQUcsR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFBO0lBQzNCLElBQUksS0FBSyxHQUFHLEdBQUc7UUFBRSxPQUFPLEdBQUcsQ0FBQTtJQUMzQixPQUFPLEtBQUssQ0FBQTtBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsS0FBYSxFQUNiLE9BQWUsRUFDZixPQUFlLEVBQ2YsS0FBYSxFQUNiLEtBQWEsRUFDYixLQUFLLEdBQUcsS0FBSztJQUViLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMvRCxJQUFJLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFFakMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDakQsT0FBTyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxDQUFTO0lBQ3RFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUE7QUFDOUMsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ2pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFBO0FBRWpDLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVztJQUN2QyxPQUFPLEdBQUcsR0FBRyxXQUFXLENBQUE7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVztJQUN2QyxPQUFPLEdBQUcsR0FBRyxXQUFXLENBQUE7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLFNBQWlCLEVBQUUsS0FBYTtJQUNqRixNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDOUIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDdkIsSUFBSSxLQUFLLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFBO0lBRTNCLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUMxQyxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBQzVCLENBQUM7SUFFRCxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDMUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUM1QixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFFLEtBQWE7SUFDNUUsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRXhCLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtBQUM3QyxDQUFDIn0=