package de.andreasvoelker; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLCapabilitiesImmutable; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.awt.GLCanvas; import com.jogamp.opengl.util.Animator; import org.jetbrains.annotations.NotNull; import java.awt.event.*; public class BlochFrame extends GLCanvas { final @NotNull BlochRenderer renderer; final @NotNull Animator animator; final RenderState state; class MyMouseMotionListener implements MouseMotionListener { int prevX, prevY; @Override public void mouseDragged(@NotNull MouseEvent e) { int dx = e.getX()-prevX; int dy = e.getY()-prevY; state.setPitch(state.getPitch()+0.01f*dx); state.setYaw(state.getYaw()+0.01f*dy); prevX = e.getX(); prevY = e.getY(); } @Override public void mouseMoved(@NotNull MouseEvent e) { prevX = e.getX(); prevY = e.getY(); } } class MyMouseWheelListener implements MouseWheelListener { @Override public void mouseWheelMoved(@NotNull MouseWheelEvent e) { System.out.println("Executed"); System.out.println(e.getWheelRotation()); state.setRadius(state.getRadius()+0.1f*(float)e.getWheelRotation()); } } BlochFrame(RenderState state){ super(getCapabilities()); this.state = state; renderer = new BlochRenderer(state); addGLEventListener(renderer); setSize(400, 400); animator = new Animator(this); animator.start(); addMouseMotionListener(this.new MyMouseMotionListener()); addMouseWheelListener(this.new MyMouseWheelListener()); } private static @NotNull GLCapabilitiesImmutable getCapabilities() { final GLProfile profile = GLProfile.get(GLProfile.GL2); return new GLCapabilities(profile); } }