From 23eabed3ff5eb2e7d4c5959769b2cfc024a0ef04 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Fri, 8 Sep 2017 12:58:06 +1200 Subject: [PATCH] View3D tracks selected boat at fixed distance, pitch, and relative yaw #story[1190] --- .../main/java/visualiser/Controllers/HostController.java | 2 +- .../src/main/java/visualiser/layout/Subject3D.java | 8 ++++---- .../src/main/java/visualiser/layout/View3D.java | 9 ++++++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java index 2855a770..10bc9dbe 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java @@ -82,7 +82,7 @@ public class HostController extends Controller { AnimationTimer rotate = new AnimationTimer() { @Override public void handle(long now) { - subject.setHeading(subject.getHeading() + 0.1); + subject.setHeading(subject.getHeading().getAngle() + 0.1); } }; rotate.start(); diff --git a/racevisionGame/src/main/java/visualiser/layout/Subject3D.java b/racevisionGame/src/main/java/visualiser/layout/Subject3D.java index 4bb6f6af..af76f4f4 100644 --- a/racevisionGame/src/main/java/visualiser/layout/Subject3D.java +++ b/racevisionGame/src/main/java/visualiser/layout/Subject3D.java @@ -43,6 +43,10 @@ public class Subject3D { return this.position; } + public Rotate getHeading() { + return heading; + } + public void setX(double x) { position.setX(x); } @@ -55,10 +59,6 @@ public class Subject3D { position.setZ(z); } - public double getHeading() { - return heading.getAngle(); - } - public void setHeading(double angle) { heading.setAngle(angle); } diff --git a/racevisionGame/src/main/java/visualiser/layout/View3D.java b/racevisionGame/src/main/java/visualiser/layout/View3D.java index a981ca89..a6afb439 100644 --- a/racevisionGame/src/main/java/visualiser/layout/View3D.java +++ b/racevisionGame/src/main/java/visualiser/layout/View3D.java @@ -77,7 +77,14 @@ public class View3D extends Pane { scene.setOnMousePressed(e -> { PickResult result = e.getPickResult(); if(result != null && result.getIntersectedNode() != null && result.getIntersectedNode() instanceof Shape3D) { - System.out.println(selectionMap.get(result.getIntersectedNode())); + Subject3D target = selectionMap.get(result.getIntersectedNode()); + target.getPosition().xProperty().addListener((o, prev, curr) -> pivot.setX((double)curr)); + target.getPosition().yProperty().addListener((o, prev, curr) -> pivot.setY((double)curr)); + target.getPosition().zProperty().addListener((o, prev, curr) -> pivot.setZ((double)curr)); + target.getHeading().angleProperty().addListener((o, prev, curr) -> setYaw((double)curr)); + + this.setDistance(100); + this.setPitch(30); } });