[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool MoveTool.java,1.2,1.3
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2005-08-19 09:50:52
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12419 Modified Files: MoveTool.java Log Message: added support for 3D movement Index: MoveTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/MoveTool.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** MoveTool.java 5 Aug 2005 11:25:18 -0000 1.2 --- MoveTool.java 19 Aug 2005 09:50:44 -0000 1.3 *************** *** 13,16 **** --- 13,17 ---- import java.awt.event.MouseEvent; + import java.awt.event.KeyEvent; import java.util.List; *************** *** 21,26 **** --- 22,40 ---- */ public class MoveTool extends SelectTool { + /** The logger */ private static Logger log = Logger.getLogger(MoveTool.class); + + /** XY move mode for 3D view */ + private static final int XY = 0; + + /** XZ move mode for 3D view */ + private static final int XZ = 1; + + /** The speed of moving in 3D view */ + private int moveSpeed = 60; + + /** The the moving mode in 3D view */ + private int moveMode = XY; /** *************** *** 37,40 **** --- 51,100 ---- */ protected void dragged(MouseEvent e) { + if (viewType == View.VIEW_3D) { + int x = e.getX(); + int y = e.getY(); + double deltaX = x - pressPos[0]; + double deltaY = y - pressPos[1]; + double[] coords; + if (selectedSurface != null) { + List l = Util.traverse(selectedSurface); + for (int i = 0; i < l.size(); i++) { + Vertex v = (Vertex)l.get(i); + if (moveMode == XY) { + coords = new double[] {v.getX() + deltaX / moveSpeed, + v.getY() - deltaY / moveSpeed, + v.getZ() + 0}; + updateVertex(v, coords); + } else { + coords = new double[] {v.getX() + deltaX / moveSpeed, + v.getY() + 0, + v.getZ() - deltaY / moveSpeed}; + updateVertex(v, coords); + } + } + } else if (selectedEdge != null) { + Vertex to = selectedEdge.getTo(); + Vertex from = selectedEdge.getFrom(); + if (moveMode == XY) { + coords = new double[] {to.getX() + deltaX / moveSpeed, + to.getY() - deltaY / moveSpeed, + to.getZ() + 0}; + updateVertex(to, coords); + coords = new double[] {from.getX() + deltaX / moveSpeed, + from.getY() - deltaY / moveSpeed, + from.getZ() + 0}; + updateVertex(from, coords); + } else { + coords = new double[] {to.getX() + deltaX / moveSpeed, + to.getY() + 0, + to.getZ() - deltaY / moveSpeed}; + updateVertex(to, coords); + coords = new double[] {from.getX() + deltaX / moveSpeed, + from.getY() + 0, + from.getZ() - deltaY / moveSpeed}; + updateVertex(from, coords); + } + } + } if (selectedVertex != null) { int x = e.getX(); *************** *** 53,57 **** coordsa[1] - coordsb[1], coordsa[2] - coordsb[2]}; ! List l = Util.traverse(selectedSurface); for (int i = 0; i < l.size(); i++) { --- 113,117 ---- coordsa[1] - coordsb[1], coordsa[2] - coordsb[2]}; ! List l = Util.traverse(selectedSurface); for (int i = 0; i < l.size(); i++) { *************** *** 86,88 **** --- 146,170 ---- pressPos[1] = e.getY(); } + + /** + * Invoked when a key has been pressed. Lets user control the speed + * and mode of movement. + * @param e The KeyEvent + */ + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_X) { + if (moveSpeed > 13) { + moveSpeed -= 3; + } + } else if (e.getKeyCode() == KeyEvent.VK_Z) { + moveSpeed += 3; + } else if (e.getKeyCode() == KeyEvent.VK_A) { + moveMode = XY; + } else if (e.getKeyCode() == KeyEvent.VK_S) { + moveMode = XZ; + } else { + super.keyPressed(e); + } + glv.repaint(); + } } |