UNPKG

@moderrkowo/jsgl

Version:

Client-side JavaScript library for creating web 2D games. Focusing at objective game.

67 lines (66 loc) 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RandomInRange = exports.Range = exports.InvertedLerp = exports.Lerp = exports.Clamp01 = exports.Clamp = exports.IsInRange = exports.floor = void 0; /** * Speedy floor faster than Math.floor(a) * @param a Value to floor * @returns The floored number */ function floor(a) { return a | a; } exports.floor = floor; /** * Checks is number in range * @param a Value to check * @param min Minimal of range * @param max Maximum of range * @returns is number in range */ function IsInRange(a, min, max) { return a >= min && a <= max; } exports.IsInRange = IsInRange; /** * Clamps number between min and max * @param a Value to clamp * @param min The minimum value * @param max The maximum value * @returns Clamped number */ function Clamp(a, min, max) { return Math.min(max, Math.max(min, a)); } exports.Clamp = Clamp; /** * Clamps number between 0 and 1 * @param a Value to clamp * @returns Clamped01 number */ function Clamp01(a) { return Clamp(a, 0, 1); } exports.Clamp01 = Clamp01; /** * A Lerp function returns the value between two numbers at specified decimal midpoints. * @param x The minimum of range * @param y The maximum of range * @param a Decimal midpoint * @returns Value between two numbers */ function Lerp(x, y, a) { return x * (1 - a) + y * a; } exports.Lerp = Lerp; function InvertedLerp(x, y, a) { return Clamp01((a - x) / (y - x)); } exports.InvertedLerp = InvertedLerp; function Range(x1, y1, x2, y2, a) { return Lerp(x2, y2, InvertedLerp(x1, y1, a)); } exports.Range = Range; function RandomInRange(min, max) { return floor(Math.random() * (max - min)) + min; } exports.RandomInRange = RandomInRange;