@micosmo/aframe
Version:
Aframe components, systems and utilities
40 lines (34 loc) • 1.02 kB
JavaScript
/* global THREE */
const degs = rads => rads / Math.PI * 180;
const euler = new THREE.Euler();
export function stringifyRotation(r) {
if (r.isEuler) {
euler.set(r.x, r.y, r.z, r.order);
if (r.order !== "YXZ") {
euler.reorder("YXZ");
}
} else if (r.isMatrix4)
euler.setFromRotationMatrix(r, "YXZ");
else if (r.isQuaternion)
euler.setFromQuaternion(r, "YXZ");
else
throw new Error("I don't know what this rotation even is.", r);
return `${degs(euler.x)} ${degs(euler.y)} ${degs(euler.z)}`;
};
export function instantiate(o) {
if (typeof o === "string") {
const el = document.createElement("container");
el.innerHTML = o;
return el.firstElementChild;
}
throw new Error("Can only instantiate from string for now.");
};
export function isVisibleInScene(el) {
let iter = el.isObject3D ? el : el.object3D;
while (iter !== null) {
if (!iter.visible)
return false;
iter = iter.parent;
}
return true;
}