Commit 76f34f51 authored by Riegel's avatar Riegel
Browse files

Add NorthArrow in MeshView

Showing with 26 additions and 1 deletion
+26 -1
......@@ -137,6 +137,8 @@ public class CityDoctorController {
mainWindow.getLod4Btn().setDisable(false);
mainWindow.getWorldBtn().setDisable(false);
mainWindow.getSaveBtn().setDisable(false);
mainWindow.getNorthArrow().setVisible(true);
mainWindow.alignNorthArrow();
setupFeatureTabs();
buildTrees();
});
......
......@@ -12,6 +12,7 @@ import java.util.TimerTask;
import javax.imageio.ImageIO;
import javafx.scene.chart.NumberAxis;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -268,6 +269,7 @@ public class MainWindow extends Application {
private MainToolBar mainToolBar;
private SubScene geomScene;
private ImageView northArrow;
private static boolean loadFileAtStartup = false;
private static String inputFile;
......@@ -856,9 +858,15 @@ public class MainWindow extends Application {
meshGroup = new Group();
world.getChildren().add(meshGroup);
Image north = new Image(getClass().getResourceAsStream("icons/north.png"));
northArrow = new ImageView(north);
northArrow.setFitHeight(50);
northArrow.setFitWidth(50);
meshView.getChildren().add(northArrow);
northArrow.setVisible(false);
AmbientLight al = new AmbientLight(Color.WHITE);
root.getChildren().add(al);
buildCamera();
cameraXRotation.setAxis(Rotate.X_AXIS);
cameraZRotation.setAxis(Rotate.Z_AXIS);
......@@ -904,6 +912,7 @@ public class MainWindow extends Application {
cameraZRotation.setAngle(cameraXRot);
cameraXRotation.setAngle(cameraYRot);
alignNorthArrow();
}
if (me.getButton() == MouseButton.SECONDARY) {
double translationSpeed = Math.abs(camera.getTranslateZ())/1000;
......@@ -927,6 +936,16 @@ public class MainWindow extends Application {
cameraXRotation.setAngle(cameraYRot);
}
public void alignNorthArrow(){
double absRotZ = cameraZRotation.getAngle() - 360 * Math.floor(cameraZRotation.getAngle() / 360);
double absRotX = cameraXRotation.getAngle() - 360 * Math.floor(cameraXRotation.getAngle() / 360);
double northRot = ((80 <= absRotX && absRotX <= 260) ? 360-absRotZ: (absRotZ+180)%360 );
northArrow.setRotate(northRot);
}
public void addFileNameToTitle(String fileName) {
String version = Localization.getText(Localization.VERSION);
stage.setTitle("CityDoctor " + version + " - " + fileName);
......@@ -1044,6 +1063,10 @@ public class MainWindow extends Application {
return mainToolBar.getWorldBtn();
}
public ImageView getNorthArrow(){
return northArrow;
}
public Button getSaveBtn() {
return mainToolBar.getSaveBtn();
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment