UNPKG

@geckos.io/snapshot-interpolation

Version:

A Snapshot Interpolation library for Real-Time Multiplayer Games

64 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.radianLerp = exports.degreeLerp = exports.lerp = void 0; const PI = 3.14159265359; const PI_TIMES_TWO = 6.28318530718; const lerp = (start, end, t) => { return start + (end - start) * t; }; exports.lerp = lerp; // https://gist.github.com/itsmrpeck/be41d72e9d4c72d2236de687f6f53974 const degreeLerp = (start, end, t) => { let result; let diff = end - start; if (diff < -180) { // lerp upwards past 360 end += 360; result = (0, exports.lerp)(start, end, t); if (result >= 360) { result -= 360; } } else if (diff > 180) { // lerp downwards past 0 end -= 360; result = (0, exports.lerp)(start, end, t); if (result < 0) { result += 360; } } else { // straight lerp result = (0, exports.lerp)(start, end, t); } return result; }; exports.degreeLerp = degreeLerp; // https://gist.github.com/itsmrpeck/be41d72e9d4c72d2236de687f6f53974 const radianLerp = (start, end, t) => { let result; let diff = end - start; if (diff < -PI) { // lerp upwards past PI_TIMES_TWO end += PI_TIMES_TWO; result = (0, exports.lerp)(start, end, t); if (result >= PI_TIMES_TWO) { result -= PI_TIMES_TWO; } } else if (diff > PI) { // lerp downwards past 0 end -= PI_TIMES_TWO; result = (0, exports.lerp)(start, end, t); if (result < 0) { result += PI_TIMES_TWO; } } else { // straight lerp result = (0, exports.lerp)(start, end, t); } return result; }; exports.radianLerp = radianLerp; //# sourceMappingURL=lerp.js.map