UNPKG

awv3

Version:
285 lines (240 loc) 10.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _entries = require('babel-runtime/core-js/object/entries'); var _entries2 = _interopRequireDefault(_entries); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _three = require('three'); var THREE = _interopRequireWildcard(_three); var _ccbaseref = require('./ccbaseref'); var _ccbaseref2 = _interopRequireDefault(_ccbaseref); var _type = require('./constraint/type'); var ConstraintType = _interopRequireWildcard(_type); 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 (_Ccbaseref) { (0, _inherits3.default)(Ccref, _Ccbaseref); function Ccref(sketcher, id) { (0, _classCallCheck3.default)(this, Ccref); var _this = (0, _possibleConstructorReturn3.default)(this, (Ccref.__proto__ || (0, _getPrototypeOf2.default)(Ccref)).call(this)); _this.sketcher = sketcher; _this.id = id; return _this; } (0, _createClass3.default)(Ccref, [{ 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: 'getMember', value: function getMember(name) { var wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; var raw = this.state.members[name]; switch (wrap) { case 'Ccref': return new Ccref(this.sketcher, raw.value || raw.id); case 'Vector3': return new THREE.Vector3().fromArray(raw.value); default: return raw; } } }, { key: 'getNamedChild', value: function getNamedChild(childName) { return this.children.find(function (child) { return child.state.name === childName; }); } }, { 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 this.getMember('pos', 'Vector3'); } }, { key: 'class', get: function get() { return this.state.class; } }, { key: 'entities', get: function get() { var _this2 = this; return this.state.members.entities.members.map(function (e) { return new Ccref(_this2.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 _this3 = this; return (this.state.children || []).map(function (child) { return new Ccref(_this3.sketcher, child); }); } // local-to-world transformation as a THREE matrix }, { key: 'matrixWorld', get: function get() { var _state$coordinateSyst = this.state.coordinateSystem.map(function (row) { return new THREE.Vector3().fromArray(row); }), _state$coordinateSyst2 = (0, _slicedToArray3.default)(_state$coordinateSyst, 4), orig = _state$coordinateSyst2[0], vx = _state$coordinateSyst2[1], vy = _state$coordinateSyst2[2], vz = _state$coordinateSyst2[3]; return new THREE.Matrix4().makeBasis(vx, vy, vz).setPosition(orig); } }, { key: 'geomParams', get: function get() { var _this4 = this; var geomParams = { coordinateSystem: this.matrixWorld, scale: this.sketcher.graphicScale }; if (this.sketcher.transientGeomParams.has(this.id)) return (0, _extends3.default)({}, this.sketcher.transientGeomParams.get(this.id), geomParams); if (this.isConstraint()) { var textureName = (0, _entries2.default)(ConstraintType).find(function (_ref) { var _ref2 = (0, _slicedToArray3.default)(_ref, 2), name = _ref2[0], typeObject = _ref2[1]; return typeObject.type === _this4.class; })[0]; return (0, _extends3.default)({}, geomParams, { coordinateSystem: this.parent.matrixWorld, // constraints have incorrect server-side csys class: this.class, entities: this.entities, texture: this.sketcher.textures[textureName], value: { type: (this.state.members.type || {}).value, userValue: (this.state.members.userValue || {}).value, value: (this.state.members.value || {}).value } }); } switch (this.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 }); case 'CC_Circle': return (0, _extends3.default)({}, geomParams, { center: this.center.pos, radius: this.state.members.radius.value }); default: return geomParams; } }, set: function set(geomParams) { if (geomParams !== undefined) this.sketcher.transientGeomParams.set(this.id, geomParams);else this.sketcher.transientGeomParams.delete(this.id); var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(this.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var child = _step2.value; child.geomParams = geomParams !== undefined ? { start: geomParams[child.pointType] } : undefined; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } }, { key: 'pointType', get: function get() { return this.state.name.replace('Point', ''); } }]); return Ccref; }(_ccbaseref2.default); exports.default = Ccref;