39 lines
1.3 KiB
JavaScript
39 lines
1.3 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;
|
|
const computation = buildCreatureComputation(creatureId);
|
|
try {
|
|
computeCreatureComputation(computation);
|
|
writeAlteredProperties(computation);
|
|
writeScope(creatureId, computation.scope);
|
|
} 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);
|
|
}
|
|
}
|
|
|
|
// For now just recompute the whole creature, TODO only recompute a single
|
|
// connected section of the depdendency graph
|
|
export function computeCreatureDependencyGroup(property){
|
|
let creatureId = property.ancestors[0].id;
|
|
computeCreature(creatureId);
|
|
}
|