kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
62 lines (61 loc) • 2.63 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof3 = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAllMeshes = getAllMeshes;
exports.objectsCompare = objectsCompare;
exports.objectsMap = objectsMap;
exports.vectorIntersectWithMesh = vectorIntersectWithMesh;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var Three = _interopRequireWildcard(require("three"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
String.prototype.isLeftPlaceholder = function () {
return this.match(/_L$|_L_\d$/) != null;
};
String.prototype.isRightPlaceholder = function () {
return this.match(/_R$|_R_\d$/) != null;
};
function objectsMap(object, func) {
var mappedObject = {};
for (var key in object) {
mappedObject[key] = func(key, mappedObject[key]);
}
return mappedObject;
}
function objectsCompare(x, y) {
if (x === y) return true;
if (!(x instanceof Object) || !(y instanceof Object)) return false;
if (x.constructor !== y.constructor) return false;
for (var p in x) {
if (!x.hasOwnProperty(p)) continue;
if (!y.hasOwnProperty(p)) return false;
if (x[p] === y[p]) continue;
if ((0, _typeof2["default"])(x[p]) !== 'object') return false;
if (!objectsCompare(x[p], y[p])) return false;
}
for (var _p in y) {
if (y.hasOwnProperty(_p) && !x.hasOwnProperty(_p)) return false;
}
return true;
}
function getAllMeshes(objects) {
var meshes = [];
objects.forEach(function (object) {
if (!object) return;
object.traverse(function (o) {
if (o.isMesh && o.geometry) {
meshes.push(o);
}
});
});
return meshes;
}
function vectorIntersectWithMesh(origin, target) {
var vectorDir = new Three.Vector3(origin.x, origin.y - 1000, origin.z);
var ray = new Three.Raycaster();
ray.set(origin, vectorDir);
var intersects = ray.intersectObject(target, true);
return intersects.length > 0;
}