@Override public void setChildren(final List<? extends ISymbol> children) { for (final ISymbol c : children) { if (c instanceof FsmEnterStatement) { enterActions = (FsmEnterStatement) c; } else if (c instanceof FsmExitStatement) { exitActions = (FsmExitStatement) c; } else if (c instanceof FsmTransitionStatement) { transitions.add((FsmTransitionStatement) c); } } children.remove(enterActions); children.remove(exitActions); children.removeAll(transitions); transitionsSize = transitions.size(); super.setChildren(children); }
protected String evaluateTransitions(final IScope scope) throws GamaRuntimeException { final IAgent agent = scope.getAgentScope(); for (int i = 0; i < transitionsSize; i++) { final FsmTransitionStatement transition = transitions.get(i); if (transition.evaluatesTrueOn(scope)) { final String futureState = transition.getName(); haltOn(scope); transition.executeOn(scope); scope.setAgentVarValue(agent, STATE, futureState); return futureState; } } if (!agent.dead()) { scope.saveAllVarValuesIn((Map) agent.getAttribute(STATE_MEMORY)); } return name; }