jsketcher/web/app/cad/scene/selectionMarker/selectionMarkerPlugin.js
2018-11-29 17:10:58 -08:00

27 lines
932 B
JavaScript

import {EDGE, FACE, SHELL, SKETCH_OBJECT} from '../entites';
import {findDiff} from '../../../../../modules/gems/iterables';
export function activate({streams, services}) {
let selectionSync = entity => ([old, curr]) => {
let [, toWithdraw, toMark] = findDiff(old, curr);
toWithdraw.forEach(id => {
let model = services.cadRegistry.findEntity(entity, id);
if (model) {
model.ext.view.withdraw();
}
});
toMark.forEach(id => {
let model = services.cadRegistry.findEntity(entity, id);
if (model) {
model.ext.view.mark();
}
});
services.viewer.requestRender();
};
streams.selection.face.pairwise([]).attach(selectionSync(FACE));
streams.selection.shell.pairwise([]).attach(selectionSync(SHELL));
streams.selection.edge.pairwise([]).attach(selectionSync(EDGE));
streams.selection.sketchObject.pairwise([]).attach(selectionSync(SKETCH_OBJECT));
}