Files
DiceCloud/app/imports/api/engine/computeCreature.js
Stefan Zermatten 78cd8ffc8d Creatures are now cached in memory for computation
Also removed dependency group calculation because the optimisation isn't
as useful to reduce DB calls if the creature is in memory anyway
2022-05-11 13:30:33 +02:00

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);
}
}