From e7164d8a78668c73ffa417dc0d24942215936a29 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Wed, 30 Aug 2017 13:57:15 +1200 Subject: [PATCH] View3D perspective camera is now operational #story[1196] --- .../Controllers/HostController.java | 3 +- .../main/java/visualiser/model/View3D.java | 54 +++++++++---------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java index a085041b..9293d1f0 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java @@ -7,6 +7,7 @@ import javafx.scene.control.SplitPane; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; +import javafx.scene.shape.Box; import mock.app.Event; import mock.exceptions.EventConstructionException; import visualiser.model.View3D; @@ -57,7 +58,7 @@ public class HostController extends Controller { public void initialize(URL location, ResourceBundle resources) { fancyStuff = new View3D(); playerContainer.add(fancyStuff, 0,0); - fancyStuff.spinBox(); + fancyStuff.addShape(new Box(100,100,100)); } /** diff --git a/racevisionGame/src/main/java/visualiser/model/View3D.java b/racevisionGame/src/main/java/visualiser/model/View3D.java index f6937755..42674c33 100644 --- a/racevisionGame/src/main/java/visualiser/model/View3D.java +++ b/racevisionGame/src/main/java/visualiser/model/View3D.java @@ -1,49 +1,43 @@ package visualiser.model; -import javafx.animation.AnimationTimer; import javafx.scene.Group; import javafx.scene.PerspectiveCamera; import javafx.scene.SubScene; import javafx.scene.layout.Pane; -import javafx.scene.shape.Box; -import javafx.scene.shape.CullFace; -import javafx.scene.transform.Rotate; +import javafx.scene.paint.Color; +import javafx.scene.shape.Shape3D; + +import java.util.ArrayList; +import java.util.List; /** * Created by connortaylorbrown on 30/08/17. */ public class View3D extends Pane { SubScene scene; - PerspectiveCamera camera; - Box box; + Group world; + List shapes; public View3D() { - scene = new SubScene(this, 500, 500); - camera = new PerspectiveCamera(); + shapes = new ArrayList<>(); + world = new Group(); + + scene = new SubScene(world, 300, 300); + scene.widthProperty().bind(this.widthProperty()); + scene.heightProperty().bind(this.heightProperty()); + scene.setFill(Color.BLACK); + + PerspectiveCamera camera = new PerspectiveCamera(true); + camera.setNearClip(0.1); + camera.setFarClip(1000.0); + camera.setTranslateZ(-500); scene.setCamera(camera); - } - - public void spinBox() { - camera.getTransforms().add(new Rotate(-20, Rotate.X_AXIS)); - - box = new Box(50,50,50); - box.setTranslateX(100); - box.setTranslateY(100); - box.setCullFace(CullFace.BACK); - Rotate ry = new Rotate(0, 0,0,0, Rotate.Y_AXIS); - box.getTransforms().add(ry); - - this.getChildren().add(camera); - this.getChildren().add(box); - - AnimationTimer rotation = new AnimationTimer() { - @Override - public void handle(long now) { - ry.setAngle(ry.getAngle() + 0.1); - } - }; + this.getChildren().add(scene); + } - rotation.start(); + public void addShape(Shape3D shape) { + shapes.add(shape); + world.getChildren().add(shape); } }