mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
[WIP] porting old fps counter to new gameview3D
#story[1245]
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package seng302.visualiser;
|
package seng302.visualiser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -233,6 +234,49 @@ public class GameView3D {
|
|||||||
scene.addEventHandler(KeyEvent.KEY_PRESSED, this::cameraMovement);
|
scene.addEventHandler(KeyEvent.KEY_PRESSED, this::cameraMovement);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
initializeTimer();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeTimer() {
|
||||||
|
Arrays.fill(frameTimes, 1_000_000_000 / 60);
|
||||||
|
timer = new AnimationTimer() {
|
||||||
|
private long lastTime = 0;
|
||||||
|
private int FPSCount = 30;
|
||||||
|
private Double frameRate = 60.0;
|
||||||
|
private int index = 0;
|
||||||
|
private boolean arrayFilled = false;
|
||||||
|
private long sum = 1_000_000_000 / 3;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(long now) {
|
||||||
|
System.out.println(now);
|
||||||
|
if (lastTime == 0) {
|
||||||
|
lastTime = now;
|
||||||
|
} else {
|
||||||
|
if (now - lastTime >= (1e8 / 60)) { //Fix for framerate going above 60 when minimized
|
||||||
|
long oldFrameTime = frameTimes[frameTimeIndex];
|
||||||
|
frameTimes[frameTimeIndex] = now;
|
||||||
|
frameTimeIndex = (frameTimeIndex + 1) % frameTimes.length;
|
||||||
|
if (frameTimeIndex == 0) {
|
||||||
|
arrayFilled = true;
|
||||||
|
}
|
||||||
|
long elapsedNanos;
|
||||||
|
if (arrayFilled) {
|
||||||
|
elapsedNanos = now - oldFrameTime;
|
||||||
|
long elapsedNanosPerFrame = elapsedNanos / frameTimes.length;
|
||||||
|
frameRate = 1_000_000_000.0 / elapsedNanosPerFrame;
|
||||||
|
if (FPSCount-- == 0) {
|
||||||
|
FPSCount = 30;
|
||||||
|
drawFps(frameRate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastTime = now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boatObjects.forEach((boat, boatObject) -> boatObject.updateLocation());
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateCourse(List<CompoundMark> newCourse, List<Corner> sequence) {
|
public void updateCourse(List<CompoundMark> newCourse, List<Corner> sequence) {
|
||||||
@@ -739,4 +783,18 @@ public class GameView3D {
|
|||||||
public void setWindDir(double windDir) {
|
public void setWindDir(double windDir) {
|
||||||
this.windDir = windDir;
|
this.windDir = windDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFrameRateFXText(Text fpsDisplay) {
|
||||||
|
this.fpsDisplay = null;
|
||||||
|
this.fpsDisplay = fpsDisplay;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawFps(Double fps) {
|
||||||
|
System.out.println(fps);
|
||||||
|
Platform.runLater(() -> fpsDisplay.setText(String.format("%d FPS", Math.round(fps))));
|
||||||
|
}
|
||||||
|
|
||||||
|
// public void setFPSVisibility(boolean visibility) {
|
||||||
|
// fpsDisplay.setVisible(visibility);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
|
|
||||||
updateOrder(raceState.getPlayerPositions());
|
updateOrder(raceState.getPlayerPositions());
|
||||||
gameView = new GameView3D();
|
gameView = new GameView3D();
|
||||||
// gameView.setFrameRateFXText(fpsDisplay);
|
gameView.setFrameRateFXText(fpsDisplay);
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
contentAnchorPane.getChildren().add(0, gameView.getAssets());
|
contentAnchorPane.getChildren().add(0, gameView.getAssets());
|
||||||
((SubScene) gameView.getAssets()).widthProperty()
|
((SubScene) gameView.getAssets()).widthProperty()
|
||||||
@@ -313,11 +313,11 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initialiseFPSCheckBox() {
|
// private void initialiseFPSCheckBox() {
|
||||||
// toggleFps.selectedProperty().addListener((obs, oldVal, newVal) ->
|
// toggleFps.selectedProperty().addListener((obs, oldVal, newVal) ->
|
||||||
// gameView.setFPSVisibility(toggleFps.isSelected())
|
// gameView.setFPSVisibility(toggleFps.isSelected())
|
||||||
// );
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
private void initialiseAnnotationSlider() {
|
private void initialiseAnnotationSlider() {
|
||||||
// annotationSlider.setLabelFormatter(new StringConverter<Double>() {
|
// annotationSlider.setLabelFormatter(new StringConverter<Double>() {
|
||||||
|
|||||||
@@ -73,6 +73,13 @@
|
|||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<Text fx:id="fpsDisplay" strokeType="OUTSIDE" strokeWidth="0.0" text="60 Fps" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.valignment="CENTER">
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets right="10.0" />
|
||||||
|
</GridPane.margin>
|
||||||
|
</Text>
|
||||||
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
|
|||||||
Reference in New Issue
Block a user