View3D tracks selected boat at fixed distance, pitch, and relative yaw
#story[1190]
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user