Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.13 KB | None | 0 0
  1.  
  2. import com.interactivemesh.jfx.importer.obj.ObjModelImporter;
  3. import javafx.animation.Interpolator;
  4. import javafx.animation.RotateTransition;
  5. import javafx.application.Application;
  6. import javafx.event.ActionEvent;
  7. import javafx.geometry.Pos;
  8. import javafx.scene.Group;
  9. import javafx.scene.PerspectiveCamera;
  10. import javafx.scene.Scene;
  11. import javafx.scene.control.Label;
  12. import javafx.scene.layout.GridPane;
  13. import javafx.scene.shape.Cylinder;
  14. import javafx.scene.shape.MeshView;
  15. import javafx.scene.transform.Rotate;
  16. import javafx.stage.Stage;
  17. import javafx.util.Duration;
  18. import javafx.application.Application;
  19. import javafx.beans.property.DoubleProperty;
  20. import javafx.beans.property.SimpleDoubleProperty;
  21. import javafx.scene.Camera;
  22. import javafx.scene.Group;
  23. import javafx.scene.PerspectiveCamera;
  24. import javafx.scene.Scene;
  25. import javafx.scene.input.KeyEvent;
  26. import javafx.scene.paint.Color;
  27. import javafx.scene.shape.Box;
  28. import javafx.scene.transform.Rotate;
  29. import javafx.scene.transform.Transform;
  30. import javafx.application.Application;
  31. import javafx.event.EventHandler;
  32. import javafx.scene.Group;
  33. import javafx.scene.PerspectiveCamera;
  34. import javafx.scene.Scene;
  35. import javafx.scene.input.MouseEvent;
  36. import javafx.scene.paint.Color;
  37. import javafx.scene.paint.PhongMaterial;
  38. import javafx.scene.shape.Box;
  39. import javafx.scene.transform.Rotate;
  40. import javafx.scene.transform.Translate;
  41. import javafx.stage.Stage;
  42. import javafx.scene.control.Button;
  43.  
  44. public class ModelLoadApp extends Application {
  45.  
  46. Label timer;
  47. Integer counter = 0;
  48. private static final int WIDTH = 1000;
  49. private static final int HEIGHT = 1000;
  50.  
  51. private double anchorX, anchorY;
  52. private double anchorAngleX = 0;
  53. private double anchorAngleY = 0;
  54. private final DoubleProperty angleX = new SimpleDoubleProperty(0);
  55. private final DoubleProperty angleY = new SimpleDoubleProperty(0);
  56.  
  57. @Override
  58. public void start(Stage primaryStage) {
  59.  
  60. PhongMaterial phongMaterial = new PhongMaterial();
  61. phongMaterial.setDiffuseColor(Color.DARKRED);
  62. phongMaterial.setSpecularColor(Color.RED);
  63.  
  64. PhongMaterial phongMaterial2 = new PhongMaterial();
  65. phongMaterial2.setDiffuseColor(Color.BLACK);
  66. phongMaterial2.setSpecularColor(Color.BLACK);
  67.  
  68. PhongMaterial phongMaterial3 = new PhongMaterial();
  69. phongMaterial3.setDiffuseColor(Color.CADETBLUE);
  70. phongMaterial3.setSpecularColor(Color.CADETBLUE);
  71.  
  72.  
  73. GridPane grid = new GridPane();
  74. grid.setTranslateX(420);
  75. grid.setTranslateY(100);
  76. grid.setTranslateZ(-431);
  77.  
  78.  
  79. Button button1 = new Button();
  80. button1.setPrefSize(50, 50);
  81. button1.setText("+");
  82.  
  83. grid.add(button1,0,0);
  84.  
  85. Button button2 = new Button();
  86. button2.setPrefSize(50, 50);
  87. button2.setText("-");
  88. grid.add(button2,1,0);
  89.  
  90. Button button3 = new Button();
  91. button3.setPrefSize(50, 50);
  92. button3.setText("START");
  93. grid.add(button3,0,1);
  94.  
  95. Button button4 = new Button();
  96. button4.setPrefSize(50, 50);
  97. button4.setText("PAUSE");
  98. grid.add(button4,1,1);
  99.  
  100.  
  101. Button button5 = new Button();
  102. button5.setPrefSize(50, 50);
  103. button5.setText("STOP");
  104. grid.add(button5,2,1);
  105.  
  106. Button button6 = new Button();
  107. button6.setPrefSize(50, 50);
  108. button6.setText("");
  109. grid.add(button6,2,0);
  110.  
  111. grid.setHgap(5);
  112. grid.setVgap(5);
  113.  
  114.  
  115. Cylinder gala = new Cylinder(50,100);
  116. gala.setTranslateX(500);
  117. gala.setTranslateY(-50);
  118. gala.setTranslateZ(-430);
  119. gala.getTransforms().add(new Rotate(90, Rotate.X_AXIS));
  120.  
  121. timer = new Label();
  122. timer.setText("00:00");
  123. timer.setTranslateX(420);
  124. timer.setTranslateY(-320);
  125. timer.setTranslateZ(-431);
  126. timer.setMinSize(160,100);
  127. timer.setCenterShape(true);
  128. timer.setAlignment(Pos.CENTER);
  129.  
  130.  
  131.  
  132.  
  133.  
  134. Button button7 = new Button();
  135. button7.setPrefSize(160, 100);
  136. button7.setText("OPEN");
  137. button7.setTranslateX(420);
  138. button7.setTranslateY(220);
  139. button7.setTranslateZ(-431);
  140.  
  141.  
  142.  
  143.  
  144. //Box box = new Box(1200, 700, 700);
  145.  
  146. Box box1 = new Box(100, 700, 700);
  147. box1.translateXProperty().set(-550);
  148.  
  149. Box box2 = new Box(250, 700, 700);
  150. box2.translateXProperty().set(475);
  151.  
  152. Box box3 = new Box(1200, 100, 700);
  153. box3.translateYProperty().set(300);
  154.  
  155. Box box4 = new Box(1200, 100, 700);
  156. box4.translateYProperty().set(-300);
  157.  
  158. Box box5 = new Box(1200, 700, 100);
  159. box5.translateZProperty().set(300);
  160.  
  161.  
  162. Cylinder plate = new Cylinder(280,20);
  163. plate.setTranslateX(-55);
  164. plate.setTranslateY(250);
  165. plate.setTranslateZ(-62);
  166. plate.setMaterial(phongMaterial);
  167.  
  168.  
  169. Box panel= new Box(200,700, 80);
  170. Box drzwi1 = new Box(1000,100,80);
  171. Box drzwi2 = new Box(1000,100,80);
  172. Box drzwi3 = new Box(100,700,80);
  173. Box drzwi4 = new Box(100,700,80);
  174. Box okno = new Box(800,500,50);
  175.  
  176.  
  177. //otwieranie drzwi
  178. button7.setOnAction(new EventHandler<ActionEvent>() {
  179. @Override
  180. public void handle(ActionEvent e)
  181. {
  182. counter++;
  183.  
  184. //polozenie dla otwartych
  185. if(counter%2==1)
  186. {
  187. okno.translateXProperty().set(-580);
  188. okno.translateZProperty().set(-840);
  189. okno.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
  190.  
  191. drzwi1.translateXProperty().set(-580);
  192. drzwi1.translateYProperty().set(300);
  193. drzwi1.translateZProperty().set(-830);
  194. drzwi1.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
  195.  
  196.  
  197. drzwi2.translateXProperty().set(-580);
  198. drzwi2.translateYProperty().set(-300);
  199. drzwi2.translateZProperty().set(-830);
  200. drzwi2.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
  201.  
  202. drzwi3.translateXProperty().set(-580);
  203. drzwi3.translateYProperty().set(0);
  204. drzwi3.translateZProperty().set(-390);
  205. drzwi3.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
  206.  
  207.  
  208. drzwi4.translateXProperty().set(-580);
  209. drzwi4.translateYProperty().set(0);
  210. drzwi4.translateZProperty().set(-1290);
  211. drzwi4.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
  212. }
  213. //standardowe zamkniete polozenei drzwi
  214. else
  215. {
  216.  
  217. okno.translateXProperty().set(-100);
  218. okno.translateYProperty().set(0);
  219. okno.translateZProperty().set(-390);
  220. okno.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
  221.  
  222. drzwi1.translateXProperty().set(-100);
  223. drzwi1.translateYProperty().set(300);
  224. drzwi1.translateZProperty().set(-390);
  225. drzwi1.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
  226.  
  227. drzwi2.translateXProperty().set(-100);
  228. drzwi2.translateYProperty().set(-300);
  229. drzwi2.translateZProperty().set(-390);
  230. drzwi2.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
  231.  
  232. drzwi3.translateXProperty().set(-550);
  233. drzwi3.translateYProperty().set(0);
  234. drzwi3.translateZProperty().set(-390);
  235. drzwi3.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
  236.  
  237. drzwi4.translateXProperty().set(350);
  238. drzwi4.translateYProperty().set(0);
  239. drzwi4.translateZProperty().set(-390);
  240. drzwi4.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
  241. }
  242.  
  243.  
  244. }
  245. });
  246.  
  247. drzwi1.translateXProperty().set(-100);
  248. drzwi1.translateYProperty().set(300);
  249. drzwi1.translateZProperty().set(-390);
  250. drzwi1.setMaterial(phongMaterial2);
  251.  
  252. drzwi2.translateXProperty().set(-100);
  253. drzwi2.translateYProperty().set(-300);
  254. drzwi2.translateZProperty().set(-390);
  255. drzwi2.setMaterial(phongMaterial2);
  256.  
  257. drzwi3.translateXProperty().set(-550);
  258. drzwi3.translateYProperty().set(0);
  259. drzwi3.translateZProperty().set(-390);
  260. drzwi3.setMaterial(phongMaterial2);
  261.  
  262. drzwi4.translateXProperty().set(350);
  263. drzwi4.translateYProperty().set(0);
  264. drzwi4.translateZProperty().set(-390);
  265. drzwi4.setMaterial(phongMaterial2);
  266.  
  267. okno.translateXProperty().set(-100);
  268. okno.translateYProperty().set(0);
  269. okno.translateZProperty().set(-390);
  270. okno.setMaterial(phongMaterial3);
  271.  
  272. panel.translateXProperty().set(500);
  273. panel.translateYProperty().set(0);
  274. panel.translateZProperty().set(-390);
  275. panel.setMaterial(phongMaterial);
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. SmartGroup group = new SmartGroup();
  283. group.getChildren().addAll(box1, box2, box3, box4, box5, plate, panel,grid,button7,gala,timer,drzwi1,drzwi2,drzwi3,drzwi4,okno);
  284.  
  285.  
  286. Camera camera = new PerspectiveCamera();
  287. Scene scene = new Scene(group, WIDTH, HEIGHT, true);
  288. scene.setFill(Color.LIGHTCORAL);
  289. scene.setCamera(camera);
  290.  
  291. group.translateXProperty().set(WIDTH / 2);
  292. group.translateYProperty().set(HEIGHT / 2);
  293. group.translateZProperty().set(-50);
  294.  
  295. initMouseControl(group, scene);
  296.  
  297. primaryStage.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
  298. switch (event.getCode()) {
  299. case W:
  300. group.translateZProperty().set(group.getTranslateZ() + 100);
  301. break;
  302. case S:
  303. group.translateZProperty().set(group.getTranslateZ() - 100);
  304. break;
  305. case Q:
  306. group.rotateByX(10);
  307. break;
  308. case E:
  309. group.rotateByX(-10);
  310. break;
  311. case NUMPAD6:
  312. group.rotateByY(10);
  313. break;
  314. case NUMPAD4:
  315. group.rotateByY(-10);
  316. break;
  317. }
  318. });
  319.  
  320. primaryStage.setTitle("Genuine Coder");
  321. primaryStage.setScene(scene);
  322. primaryStage.show();
  323. }
  324.  
  325. private void initMouseControl(SmartGroup group, Scene scene) {
  326. Rotate xRotate;
  327. Rotate yRotate;
  328. group.getTransforms().addAll(
  329. xRotate = new Rotate(0, Rotate.X_AXIS),
  330. yRotate = new Rotate(0, Rotate.Y_AXIS)
  331. );
  332. xRotate.angleProperty().bind(angleX);
  333. yRotate.angleProperty().bind(angleY);
  334.  
  335. scene.setOnMousePressed(event -> {
  336. anchorX = event.getSceneX();
  337. anchorY = event.getSceneY();
  338. anchorAngleX = angleX.get();
  339. anchorAngleY = angleY.get();
  340. });
  341.  
  342. scene.setOnMouseDragged(event -> {
  343. angleX.set(anchorAngleX - (anchorY - event.getSceneY()));
  344. angleY.set(anchorAngleY + anchorX - event.getSceneX());
  345. });
  346. }
  347.  
  348. public static void main(String[] args) {
  349. launch(args);
  350. }
  351.  
  352. class SmartGroup extends Group {
  353.  
  354. Rotate r;
  355. Transform t = new Rotate();
  356.  
  357. void rotateByX(int ang) {
  358. r = new Rotate(ang, Rotate.X_AXIS);
  359. t = t.createConcatenation(r);
  360. this.getTransforms().clear();
  361. this.getTransforms().addAll(t);
  362. }
  363.  
  364. void rotateByY(int ang) {
  365. r = new Rotate(ang, Rotate.Y_AXIS);
  366. t = t.createConcatenation(r);
  367. this.getTransforms().clear();
  368. this.getTransforms().addAll(t);
  369. }
  370. }
  371. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement