Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1.  
  2. private static final float WIDTH = 1200;
  3. private static final float HEIGHT = 800;
  4.  
  5. private double anchorX, anchorY;
  6. private double anchorAngleX =0;
  7. private double anchorAngleY =0;
  8. private final DoubleProperty angleX = new SimpleDoubleProperty(0);
  9. private final DoubleProperty angleY = new SimpleDoubleProperty(0);
  10.  
  11. @Override
  12. public void start(Stage stage) throws Exception {
  13.  
  14. Camera camera = new PerspectiveCamera(true);
  15. camera.setNearClip(1);
  16. camera.setFarClip(10000);
  17. camera.translateZProperty().set(-1000);
  18.  
  19. FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
  20.  
  21. Parent root = fxmlLoader.load();
  22.  
  23. FXMLDocumentController c = fxmlLoader.getController();
  24.  
  25. Scene scene = new Scene(root,1200,900);
  26.  
  27. scene.setCamera(camera);
  28.  
  29. initMouseControl(c.g, scene, stage);
  30.  
  31. stage.setScene(scene);
  32. stage.show();
  33. c.setScene(scene);
  34. }
  35.  
  36. private void initMouseControl(Group group, Scene scene, Stage stage){
  37. Rotate xRotate;
  38. Rotate yRotate;
  39. group.getTransforms().addAll(
  40. xRotate = new Rotate(0, Rotate.X_AXIS),
  41. yRotate = new Rotate(0, Rotate.Y_AXIS)
  42. );
  43. xRotate.angleProperty().bind(angleX);
  44. yRotate.angleProperty().bind(angleY);
  45.  
  46. scene.setOnMousePressed(event->{
  47. anchorX = event.getSceneX();
  48. anchorY = event.getSceneY();
  49. anchorAngleX= angleX.get();
  50. anchorAngleY=angleY.get();
  51.  
  52. });
  53. scene.setOnMouseDragged(event->{
  54. angleX.set(anchorAngleX-(anchorY-event.getSceneY()));
  55. angleY.set(anchorAngleY-(anchorX-event.getSceneX()));
  56.  
  57. });
  58.  
  59. stage.addEventHandler(ScrollEvent.SCROLL, event -> {
  60. double delta = event.getDeltaY();
  61. group.translateZProperty().set(group.getTranslateZ()+delta);
  62. });
  63. }
  64. class SmartGroup extends Group {
  65. Rotate r;
  66. Transform t = new Rotate();
  67.  
  68. void rotateByX(int ang){
  69. r = new Rotate(ang, Rotate.X_AXIS);
  70. t = t.createConcatenation(r);
  71. this.getTransforms().clear();
  72. this.getTransforms().addAll(t);
  73. }
  74.  
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement