Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.interactivemesh.jfx.importer.obj.ObjModelImporter;
- import javafx.animation.Interpolator;
- import javafx.animation.RotateTransition;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.geometry.Pos;
- import javafx.scene.Group;
- import javafx.scene.PerspectiveCamera;
- import javafx.scene.Scene;
- import javafx.scene.control.Label;
- import javafx.scene.layout.GridPane;
- import javafx.scene.shape.Cylinder;
- import javafx.scene.shape.MeshView;
- import javafx.scene.transform.Rotate;
- import javafx.stage.Stage;
- import javafx.util.Duration;
- import javafx.application.Application;
- import javafx.beans.property.DoubleProperty;
- import javafx.beans.property.SimpleDoubleProperty;
- import javafx.scene.Camera;
- import javafx.scene.Group;
- import javafx.scene.PerspectiveCamera;
- import javafx.scene.Scene;
- import javafx.scene.input.KeyEvent;
- import javafx.scene.paint.Color;
- import javafx.scene.shape.Box;
- import javafx.scene.transform.Rotate;
- import javafx.scene.transform.Transform;
- import javafx.application.Application;
- import javafx.event.EventHandler;
- import javafx.scene.Group;
- import javafx.scene.PerspectiveCamera;
- import javafx.scene.Scene;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.paint.Color;
- import javafx.scene.paint.PhongMaterial;
- import javafx.scene.shape.Box;
- import javafx.scene.transform.Rotate;
- import javafx.scene.transform.Translate;
- import javafx.stage.Stage;
- import javafx.scene.control.Button;
- public class ModelLoadApp extends Application {
- Label timer;
- Integer counter = 0;
- private static final int WIDTH = 1000;
- private static final int HEIGHT = 1000;
- private double anchorX, anchorY;
- private double anchorAngleX = 0;
- private double anchorAngleY = 0;
- private final DoubleProperty angleX = new SimpleDoubleProperty(0);
- private final DoubleProperty angleY = new SimpleDoubleProperty(0);
- @Override
- public void start(Stage primaryStage) {
- PhongMaterial phongMaterial = new PhongMaterial();
- phongMaterial.setDiffuseColor(Color.DARKRED);
- phongMaterial.setSpecularColor(Color.RED);
- PhongMaterial phongMaterial2 = new PhongMaterial();
- phongMaterial2.setDiffuseColor(Color.BLACK);
- phongMaterial2.setSpecularColor(Color.BLACK);
- PhongMaterial phongMaterial3 = new PhongMaterial();
- phongMaterial3.setDiffuseColor(Color.CADETBLUE);
- phongMaterial3.setSpecularColor(Color.CADETBLUE);
- GridPane grid = new GridPane();
- grid.setTranslateX(420);
- grid.setTranslateY(100);
- grid.setTranslateZ(-431);
- Button button1 = new Button();
- button1.setPrefSize(50, 50);
- button1.setText("+");
- grid.add(button1,0,0);
- Button button2 = new Button();
- button2.setPrefSize(50, 50);
- button2.setText("-");
- grid.add(button2,1,0);
- Button button3 = new Button();
- button3.setPrefSize(50, 50);
- button3.setText("START");
- grid.add(button3,0,1);
- Button button4 = new Button();
- button4.setPrefSize(50, 50);
- button4.setText("PAUSE");
- grid.add(button4,1,1);
- Button button5 = new Button();
- button5.setPrefSize(50, 50);
- button5.setText("STOP");
- grid.add(button5,2,1);
- Button button6 = new Button();
- button6.setPrefSize(50, 50);
- button6.setText("");
- grid.add(button6,2,0);
- grid.setHgap(5);
- grid.setVgap(5);
- Cylinder gala = new Cylinder(50,100);
- gala.setTranslateX(500);
- gala.setTranslateY(-50);
- gala.setTranslateZ(-430);
- gala.getTransforms().add(new Rotate(90, Rotate.X_AXIS));
- timer = new Label();
- timer.setText("00:00");
- timer.setTranslateX(420);
- timer.setTranslateY(-320);
- timer.setTranslateZ(-431);
- timer.setMinSize(160,100);
- timer.setCenterShape(true);
- timer.setAlignment(Pos.CENTER);
- Button button7 = new Button();
- button7.setPrefSize(160, 100);
- button7.setText("OPEN");
- button7.setTranslateX(420);
- button7.setTranslateY(220);
- button7.setTranslateZ(-431);
- //Box box = new Box(1200, 700, 700);
- Box box1 = new Box(100, 700, 700);
- box1.translateXProperty().set(-550);
- Box box2 = new Box(250, 700, 700);
- box2.translateXProperty().set(475);
- Box box3 = new Box(1200, 100, 700);
- box3.translateYProperty().set(300);
- Box box4 = new Box(1200, 100, 700);
- box4.translateYProperty().set(-300);
- Box box5 = new Box(1200, 700, 100);
- box5.translateZProperty().set(300);
- Cylinder plate = new Cylinder(280,20);
- plate.setTranslateX(-55);
- plate.setTranslateY(250);
- plate.setTranslateZ(-62);
- plate.setMaterial(phongMaterial);
- Box panel= new Box(200,700, 80);
- Box drzwi1 = new Box(1000,100,80);
- Box drzwi2 = new Box(1000,100,80);
- Box drzwi3 = new Box(100,700,80);
- Box drzwi4 = new Box(100,700,80);
- Box okno = new Box(800,500,50);
- //otwieranie drzwi
- button7.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent e)
- {
- counter++;
- //polozenie dla otwartych
- if(counter%2==1)
- {
- okno.translateXProperty().set(-580);
- okno.translateZProperty().set(-840);
- okno.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
- drzwi1.translateXProperty().set(-580);
- drzwi1.translateYProperty().set(300);
- drzwi1.translateZProperty().set(-830);
- drzwi1.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
- drzwi2.translateXProperty().set(-580);
- drzwi2.translateYProperty().set(-300);
- drzwi2.translateZProperty().set(-830);
- drzwi2.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
- drzwi3.translateXProperty().set(-580);
- drzwi3.translateYProperty().set(0);
- drzwi3.translateZProperty().set(-390);
- drzwi3.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
- drzwi4.translateXProperty().set(-580);
- drzwi4.translateYProperty().set(0);
- drzwi4.translateZProperty().set(-1290);
- drzwi4.getTransforms().add(new Rotate(90, Rotate.Y_AXIS));
- }
- //standardowe zamkniete polozenei drzwi
- else
- {
- okno.translateXProperty().set(-100);
- okno.translateYProperty().set(0);
- okno.translateZProperty().set(-390);
- okno.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
- drzwi1.translateXProperty().set(-100);
- drzwi1.translateYProperty().set(300);
- drzwi1.translateZProperty().set(-390);
- drzwi1.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
- drzwi2.translateXProperty().set(-100);
- drzwi2.translateYProperty().set(-300);
- drzwi2.translateZProperty().set(-390);
- drzwi2.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
- drzwi3.translateXProperty().set(-550);
- drzwi3.translateYProperty().set(0);
- drzwi3.translateZProperty().set(-390);
- drzwi3.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
- drzwi4.translateXProperty().set(350);
- drzwi4.translateYProperty().set(0);
- drzwi4.translateZProperty().set(-390);
- drzwi4.getTransforms().add(new Rotate(-90, Rotate.Y_AXIS));
- }
- }
- });
- drzwi1.translateXProperty().set(-100);
- drzwi1.translateYProperty().set(300);
- drzwi1.translateZProperty().set(-390);
- drzwi1.setMaterial(phongMaterial2);
- drzwi2.translateXProperty().set(-100);
- drzwi2.translateYProperty().set(-300);
- drzwi2.translateZProperty().set(-390);
- drzwi2.setMaterial(phongMaterial2);
- drzwi3.translateXProperty().set(-550);
- drzwi3.translateYProperty().set(0);
- drzwi3.translateZProperty().set(-390);
- drzwi3.setMaterial(phongMaterial2);
- drzwi4.translateXProperty().set(350);
- drzwi4.translateYProperty().set(0);
- drzwi4.translateZProperty().set(-390);
- drzwi4.setMaterial(phongMaterial2);
- okno.translateXProperty().set(-100);
- okno.translateYProperty().set(0);
- okno.translateZProperty().set(-390);
- okno.setMaterial(phongMaterial3);
- panel.translateXProperty().set(500);
- panel.translateYProperty().set(0);
- panel.translateZProperty().set(-390);
- panel.setMaterial(phongMaterial);
- SmartGroup group = new SmartGroup();
- group.getChildren().addAll(box1, box2, box3, box4, box5, plate, panel,grid,button7,gala,timer,drzwi1,drzwi2,drzwi3,drzwi4,okno);
- Camera camera = new PerspectiveCamera();
- Scene scene = new Scene(group, WIDTH, HEIGHT, true);
- scene.setFill(Color.LIGHTCORAL);
- scene.setCamera(camera);
- group.translateXProperty().set(WIDTH / 2);
- group.translateYProperty().set(HEIGHT / 2);
- group.translateZProperty().set(-50);
- initMouseControl(group, scene);
- primaryStage.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
- switch (event.getCode()) {
- case W:
- group.translateZProperty().set(group.getTranslateZ() + 100);
- break;
- case S:
- group.translateZProperty().set(group.getTranslateZ() - 100);
- break;
- case Q:
- group.rotateByX(10);
- break;
- case E:
- group.rotateByX(-10);
- break;
- case NUMPAD6:
- group.rotateByY(10);
- break;
- case NUMPAD4:
- group.rotateByY(-10);
- break;
- }
- });
- primaryStage.setTitle("Genuine Coder");
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- private void initMouseControl(SmartGroup group, Scene scene) {
- Rotate xRotate;
- Rotate yRotate;
- group.getTransforms().addAll(
- xRotate = new Rotate(0, Rotate.X_AXIS),
- yRotate = new Rotate(0, Rotate.Y_AXIS)
- );
- xRotate.angleProperty().bind(angleX);
- yRotate.angleProperty().bind(angleY);
- scene.setOnMousePressed(event -> {
- anchorX = event.getSceneX();
- anchorY = event.getSceneY();
- anchorAngleX = angleX.get();
- anchorAngleY = angleY.get();
- });
- scene.setOnMouseDragged(event -> {
- angleX.set(anchorAngleX - (anchorY - event.getSceneY()));
- angleY.set(anchorAngleY + anchorX - event.getSceneX());
- });
- }
- public static void main(String[] args) {
- launch(args);
- }
- class SmartGroup extends Group {
- Rotate r;
- Transform t = new Rotate();
- void rotateByX(int ang) {
- r = new Rotate(ang, Rotate.X_AXIS);
- t = t.createConcatenation(r);
- this.getTransforms().clear();
- this.getTransforms().addAll(t);
- }
- void rotateByY(int ang) {
- r = new Rotate(ang, Rotate.Y_AXIS);
- t = t.createConcatenation(r);
- this.getTransforms().clear();
- this.getTransforms().addAll(t);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement