SequenceDiagram/scripts/sequence/renderer/components/Activation.mjs

40 lines
1.0 KiB
JavaScript

import BaseComponent, {register} from './BaseComponent.mjs';
export default class Activation extends BaseComponent {
radius(activated, env) {
return activated ? env.theme.agentLineActivationRadius : 0;
}
separationPre({agentIDs, activated}, env) {
const r = this.radius(activated, env);
agentIDs.forEach((id) => {
const agentInfo = env.agentInfos.get(id);
agentInfo.currentRad = r;
agentInfo.currentMaxRad = Math.max(agentInfo.currentMaxRad, r);
});
}
renderPre({agentIDs, activated}, env) {
const r = this.radius(activated, env);
agentIDs.forEach((id) => {
const agentInfo = env.agentInfos.get(id);
agentInfo.currentMaxRad = Math.max(agentInfo.currentMaxRad, r);
});
}
render({agentIDs, activated}, env) {
const r = this.radius(activated, env);
agentIDs.forEach((id) => {
env.drawAgentLine(id, env.primaryY);
env.agentInfos.get(id).currentRad = r;
});
return env.primaryY + env.theme.actionMargin;
}
renderHidden(stage, env) {
this.render(stage, env);
}
}
register('agent activation', new Activation());