lol-anm-parser
Version:
A parser for .anm files from League of Legends.
51 lines (45 loc) • 1.28 kB
JavaScript
/*jslint bitwise: true, browser: true, devel: true, node: true, ass: true, nomen: true, unparam: true, indent: 4 */
(function () {
"use strict";
module.exports = function uncompressQuaternion(flag, sx, sy, sz) {
var fx = 1.41421 * (sx - 0x3FFF) / 0x7FFF,
fy = 1.41421 * (sy - 0x3FFF) / 0x7FFF,
fz = 1.41421 * (sz - 0x3FFF) / 0x7FFF,
fw = Math.sqrt(1 - Math.pow(fx, 2) - Math.pow(fy, 2) - Math.pow(fz, 2)),
quat = {};
switch (flag) {
case 0:
quat.x = fw;
quat.y = fx;
quat.z = fy;
quat.w = fz;
break;
case 1:
quat.x = fx;
quat.y = fw;
quat.z = fy;
quat.w = fz;
break;
case 2:
quat.x = -fx;
quat.y = -fy;
quat.z = -fw;
quat.w = -fz;
break;
case 3:
quat.x = fx;
quat.y = fy;
quat.z = fz;
quat.w = fw;
break;
default:
quat.x = fx;
quat.y = fy;
quat.z = fz;
quat.w = fw;
quat.invalid = true;
quat.flag = flag;
}
return quat;
};
}());