in packages/miew/src/ComplexVisual.js [587:645]
rebuild() {
const self = this;
// Destroy current geometry
gfxutils.clearTree(this);
return new Promise(((resolve) => {
// Nothing to do?
const complex = self._complex;
if (!complex) {
resolve();
return;
}
let errorOccured = false;
setTimeout(() => {
console.time('build');
const reprList = self._reprList;
const palette = palettes.get(settings.now.palette) || palettes.first;
let hasGeometry = false;
for (let i = 0, n = reprList.length; i < n; ++i) {
const repr = reprList[i];
repr.colorer.palette = palette;
if (repr.needsRebuild) {
repr.reset();
try {
repr.buildGeometry(complex);
} catch (e) {
if (e instanceof utils.OutOfMemoryError) {
repr.needsRebuild = false;
repr.reset();
logger.error(`Not enough memory to build geometry for representation ${repr.index + 1}`);
errorOccured = true;
} else {
throw e;
}
}
if (DEBUG && !errorOccured) {
logger.debug(`Triangles count: ${meshutils.countTriangles(repr.geo)}`);
}
}
hasGeometry = errorOccured || hasGeometry || gfxutils.groupHasGeometryToRender(repr.geo);
if (repr.geo) {
self.add(repr.geo);
}
}
self._reprListChanged = false;
console.timeEnd('build');
resolve();
}, 10);
}));
}