awv3
Version:
⚡ AWV3 embedded CAD
285 lines (240 loc) • 10.4 kB
JavaScript
'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;