package org.mt4jx.input.gestureAction; import org.mt4j.components.MTComponent; import org.mt4j.components.interfaces.IMTComponent3D; import org.mt4j.input.inputProcessors.IGestureEventListener; import org.mt4j.input.inputProcessors.MTGestureEvent; import org.mt4j.input.inputProcessors.componentProcessors.dragProcessor.DragEvent; public class CollisionDragAction implements IGestureEventListener { private IMTComponent3D dragTarget; private boolean useCustomTarget; private boolean gestureAborted = false; public CollisionDragAction(){ this.useCustomTarget = false; } public CollisionDragAction(IMTComponent3D dragTarget){ this.dragTarget = dragTarget; this.useCustomTarget = true; } public boolean processGestureEvent(MTGestureEvent ge) { if (ge instanceof DragEvent){ DragEvent dragEvent = (DragEvent)ge; if (!useCustomTarget) dragTarget = dragEvent.getTarget(); switch (dragEvent.getId()) { case MTGestureEvent.GESTURE_STARTED: //Put target on top -> draw on top of others if (dragTarget instanceof MTComponent){ MTComponent baseComp = (MTComponent)dragTarget; baseComp.sendToFront(); /* //End all animations of the target Animation[] animations = AnimationManager.getInstance().getAnimationsForTarget(dragTarget); for (int i = 0; i < animations.length; i++) { Animation animation = animations[i]; animation.stop(); } */ } dragTarget.translateGlobal(dragEvent.getTranslationVect()); break; case MTGestureEvent.GESTURE_UPDATED: if(!isGestureAborted()) { dragTarget.translateGlobal(dragEvent.getTranslationVect()); } break; case MTGestureEvent.GESTURE_ENDED: break; default: break; } } return false; } public void setGestureAborted(boolean gestureAborted) { this.gestureAborted = gestureAborted; } public boolean isGestureAborted() { return gestureAborted; } }