package curranPhysics; import java.awt.event.MouseEvent; import primitives3D.Object3D; import primitives3D.Vector3D; /** * A class which adds the feature of being able to move particles when in 2D * mode. * * @author Curran Kelleher * */ public class CurranPhysics_MovableBalls extends CurranPhysics { private static final long serialVersionUID = 324142777886101244L; Object3D grabbedObject = null; Vector3D positionOfGrabbedObject = new Vector3D(); protected void updateForEachFrame() { super.updateForEachFrame(); if (grabbedObject != null) grabbedObject.setCenterPoint(positionOfGrabbedObject); } public void mouseDragged(MouseEvent e) { if (viewer.window.drawFor3D) super.mouseDragged(e); else if (grabbedObject != null) { positionOfGrabbedObject.x = viewer.window.getXvalue(e.getX()); positionOfGrabbedObject.y = viewer.window.getYvalue(e.getY()); grabbedObject.setCenterPoint(positionOfGrabbedObject); //drawObjectsOnBufferImage(); //repaint(); } } public void mousePressed(MouseEvent e) { if (viewer.window.drawFor3D) super.mousePressed(e); else { grabbedObject = viewer.getObjectWhichContainsPoint(e.getPoint()); if (grabbedObject != null) { positionOfGrabbedObject.x = viewer.window.getXvalue(e.getX()); positionOfGrabbedObject.y = viewer.window.getYvalue(e.getY()); } } } public void mouseReleased(MouseEvent e) { if (viewer.window.drawFor3D) super.mouseReleased(e); else grabbedObject = null; } }