Also removed dependency group calculation because the optimisation isn't as useful to reduce DB calls if the creature is in memory anyway
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import buildCreatureComputation from './computation/buildCreatureComputation.js';
|
|
import computeCreatureComputation from './computation/computeCreatureComputation.js';
|
|
import writeAlteredProperties from './computation/writeComputation/writeAlteredProperties.js';
|
|
import writeScope from './computation/writeComputation/writeScope.js';
|
|
import writeErrors from './computation/writeComputation/writeErrors.js';
|
|
|
|
export default function computeCreature(creatureId){
|
|
if (Meteor.isClient) return;
|
|
console.time('Compute');
|
|
const computation = buildCreatureComputation(creatureId);
|
|
computeComputation(computation, creatureId);
|
|
console.timeEnd('Compute');
|
|
}
|
|
|
|
function computeComputation(computation, creatureId) {
|
|
try {
|
|
computeCreatureComputation(computation);
|
|
writeAlteredProperties(computation);
|
|
writeScope(creatureId, computation);
|
|
} catch (e){
|
|
const errorText = e.reason || e.message || e.toString();
|
|
computation.errors.push({
|
|
type: 'crash',
|
|
details: { error: errorText },
|
|
});
|
|
const logError = {
|
|
creatureId,
|
|
computeError: errorText,
|
|
};
|
|
if (e.stack) {
|
|
logError.location = e.stack.split('\n')[1];
|
|
}
|
|
console.error(logError);
|
|
} finally {
|
|
writeErrors(creatureId, computation.errors);
|
|
}
|
|
}
|