Files
discord-decomp/_bundle/bezier.js
T
2026-11-01 12:12:55 +02:00

116 lines
3.5 KiB
JavaScript

// Metro module 365 (f366).
let c379_0 = 0.1;
let c379_1 = typeof globalThis.Float32Array === "function";
export default function bezier(a0, a1, a2, a3) {
let c12280_4;
let c12280_0 = a0;
if (a0 >= 0 && a0 <= 1 && a2 >= 0 && a2 <= 1) {
const r28 = c379_1 ? new Float32Array(11) : new Array(11);
L11: {
c12280_4 = r28;
let r1 = 0;
if (a0 === a1) {
r1 = 0;
if (a2 === a3) {
break L11;
}
}
do {
const r4 = r1 * c379_0;
r28[r1] = (((1 - 3 * a2 + 3 * a0) * r4 + (3 * a2 - 6 * a0)) * r4 + 3 * a0) * r4;
r1 = r1 + 1;
} while (r1 < 11);
}
return function BezierEasing(a0) {
let r32, r37;
L21: {
if (c12280_0 === a1) {
r32 = a0;
if (a2 === a3) {
break L21;
}
}
let r19 = 0;
if (a0 !== 0) {
let r18 = 1;
if (a0 !== 1) {
const r22 = c12280_4[1] <= a0;
let r3 = 1;
let r9 = 0;
let r1 = 1;
let r4 = 0;
if (r22) {
do {
const r11 = r9 + c379_0;
const r6 = r3 + 1;
r1 = r6;
r4 = r11;
if (r6 === 10) {
break;
}
r37 = c12280_4[r6];
r3 = r6;
r9 = r11;
r1 = r3;
r4 = r9;
} while (r37 <= a0);
}
const r38 = r1 - 1;
let r48 = r4 + (a0 - c12280_4[r38]) / (c12280_4[r38 + 1] - c12280_4[r38]) * c379_0;
const r64 = 3 * (1 - 3 * a2 + 3 * c12280_0) * r48 * r48 + 2 * (3 * a2 - 6 * c12280_0) * r48 + 3 * c12280_0;
let r67 = 0;
let r68 = r48;
if (0.001 <= r64) {
while (true) {
const r104 = 3 * (1 - 3 * a2 + 3 * c12280_0) * r68 * r68 + 2 * (3 * a2 - 6 * c12280_0) * r68 + 3 * c12280_0;
const r105 = r67;
const r106 = r68;
let r107 = r106;
if (r104 !== 0) {
r68 = r106 - ((((1 - 3 * a2 + 3 * c12280_0) * r106 + (3 * a2 - 6 * c12280_0)) * r106 + 3 * c12280_0) * r106 - a0) / r104;
r67 = r105 + 1;
r107 = r68;
if (r67 < 4) {
continue;
}
}
r48 = r107;
break;
}
} else if (r64 !== 0) {
let r0 = r4 + c379_0;
let r72 = 0;
do {
const r8 = r4 + (r0 - r4) / 2;
const r83 = (((1 - 3 * a2 + 3 * c12280_0) * r8 + (3 * a2 - 6 * c12280_0)) * r8 + 3 * c12280_0) * r8 - a0;
let r84 = r0;
const r85 = r4;
const r86 = r72;
let r87 = r8;
if (0 < r83) {
r84 = r8;
r87 = r85;
}
const r89 = Math.abs(r83);
r48 = r8;
if (!(r89 > 1e-7)) {
break;
}
r72 = r86 + 1;
r0 = r84;
r4 = r87;
r48 = r8;
} while (r72 < 10);
}
r18 = (((1 - 3 * a3 + 3 * a1) * r48 + (3 * a3 - 6 * a1)) * r48 + 3 * a1) * r48;
}
r19 = r18;
}
r32 = r19;
}
return r32;
};
}
throw new Error("bezier x values must be in [0, 1] range");
};