Add a Frames per second counter

This commit is contained in:
Lukas 2020-12-08 19:56:37 +01:00
parent 9fcbe27046
commit 4f26204355
5 changed files with 43 additions and 38 deletions

View File

@ -526,7 +526,7 @@ public class PacketHandler {
}
connection.getPlayer().setSpawnConfirmed(true);
connection.getRenderProperties().getController().getCameraMovement().setRotation(pkg.getRotation());
connection.getRenderProperties().getController().setPlayerPos(new Vec3(pkg.getLocation()));
connection.getRenderProperties().getController().setPlayerPosition(new Vec3(pkg.getLocation()));
}
public void handle(PacketAttachEntity pkg) {

View File

@ -74,7 +74,7 @@ public class OpenGLWindow {
}
try (MemoryStack stack = stackPush()) {
IntBuffer pWidth = stack.mallocInt(1);
IntBuffer pWidth = stack.mallocInt(1);
IntBuffer pHeight = stack.mallocInt(1);
glfwGetWindowSize(windowId, pWidth, pHeight);
@ -173,6 +173,8 @@ public class OpenGLWindow {
lastFrame = currentFrame;
setupPerspective();
glfwSetWindowTitle(windowId, String.format("Minosoft game window (%s FPS)", 1/deltaTime));
return deltaTime;
}

View File

@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.data.world.World;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.render.blockModels.BlockModelLoader;
import de.bixilon.minosoft.render.utility.AdditionalMath;
import de.bixilon.minosoft.render.utility.Vec3;
@ -33,42 +32,42 @@ public class CollisionHandler {
}
public void handleCollisions() {
if (isPositionValid(controller.playerPos)) {
if (isPositionValid(controller.playerPosition)) {
// the player currently isn't colliding with with anything so the player Position does not have to be adjusted
return;
}
xAxisCollision();
yAxisCollision();
zAxisCollision();
if (!isPositionValid(controller.playerPos)) {
controller.playerPos.x = controller.oldPos.x;
controller.playerPos.z = controller.oldPos.z;
if (!isPositionValid(controller.playerPosition)) {
controller.playerPosition.x = controller.oldPosition.x;
controller.playerPosition.z = controller.oldPosition.z;
}
}
private void xAxisCollision() {
double deltaX = controller.playerPos.x - controller.oldPos.x;
double deltaX = controller.playerPosition.x - controller.oldPosition.x;
if (deltaX == 0) {
return;
}
Vec3 testPos = controller.oldPos.copy().add(deltaX, 0, 0);
Vec3 testPos = controller.oldPosition.copy().add(deltaX, 0, 0);
if (isPositionValid(testPos)) {
return;
}
controller.playerPos.x = controller.oldPos.x;
controller.playerPosition.x = controller.oldPosition.x;
controller.playerVelocity.x = 0;
}
private void yAxisCollision() {
double deltaY = controller.playerPos.y - controller.oldPos.y;
double deltaY = controller.playerPosition.y - controller.oldPosition.y;
if (deltaY == 0) {
return;
}
Vec3 testPos = controller.oldPos.copy().add(0, deltaY, 0);
Vec3 testPos = controller.oldPosition.copy().add(0, deltaY, 0);
if (isPositionValid(testPos)) {
return;
}
controller.playerPos.y = controller.oldPos.y;
controller.playerPosition.y = controller.oldPosition.y;
controller.playerVelocity.y = 0;
if (deltaY < 0) {
@ -77,15 +76,15 @@ public class CollisionHandler {
}
private void zAxisCollision() {
double deltaZ = controller.playerPos.z - controller.oldPos.z;
double deltaZ = controller.playerPosition.z - controller.oldPosition.z;
if (deltaZ == 0) {
return;
}
Vec3 testPos = controller.oldPos.copy().add(0, 0, deltaZ);
Vec3 testPos = controller.oldPosition.copy().add(0, 0, deltaZ);
if (isPositionValid(testPos)) {
return;
}
controller.playerPos.z = controller.oldPos.z;
controller.playerPosition.z = controller.oldPosition.z;
controller.playerVelocity.z = 0;
}

View File

@ -27,10 +27,10 @@ public class PlayerController {
private static final float gravity = 13;
private final Connection connection;
public Vec3 oldPos;
public Vec3 oldPosition;
CameraMovement cameraMovement;
PlayerMovement playerMovement;
Vec3 playerPos = new Vec3(); // the feet position of the player
Vec3 playerPosition = new Vec3(); // the feet position of the player
Vec3 playerVelocity = new Vec3();
private boolean onGround;
private boolean enableGravity;
@ -51,10 +51,10 @@ public class PlayerController {
}
if (GameWindow.paused) {
cameraMovement.loop();
glTranslated(-playerPos.x, -(playerPos.y + playerHeight - 0.2f), -playerPos.z);
glTranslated(-playerPosition.x, -(playerPosition.y + playerHeight - 0.2f), -playerPosition.z);
return;
}
oldPos = playerPos.copy();
oldPosition = playerPosition.copy();
GameModes gameMode = connection.getPlayer().getGameMode();
enableGravity = gameMode != GameModes.CREATIVE && gameMode != GameModes.SPECTATOR;
@ -64,12 +64,12 @@ public class PlayerController {
applyVelocity(deltaTime);
if (gameMode == GameModes.SPECTATOR) {
glTranslated(-playerPos.x, -(playerPos.y + playerHeight - 0.2f), -playerPos.z);
glTranslated(-playerPosition.x, -(playerPosition.y + playerHeight - 0.2f), -playerPosition.z);
return;
}
handleCollisions(connection.getPlayer().getWorld());
glTranslated(-playerPos.x, -(playerPos.y + playerHeight - 0.2f), -playerPos.z);
glTranslated(-playerPosition.x, -(playerPosition.y + playerHeight - 0.2f), -playerPosition.z);
}
private void handleCollisions(World world) {
@ -85,16 +85,12 @@ public class PlayerController {
return enableGravity;
}
public Vec3 getPlayerPos() {
return playerPos;
public Vec3 getPlayerPosition() {
return playerPosition;
}
public void setPlayerPos(Vec3 playerPos) {
this.playerPos = playerPos;
}
private void applyVelocity(float deltaTime) {
playerPos.add(Vec3.mul(playerVelocity, deltaTime));
public void setPlayerPosition(Vec3 playerPosition) {
this.playerPosition = playerPosition;
}
private void handleGravity(float deltaTime) {
@ -129,4 +125,8 @@ public class PlayerController {
public float getPlayerHeight() {
return playerHeight;
}
private void applyVelocity(float deltaTime) {
playerPosition.add(Vec3.mul(playerVelocity, deltaTime));
}
}

View File

@ -25,7 +25,7 @@ public class PlayerMovement {
private final Connection connection;
private Vec3 cameraFront;
private Vec3 playerPos;
private Vec3 playerPosition;
public PlayerMovement(Connection connection) {
this.connection = connection;
@ -35,26 +35,26 @@ public class PlayerMovement {
float cameraSpeed = FLY_SPEED / deltaTime;
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_W) == GLFW_PRESS) {
playerPos.add(Vec3.mul(cameraFront, -cameraSpeed * deltaTime));
playerPosition.add(Vec3.mul(cameraFront, -cameraSpeed * deltaTime));
}
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_S) == GLFW_PRESS) {
playerPos.add(Vec3.mul(cameraFront, cameraSpeed * deltaTime));
playerPosition.add(Vec3.mul(cameraFront, cameraSpeed * deltaTime));
}
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_A) == GLFW_PRESS) {
playerPos.add(Vec3.mul(Vec3.cross(CAMERA_UP, cameraFront), -cameraSpeed * deltaTime));
playerPosition.add(Vec3.mul(Vec3.cross(CAMERA_UP, cameraFront), -cameraSpeed * deltaTime));
}
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_D) == GLFW_PRESS) {
playerPos.add(Vec3.mul(Vec3.cross(CAMERA_UP, cameraFront), cameraSpeed * deltaTime));
playerPosition.add(Vec3.mul(Vec3.cross(CAMERA_UP, cameraFront), cameraSpeed * deltaTime));
}
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS) {
if (!connection.getRenderProperties().getController().isGravityEnabled()) {
playerPos.add(0, -cameraSpeed * deltaTime, 0);
playerPosition.add(0, -cameraSpeed * deltaTime, 0);
}
}
if (glfwGetKey(GameWindow.getOpenGLWindow().getWindowId(), GLFW_KEY_SPACE) == GLFW_PRESS) {
if (!connection.getRenderProperties().getController().isGravityEnabled()) {
playerPos.add(0, cameraSpeed * deltaTime, 0);
playerPosition.add(0, cameraSpeed * deltaTime, 0);
}
if (connection.getRenderProperties().getController().isOnGround()) {
connection.getRenderProperties().getController().jump();
@ -64,7 +64,11 @@ public class PlayerMovement {
public void loop(float deltaTime) {
cameraFront = connection.getRenderProperties().getController().getCameraMovement().getCameraFront();
playerPos = connection.getRenderProperties().getController().getPlayerPos();
playerPosition = connection.getRenderProperties().getController().getPlayerPosition();
processInput(deltaTime);
}
public void setPlayerPosition(Vec3 playerPosition) {
this.playerPosition = playerPosition;
}
}