/** * Build internal lists buttonDrag, keyDrags, etc from BehaviourMap(?) and InputMap(?). The * internal lists only contain entries for Behaviours that can be actually triggered with the * current InputMap, grouped by Behaviour type, such that hopefully lookup from the event handlers * is fast. */ private void updateInternalMaps() { buttonDrags.clear(); keyDrags.clear(); buttonClicks.clear(); keyClicks.clear(); for (final Entry<InputTrigger, Set<String>> entry : inputMap.getAllBindings().entrySet()) { final InputTrigger buttons = entry.getKey(); final Set<String> behaviourKeys = entry.getValue(); if (behaviourKeys == null) continue; for (final String behaviourKey : behaviourKeys) { final Behaviour behaviour = behaviourMap.get(behaviourKey); if (behaviour == null) continue; if (behaviour instanceof DragBehaviour) { final BehaviourEntry<DragBehaviour> dragEntry = new BehaviourEntry<>(buttons, (DragBehaviour) behaviour); if (buttons.isKeyStroke()) keyDrags.add(dragEntry); else buttonDrags.add(dragEntry); } else if (behaviour instanceof ClickBehaviour) { final BehaviourEntry<ClickBehaviour> clickEntry = new BehaviourEntry<>(buttons, (ClickBehaviour) behaviour); if (buttons.isKeyStroke()) keyClicks.add(clickEntry); else buttonClicks.add(clickEntry); } else if (behaviour instanceof ScrollBehaviour) { final BehaviourEntry<ScrollBehaviour> scrollEntry = new BehaviourEntry<>(buttons, (ScrollBehaviour) behaviour); scrolls.add(scrollEntry); } } } }
public void checkAndPerformTriggers( final Set<InputTrigger> triggers, final Canvas source, final TwoInputStates states, final double tpf) { for (final InputTrigger trigger : triggers) { trigger.performIfValid(source, states, tpf); } }