UNPKG

awv3

Version:
375 lines (331 loc) 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require("babel-runtime/helpers/extends"); var _extends3 = _interopRequireDefault(_extends2); var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _three = require("three"); var THREE = _interopRequireWildcard(_three); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Ccref = function () { function Ccref(sketcher, id) { (0, _classCallCheck3.default)(this, Ccref); if (typeof id !== "string" && typeof id !== "number") throw new Error("Creating Ccref with bad parameters"); this.sketcher = sketcher; this.id = id; } (0, _createClass3.default)(Ccref, [{ key: "getMatrixWorld", // return local-to-world transformation as a THREE matrix value: function getMatrixWorld() { var state = this.state; var vec3 = function vec3(name) { var v = state.coordinateSystem[name]; return new THREE.Vector3(v[0], v[1], v[2]); }; // Object tree has world (not local) coordinates var matrix = new THREE.Matrix4(); var vx = vec3(1), vy = vec3(2), vz = vec3(3), orig = vec3(0); matrix.makeBasis(vx, vy, vz); matrix.setPosition(orig); return matrix; } }, { key: "updateGraphics", value: function updateGraphics() { if (this.graphics) { this.graphics.updateFromGeomParams(this.geomParams); this.graphics.updateFromSketcherAndId(this.sketcher, this.id); this.sketcher.refresh(); } } }, { key: "updateGraphicsRecursive", value: function updateGraphicsRecursive() { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(this.descendants), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var obj = _step.value; obj.updateGraphics(); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } }, { key: "getNamedChild", value: function getNamedChild(childName) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(this.state.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var id = _step2.value; var child = new Ccref(this.sketcher, id); if (child.state.name === childName) return child; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } }, { key: "isConstraint", value: function isConstraint() { return this.state.class.startsWith('CC_2D') && this.state.class.endsWith('Constraint'); } }, { key: "isPoint", value: function isPoint() { return this.state.class === 'CC_Point'; } }, { key: "isStartPoint", value: function isStartPoint() { return this.state.name === 'startPoint'; } }, { key: "isEndPoint", value: function isEndPoint() { return this.state.name === 'endPoint'; } }, { key: "isCenterPoint", value: function isCenterPoint() { return this.state.name === 'center'; } }, { key: "isSubPoint", value: function isSubPoint() { return this.isPoint() && (this.isStartPoint() || this.isEndPoint() || this.isCenterPoint()); } }, { key: "isLine", value: function isLine() { return this.state.class === 'CC_Line'; } }, { key: "isArc", value: function isArc() { return this.state.class === 'CC_Arc'; } }, { key: "isSketch", value: function isSketch() { return this.state.class === 'CC_Sketch'; } }, { key: "pointType", value: function pointType() { return this.state.name.replace('Point', ''); } }, { key: "graphics", get: function get() { return this.sketcher.graphics.get(this.id); } }, { key: "state", get: function get() { return this.sketcher.tree[this.id]; } }, { key: "tree", get: function get() { return this.sketcher.connection.resolveTree(this.id)[0]; } }, { key: "pos", get: function get() { return new THREE.Vector3().fromArray(this.state.members.pos.value); } }, { key: "entities", get: function get() { var _this = this; return this.state.members.entities.members.map(function (e) { return new Ccref(_this.sketcher, e.value); }); } }, { key: "parent", get: function get() { var parentId = this.state.parent; return parentId ? new Ccref(this.sketcher, parentId) : undefined; } }, { key: "children", get: function get() { var _this2 = this; return (this.state.children || []).map(function (child) { return new Ccref(_this2.sketcher, child); }); } }, { key: "descendants", get: function get() { return _regenerator2.default.mark(function descendants(ccref) { var _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, child; return _regenerator2.default.wrap(function descendants$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _iteratorNormalCompletion3 = true; _didIteratorError3 = false; _iteratorError3 = undefined; _context.prev = 3; _iterator3 = (0, _getIterator3.default)(ccref.children); case 5: if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) { _context.next = 11; break; } child = _step3.value; return _context.delegateYield(child.descendants, "t0", 8); case 8: _iteratorNormalCompletion3 = true; _context.next = 5; break; case 11: _context.next = 17; break; case 13: _context.prev = 13; _context.t1 = _context["catch"](3); _didIteratorError3 = true; _iteratorError3 = _context.t1; case 17: _context.prev = 17; _context.prev = 18; if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } case 20: _context.prev = 20; if (!_didIteratorError3) { _context.next = 23; break; } throw _iteratorError3; case 23: return _context.finish(20); case 24: return _context.finish(17); case 25: _context.next = 27; return ccref; case 27: case "end": return _context.stop(); } } }, descendants, this, [[3, 13, 17, 25], [18,, 20, 24]]); })(this); } }, { key: "encompassing", get: function get() { var parent = this.parent; return parent.state.class === 'CC_Line' || parent.state.class === 'CC_Arc' ? parent : this; } }, { key: "startPoint", get: function get() { return this.getNamedChild("startPoint"); } }, { key: "endPoint", get: function get() { return this.getNamedChild("endPoint"); } }, { key: "center", get: function get() { return this.getNamedChild("center"); } }, { key: "geomParams", get: function get() { if (this.sketcher.transientGeomParams.has(this.id)) return this.sketcher.transientGeomParams.get(this.id); var geomParams = { class: this.state.class, coordinateSystem: this.getMatrixWorld(), scale: this.sketcher.graphicScale }; if (this.isConstraint()) return (0, _extends3.default)({}, geomParams, { entities: this.entities, value: this.state.members.value || {} }); switch (this.state.class) { case 'CC_Point': return (0, _extends3.default)({}, geomParams, { start: this.pos }); case 'CC_Line': return (0, _extends3.default)({}, geomParams, { start: this.startPoint.pos, end: this.endPoint.pos }); case 'CC_Arc': return (0, _extends3.default)({}, geomParams, { start: this.startPoint.pos, end: this.endPoint.pos, center: this.center.pos, clockwise: this.state.members.bulge.value < 0, radius: this.state.members.radius.value }); default: return geomParams; } }, set: function set(geomParams) { this.sketcher.transientGeomParams.set(this.id, geomParams); var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = (0, _getIterator3.default)(this.children), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var child = _step4.value; child.geomParams = (0, _extends3.default)({}, geomParams, { start: geomParams[child.pointType()], end: undefined, center: undefined }); } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } } }]); return Ccref; }(); exports.default = Ccref;