package org.geogebra.web.geogebra3D.web.input3D; import org.geogebra.common.awt.GPoint; import org.geogebra.common.euclidian.EuclidianControllerCompanion; import org.geogebra.common.euclidian.event.AbstractEvent; import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D; import org.geogebra.common.geogebra3D.input3D.EuclidianControllerInput3DCompanion; import org.geogebra.common.geogebra3D.input3D.Input3D; import org.geogebra.common.kernel.Kernel; import org.geogebra.web.geogebra3D.web.euclidian3D.EuclidianController3DW; public class EuclidianControllerInput3DW extends EuclidianController3DW { protected Input3D input3D; public EuclidianControllerInput3DW(Kernel kernel, Input3D input3D) { super(kernel); this.input3D = input3D; ((EuclidianControllerInput3DCompanion) companion).setInput3D(input3D); } @Override public void updateInput3D() { input3D.update(); } @Override protected EuclidianControllerCompanion newCompanion() { return new EuclidianControllerInput3DCompanion(this); } @Override public boolean hasInput3D() { return true; } @Override public GPoint getMouseLoc() { if (input3D.currentlyUseMouse2D()) { return super.getMouseLoc(); } return input3D.getMouseLoc(); } @Override public void wrapMouseReleased(AbstractEvent e) { if (!input3D.wasRightReleased() && !input3D.useQuaternionsForRotate()) { processRightRelease(); return; } super.wrapMouseReleased(e); } private void processRightRelease() { ((EuclidianView3D) getView()).setRotContinueAnimation( app.getMillisecondTime() - timeOld, animatedRotSpeed); } }