lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
103 lines • 3.4 kB
JavaScript
import { getPhysXLoaded } from "../../states/usePhysXLoaded";
import { physxPtr } from "../../pointers/physxPtr";
let pxVec;
let pxVec_;
let pxVec__;
let pxExtendedVec;
let pxQuat;
let pxTransform;
let pxTransform_;
let pxTransform__;
getPhysXLoaded((loaded) => {
if (!loaded)
return;
const val = physxPtr[0];
pxVec = val.pxVec;
pxVec_ = val.pxVec_;
pxVec__ = val.pxVec__;
pxExtendedVec = val.pxExtendedVec;
pxQuat = val.pxQuat;
pxTransform = val.pxTransform;
pxTransform_ = val.pxTransform_;
pxTransform__ = val.pxTransform__;
});
export const setPxVec = (x, y, z) => {
pxVec.set_x(x);
pxVec.set_y(y);
pxVec.set_z(z);
return pxVec;
};
export const setPxVec_ = (x, y, z) => {
pxVec_.set_x(x);
pxVec_.set_y(y);
pxVec_.set_z(z);
return pxVec_;
};
export const setPxVec__ = (x, y, z) => {
pxVec__.set_x(x);
pxVec__.set_y(y);
pxVec__.set_z(z);
return pxVec__;
};
export const setPxExtendedVec = (x, y, z) => {
pxExtendedVec.set_x(x);
pxExtendedVec.set_y(y);
pxExtendedVec.set_z(z);
return pxExtendedVec;
};
export const assignPxVec = (pt) => setPxVec(pt.x, pt.y, pt.z);
export const assignPxVec_ = (pt) => setPxVec_(pt.x, pt.y, pt.z);
export const assignPxExtendedVec = (pt) => setPxExtendedVec(pt.x, pt.y, pt.z);
export const setPxQuat = (x, y, z, w) => {
pxQuat.set_x(x);
pxQuat.set_y(y);
pxQuat.set_z(z);
pxQuat.set_w(w);
return pxQuat;
};
export const assignPxQuat = (q) => setPxQuat(q.x, q.y, q.z, q.w);
export const assignPxTransform = (manager) => {
pxTransform.set_p(assignPxVec(manager.position));
pxTransform.set_q(assignPxQuat(manager.quaternion));
return pxTransform;
};
export const assignPxTransform_ = (manager) => {
pxTransform_.set_p(assignPxVec(manager.position));
pxTransform_.set_q(assignPxQuat(manager.quaternion));
return pxTransform_;
};
export const setPxTransform = (x, y, z, qx = 0, qy = 0, qz = 0, qw = 1) => {
pxTransform.set_p(setPxVec(x, y, z));
pxTransform.set_q(setPxQuat(qx, qy, qz, qw));
return pxTransform;
};
export const setPxTransform_ = (x, y, z, qx = 0, qy = 0, qz = 0, qw = 1) => {
pxTransform_.set_p(setPxVec(x, y, z));
pxTransform_.set_q(setPxQuat(qx, qy, qz, qw));
return pxTransform_;
};
export const setPxTransform__ = (x, y, z, qx = 0, qy = 0, qz = 0, qw = 1) => {
pxTransform__.set_p(setPxVec(x, y, z));
pxTransform__.set_q(setPxQuat(qx, qy, qz, qw));
return pxTransform__;
};
const rotate = (q0, v) => {
const { w, x, y, z } = q0;
const vx = 2.0 * v.x;
const vy = 2.0 * v.y;
const vz = 2.0 * v.z;
const w2 = w * w - 0.5;
const dot2 = x * vx + y * vy + z * vz;
return setPxVec(vx * w2 + (y * vz - z * vy) * w + x * dot2, vy * w2 + (z * vx - x * vz) * w + y * dot2, vz * w2 + (x * vy - y * vx) * w + z * dot2);
};
const vecPlus = (v0, v) => setPxVec_(v0.x + v.x, v0.y + v.y, v0.z + v.z);
const quatMult = (q0, q) => {
const { w, x, y, z } = q0;
return setPxQuat(w * q.x + q.w * x + y * q.z - q.y * z, w * q.y + q.w * y + z * q.x - q.z * x, w * q.z + q.w * z + x * q.y - q.x * y, w * q.w - x * q.x - y * q.y - z * q.z);
};
export const multPxTransform = (t0, t1) => {
pxTransform.set_p(vecPlus(rotate(t0.q, t1.p), t0.p));
pxTransform.set_q(quatMult(t0.q, t1.q));
return pxTransform;
};
//# sourceMappingURL=pxMath.js.map