awv3
Version:
⚡ AWV3 embedded CAD
164 lines (126 loc) • 6.13 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
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 _helpers = require('../../session/helpers');
var _plugin = require('../../session/plugin');
var _plugin2 = _interopRequireDefault(_plugin);
var _object = require('../../three/object3');
var _object2 = _interopRequireDefault(_object);
var _graphics = require('./graphics');
var _graphics2 = _interopRequireDefault(_graphics);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Dimension = function (_Plugin) {
(0, _inherits3.default)(Dimension, _Plugin);
function Dimension(session, args) {
(0, _classCallCheck3.default)(this, Dimension);
var _this = (0, _possibleConstructorReturn3.default)(this, (Dimension.__proto__ || (0, _getPrototypeOf2.default)(Dimension)).call(this, session, (0, _extends3.default)({ type: 'Dimensions' }, args)));
_this.graphics = new _map2.default();
_this.onChange = _this.onChange.bind(_this);
_this.onRemove = _this.onRemove.bind(_this);
_this.unsubscribes = new _map2.default();
return _this;
}
(0, _createClass3.default)(Dimension, [{
key: 'onEnabled',
value: function onEnabled() {
var _this2 = this;
var feature = (this.session.plugins[this.parent] || {}).feature;
if (feature) this.connection.execute('VAR obj, set;\n obj = CADH_RealToId(' + feature + ');\n set = @BaseModelingCommonFuncs.GetDimensionSet(obj);\n set.CreateDimensions(obj);');
this.connection.observe(function (state) {
return state.tree[state.tree.root].dimensions;
}, function (next, prev) {
return (0, _helpers.arrayDiff)(next, prev, function (newDims) {
return newDims.forEach(function (id) {
var tree = _this2.connection.tree;
if (feature && feature !== tree[tree[id].parent].members.owner.value) return; // skip dimensions of different features
_this2.unsubscribes.set(id, _this2.connection.observe(function (state) {
return state.tree[id];
}, _this2.onChange, { fireOnStart: true, onRemove: _this2.onRemove, unsubscribeOnUndefined: true }));
});
});
}, { manager: this.addSubscription.bind(this), fireOnStart: true });
this.pool.createInteraction().on((0, _defineProperty3.default)({}, _object2.default.Events.Lifecycle.Rendered, this.onRender.bind(this)));
}
}, {
key: 'onDisabled',
value: function onDisabled() {
var unsubscribes = [].concat((0, _toConsumableArray3.default)(this.unsubscribes.values()));
unsubscribes.forEach(function (unsubscribe) {
return unsubscribe();
});
}
}, {
key: 'onChange',
value: function onChange(dimension) {
if (!dimension) return;
var id = dimension.id;
var g = void 0;
if (this.graphics.has(id)) {
g = this.graphics.get(id);
} else {
g = (0, _graphics2.default)(dimension.class, this);
this.graphics.set(id, g);
this.pool.add(g);
}
g.updateFromState(dimension, this.tree);
}
}, {
key: 'onRemove',
value: function onRemove(dimension) {
var id = dimension.id;
this.graphics.get(id).destroy();
this.graphics.delete(id);
this.unsubscribes.delete(id);
return;
}
}, {
key: 'onRender',
value: function onRender() {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(this.graphics.values()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var g = _step.value;
g.update();
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}]);
return Dimension;
}(_plugin2.default);
exports.default = Dimension;