View3D tracks selected boat at fixed distance, pitch, and relative yaw

#story[1190]
main
Connor Taylor-Brown 8 years ago
parent b59eca1a8b
commit 23eabed3ff

@ -82,7 +82,7 @@ public class HostController extends Controller {
AnimationTimer rotate = new AnimationTimer() { AnimationTimer rotate = new AnimationTimer() {
@Override @Override
public void handle(long now) { public void handle(long now) {
subject.setHeading(subject.getHeading() + 0.1); subject.setHeading(subject.getHeading().getAngle() + 0.1);
} }
}; };
rotate.start(); rotate.start();

@ -43,6 +43,10 @@ public class Subject3D {
return this.position; return this.position;
} }
public Rotate getHeading() {
return heading;
}
public void setX(double x) { public void setX(double x) {
position.setX(x); position.setX(x);
} }
@ -55,10 +59,6 @@ public class Subject3D {
position.setZ(z); position.setZ(z);
} }
public double getHeading() {
return heading.getAngle();
}
public void setHeading(double angle) { public void setHeading(double angle) {
heading.setAngle(angle); heading.setAngle(angle);
} }

@ -77,7 +77,14 @@ public class View3D extends Pane {
scene.setOnMousePressed(e -> { scene.setOnMousePressed(e -> {
PickResult result = e.getPickResult(); PickResult result = e.getPickResult();
if(result != null && result.getIntersectedNode() != null && result.getIntersectedNode() instanceof Shape3D) { 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);
} }
}); });

Loading…
Cancel
Save