diff --git a/src/sig/Mesh.java b/src/sig/Mesh.java index a5f9fbd..eec3b6b 100644 --- a/src/sig/Mesh.java +++ b/src/sig/Mesh.java @@ -27,7 +27,7 @@ public class Mesh { protected List prepareRender(Block b) { return b.block.triangles; } - public boolean handleCollision(Block b) { + public boolean handleCollision(Block b,float x,float y) { return false; } } diff --git a/src/sig/SigRenderer.java b/src/sig/SigRenderer.java index b0d29c4..748f47b 100644 --- a/src/sig/SigRenderer.java +++ b/src/sig/SigRenderer.java @@ -31,7 +31,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene public static boolean WIREFRAME = false; public static boolean PROFILING = false; - public static boolean FLYING_MODE = true; + public static boolean FLYING_MODE = false; public static int SCREEN_WIDTH=1280; public static int SCREEN_HEIGHT=720; public final static long TIMEPERTICK = 16666667l; @@ -106,7 +106,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene zSpeed+=v.z; } - boolean checkCollisionSquare(float x,float y,float z) { + public static boolean checkCollisionSquare(float x,float y,float z) { for (int yy=0;yy=b.pos.y) { + if (this!=SigRenderer.currentStaircase && SigRenderer.vCamera.y>=b.pos.y) { boolean valid=false; - if (SigRenderer.vCamera.y>=b.pos.y+1f) { + if (SigRenderer.vCamera.y>=b.pos.y+3f) { valid=true; } else { + float diffX=Math.min(1,Math.max(0.3f,SigRenderer.vCamera.x-b.pos.x)); + float diffZ=Math.min(1,Math.max(0.3f,SigRenderer.vCamera.z-b.pos.z)); switch (b.getFacingDirection()) { case EAST: { - if (SigRenderer.vCamera.xb.pos.z+0.5f) { + if (SigRenderer.vCamera.z>b.pos.z+0.5f&&checkCollision(SigRenderer.vCamera.x+x, b.pos.y+(1-diffZ)+1.3f, SigRenderer.vCamera.z+z)) { valid=true; } }break; case SOUTH: { - if (SigRenderer.vCamera.zb.pos.x+0.5f) { + if (SigRenderer.vCamera.x>b.pos.x+0.5f&&checkCollision(SigRenderer.vCamera.x+x, b.pos.y+(1-diffX)+1.3f, SigRenderer.vCamera.z+z)) { valid=true; } }break;