package org.mt4jx.input.gestureAction; import org.mt4j.components.MTCanvas; import org.mt4j.components.MTComponent; import org.mt4j.input.inputProcessors.IGestureEventListener; import org.mt4j.input.inputProcessors.MTGestureEvent; import org.mt4j.input.inputProcessors.componentProcessors.dragProcessor.DragEvent; import org.mt4j.util.camera.Icamera; import org.mt4jx.components.visibleComponents.widgets.MTDepthHelper; import processing.core.PApplet; public class CreateDragHelperAction implements IGestureEventListener{ private PApplet pApplet; private MTCanvas canvas; private Icamera cam; private MTComponent targetComponent; private MTDepthHelper depthHelper; /** * to scale to the correct size after zooming * the distance between camera and near plane * wihtout zoom is needed */ private float zDistanceWithoutZoom; public CreateDragHelperAction(PApplet v_pApplet,MTCanvas v_canvas,Icamera v_cam,MTComponent v_targetComponent) { this.pApplet = v_pApplet; this.canvas = v_canvas; this.cam = v_cam; this.targetComponent = v_targetComponent; this.zDistanceWithoutZoom = cam.getFrustum().getZValueOfNearPlane(); } public boolean processGestureEvent(MTGestureEvent ge) { if(ge instanceof DragEvent) { DragEvent evt = (DragEvent)ge; switch (evt.getId()) { case MTGestureEvent.GESTURE_STARTED: depthHelper = new MTDepthHelper(pApplet,targetComponent,cam,canvas); canvas.addChild(depthHelper); break; case MTGestureEvent.GESTURE_UPDATED: break; case MTGestureEvent.GESTURE_ENDED: deleteDepthHelper(); break; } } return false; } private void deleteDepthHelper() { canvas.removeChild(depthHelper); } }