📄 jogldrawingarea.java
字号:
(m & e.BUTTON1_DOWN_MASK) != 0 ) { canvas.setCursor(camrotateCursor); } else if ( interactionMode == CAMERA_INTERACTION_MODE && (m & e.BUTTON2_DOWN_MASK) != 0 ) { canvas.setCursor(camtranslateCursor); } else if ( interactionMode == CAMERA_INTERACTION_MODE && (m & e.BUTTON3_DOWN_MASK) != 0 ) { canvas.setCursor(camadvanceCursor); } else { canvas.setCursor(selectCursor); } if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMousePressedEventAwt(e) ) { ; } else if ( interactionMode == SELECT_INTERACTION_MODE || interactionMode == TRANSLATE_INTERACTION_MODE || interactionMode == ROTATE_INTERACTION_MODE || interactionMode == SCALE_INTERACTION_MODE ) { boolean composite = false; if ( ((e.getModifiersEx()) & e.CTRL_DOWN_MASK) != 0x0 ) { composite = true; } int oldThingSelected = theScene.selectedThings.firstSelected(); view = views.get(selectedView); if ( mouseView == null ) { return; } mouseView.updateMouseEvent(e, globalViewportXSize, globalViewportYSize); theScene.activeCamera = view.getCamera(); theScene.selectObjectWithMouse(e.getX(), e.getY(), composite, parent.visualDebugRay); int firstThingSelected = theScene.selectedThings.firstSelected(); if ( oldThingSelected >= 0 && firstThingSelected < 0 && interactionMode == TRANSLATE_INTERACTION_MODE && translationGizmo.isActive() ) { theScene.selectedThings.select(oldThingSelected); firstThingSelected = theScene.selectedThings.firstSelected(); } if ( firstThingSelected >= 0 ) { //------------------------------------------------------------ Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); Matrix4x4 composed; position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; translationGizmo.setCamera(mouseView.getCamera()); translationGizmo.setTransformationMatrix(composed); translationGizmo.processMousePressedEventAwt(e); //------------------------------------------------------------ } reportObjectSelection(); } canvas.repaint(); } public void mouseReleased(MouseEvent e) { JoglView view = views.get(selectedView); JoglView mouseView = getSelectedView(e, false); // WARNING / TODO // There should be a cameraController.getFutureAction(e) that calculates // the proper icon for display ... here an Aquynza operation is // assumed and hard-coded int firstThingSelected = theScene.selectedThings.firstSelected(); if ( interactionMode == CAMERA_INTERACTION_MODE ) { canvas.setCursor(camrotateCursor); } else { canvas.setCursor(selectCursor); } if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMouseReleasedEventAwt(e) ) { canvas.repaint(); } else if ( interactionMode == TRANSLATE_INTERACTION_MODE && firstThingSelected >= 0 ) { Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); Matrix4x4 composed; position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; if ( mouseView == null ) { return; } translationGizmo.setCamera(mouseView.getCamera()); translationGizmo.setTransformationMatrix(composed); mouseView.updateMouseEvent(e, globalViewportXSize, globalViewportYSize); if ( translationGizmo.processMouseReleasedEventAwt(e) ) { composed = translationGizmo.getTransformationMatrix(); position.x = composed.M[0][3]; position.y = composed.M[1][3]; position.z = composed.M[2][3]; composed.M[0][3] = 0; composed.M[1][3] = 0; composed.M[2][3] = 0; applyTranslationToSelectedObjects(position); canvas.repaint(); } } } public void mouseClicked(MouseEvent e) { JoglView view = getSelectedView(e, true); JoglView mouseView = getSelectedView(e, false); int firstThingSelected = theScene.selectedThings.firstSelected(); if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMouseClickedEventAwt(e) ) { canvas.repaint(); } else if ( interactionMode == TRANSLATE_INTERACTION_MODE && firstThingSelected >= 0 ) { Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); Matrix4x4 composed; position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; translationGizmo.setCamera(mouseView.getCamera()); translationGizmo.setTransformationMatrix(composed); mouseView.updateMouseEvent(e, globalViewportXSize, globalViewportYSize); if ( translationGizmo.processMouseClickedEventAwt(e) ) { composed = translationGizmo.getTransformationMatrix(); position.x = composed.M[0][3]; position.y = composed.M[1][3]; position.z = composed.M[2][3]; composed.M[0][3] = 0; composed.M[1][3] = 0; composed.M[2][3] = 0; applyTranslationToSelectedObjects(position); canvas.repaint(); } } } public void mouseMoved(MouseEvent e) { //----------------------------------------------------------------- JoglView view = views.get(selectedView); JoglView mouseView = getSelectedView(e, false); //----------------------------------------------------------------- int firstThingSelected = theScene.selectedThings.firstSelected(); if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMouseMovedEventAwt(e) ) { canvas.repaint(); } else if ( interactionMode == TRANSLATE_INTERACTION_MODE && firstThingSelected >= 0 ) { Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); Matrix4x4 composed; position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; translationGizmo.setCamera(mouseView.getCamera()); translationGizmo.setTransformationMatrix(composed); mouseView.updateMouseEvent(e, globalViewportXSize, globalViewportYSize); if ( translationGizmo.processMouseMovedEventAwt(e) ) { composed = translationGizmo.getTransformationMatrix(); position.x = composed.M[0][3]; position.y = composed.M[1][3]; position.z = composed.M[2][3]; composed.M[0][3] = 0; composed.M[1][3] = 0; composed.M[2][3] = 0; applyTranslationToSelectedObjects(position); canvas.repaint(); } } } public void mouseDragged(MouseEvent e) { JoglView view = views.get(selectedView); JoglView mouseView = getSelectedView(e, false); int firstThingSelected = theScene.selectedThings.firstSelected(); if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMouseDraggedEventAwt(e) ) { canvas.repaint(); } else if ( interactionMode == TRANSLATE_INTERACTION_MODE && firstThingSelected >= 0 ) { Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); Matrix4x4 composed; position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; if ( mouseView == null ) { return; } translationGizmo.setCamera(mouseView.getCamera()); translationGizmo.setTransformationMatrix(composed); mouseView.updateMouseEvent(e, globalViewportXSize, globalViewportYSize); if ( translationGizmo.processMouseDraggedEventAwt(e) ) { composed = translationGizmo.getTransformationMatrix(); position.x = composed.M[0][3]; position.y = composed.M[1][3]; position.z = composed.M[2][3]; composed.M[0][3] = 0; composed.M[1][3] = 0; composed.M[2][3] = 0; applyTranslationToSelectedObjects(position); canvas.repaint(); } } } /** WARNING: It is not working... check pending */ public void mouseWheelMoved(MouseWheelEvent e) { System.out.println("."); if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processMouseWheelEventAwt(e) ) { canvas.repaint(); } } public void keyPressed(KeyEvent e) { char unicode_id; int keycode; boolean skipKey = false; unicode_id = e.getKeyChar(); keycode = e.getKeyCode(); int firstThingSelected = theScene.selectedThings.firstSelected(); if ( interactionMode == CAMERA_INTERACTION_MODE && cameraController.processKeyPressedEventAwt(e) ) { ; } else if ( interactionMode == SELECT_INTERACTION_MODE ) { if ( unicode_id == e.CHAR_UNDEFINED ) { switch ( keycode ) { case KeyEvent.VK_LEFT: if ( theScene.selectedDebugThingGroups.numberOfSelections() < 1 ) { theScene.selectedThings.selectPrevious(); } if ( theScene.selectedThings.numberOfSelections() < 1 ) { theScene.selectedDebugThingGroups.selectPrevious(); } reportObjectSelection(); break; case KeyEvent.VK_RIGHT: if ( theScene.selectedDebugThingGroups.numberOfSelections() < 1 ) { theScene.selectedThings.selectNext(); } if ( theScene.selectedThings.numberOfSelections() < 1 ) { theScene.selectedDebugThingGroups.selectNext(); } reportObjectSelection(); break; } } } else if ( interactionMode == TRANSLATE_INTERACTION_MODE ) { if ( firstThingSelected >= 0 ) { Matrix4x4 composed; Vector3D position; SimpleBody gi; gi = theScene.scene.getSimpleBodies().get(firstThingSelected); position = gi.getPosition(); //composed = new Matrix4x4(gi.getRotation()); composed = new Matrix4x4(); composed.M[0][3] = position.x; composed.M[1][3] = position.y; composed.M[2][3] = position.z; translationGizmo.setTransformationMatrix(composed); if ( translationGizmo.processKeyPressedEventAwt(e) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -