Skip to content

Commit

Permalink
Improve collision check
Browse files Browse the repository at this point in the history
  • Loading branch information
minecraft8997 committed Nov 11, 2023
1 parent 3b8ace8 commit e26ff14
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# McLord Classic
# McLordClassic
A multiplayer cuboid sandbox game engine. Additionally, it is yet another attempt re-implement Minecraft Classic.

[McLordClassicPlugin](https://github.com/minecraft8997/McLordClassicPlugin) is required for the game to properly operate.
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ allprojects {

version = '1.0'
ext {
appName = "McLord Classic"
appName = "McLordClassic"
gdxVersion = '1.12.0'
roboVMVersion = '2.3.20'
box2DLightsVersion = '1.5'
Expand Down
28 changes: 22 additions & 6 deletions core/src/ru/mclord/classic/McLordFirstPersonCameraController.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,31 @@ public void update(float deltaTime) {
}
super.update(deltaTime);

fixCords(initialCameraPosition);
Vector3 newCameraPosition = new Vector3(camera.position);
camera.position.set(initialCameraPosition);

float dX = newCameraPosition.x - initialCameraPosition.x;
float dY = newCameraPosition.y - initialCameraPosition.y;
float dZ = newCameraPosition.z - initialCameraPosition.z;

camera.position.x += dX;
if (collision()) {
camera.position.x -= dX;
}
camera.position.y += dY;
if (collision()) {
camera.position.y -= dY;
}
camera.position.z += dZ;
if (collision()) {
camera.position.z -= dZ;
}

camera.update(true);
}

private void fixCords(Vector3 initialCameraPosition) {
if (xRay) return;
private boolean collision() {
if (xRay) return false;

// too bad, fixme at some point
int x = (int) (camera.position.x);
Expand All @@ -70,9 +88,7 @@ private void fixCords(Vector3 initialCameraPosition) {
blocks[6] = level.getBlockDefAt(x, y, z1);
blocks[7] = level.getBlockDefAt(x1, y, z1);

if (checkInvalid()) {
camera.position.set(initialCameraPosition);
}
return checkInvalid();
}

private boolean checkInvalid() {
Expand Down
2 changes: 1 addition & 1 deletion desktop/src/ru/mclord/classic/DesktopLauncher.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static void main(String[] arg) throws IOException {
config.useVsync(vsync);
config.disableAudio(!audio);
config.setHdpiMode(hdpiMode);
config.setTitle("McLord Classic");
config.setTitle("McLordClassic");
config.setWindowIcon();

new Lwjgl3Application(McLordClassic.game().linkProperties(props), config);
Expand Down

0 comments on commit e26ff14

Please sign in to comment.