This methode add the handler to the {@link EventHandlerSet} associated with the specified{@link AiEventType}
* @param handler the handler to be added */ public void addHandler(EventHandler handler) { EventHandlerSet set = _eventHandlers.get(handler.getEvenType()); if (set == null) { set = new EventHandlerSet(handler, TaskPriority.PR_NORMAL); _eventHandlers.put(handler.getEvenType(), set); } else { set.addHandler(handler); } } public void addHandlerSet(AiEventType event, EventHandlerSet set) { _eventHandlers.put(event, set); } public class QueueEventRunner implements Runnable { private EventHandlerSet _set; private AiParameters _ai; private AiEvent _event; public QueueEventRunner(EventHandlerSet set, AiParameters ai, AiEvent event) { _set = set; _ai = ai; _event = event; } public void run() { for (EventHandler handler : _set.getHandlers()) handler.runImpl(_ai, _event); AiInstance.this.launchNextEvent(_ai); } } /** * @param _aiParams * */ public void launchNextEvent(AiParameters aiParams) { if (aiParams.hasEvents()) { AiEvent event = aiParams.nextEvent(); AiManager.getInstance().executeEventHandler(new QueueEventRunner(_eventHandlers.get(event.getType()), aiParams, event)); } } public void triggerEvent(AiEvent event, AiParameters aiParams) { if (aiParams.isEventInhibited(event.getType())) return; boolean restart = false; synchronized (aiParams) { // if there was no events in the queue start processing events after we add them. if (!aiParams.hasEvents()) { restart = true; } aiParams.queueEvents(event); if (restart) this.launchNextEvent(aiParams); } } public AiPlugingParameters getPluginingParamaters() { return _pluginigParams; } public Collection