diff --git a/src/sig/Block.java b/src/sig/Block.java index de61213..50a37d0 100644 --- a/src/sig/Block.java +++ b/src/sig/Block.java @@ -35,14 +35,24 @@ public class Block { if (block instanceof Cube) { Texture t1 = block.triangles.get(Texture.SOUTH).tex; Texture t2 = block.triangles.get(Texture.SOUTH+1).tex; + int dir1 = block.triangles.get(Texture.SOUTH).dir; + int dir2 = block.triangles.get(Texture.SOUTH+1).dir; block.triangles.get(Texture.SOUTH).tex=block.triangles.get(Texture.EAST).tex; + block.triangles.get(Texture.SOUTH).dir=block.triangles.get(Texture.EAST).dir; block.triangles.get(Texture.SOUTH+1).tex=block.triangles.get(Texture.EAST+1).tex; + block.triangles.get(Texture.SOUTH+1).dir=block.triangles.get(Texture.EAST+1).dir; block.triangles.get(Texture.EAST).tex=block.triangles.get(Texture.NORTH).tex; + block.triangles.get(Texture.EAST).dir=block.triangles.get(Texture.NORTH).dir; block.triangles.get(Texture.EAST+1).tex=block.triangles.get(Texture.NORTH+1).tex; + block.triangles.get(Texture.EAST+1).dir=block.triangles.get(Texture.NORTH+1).dir; block.triangles.get(Texture.NORTH).tex=block.triangles.get(Texture.WEST).tex; + block.triangles.get(Texture.NORTH).dir=block.triangles.get(Texture.WEST).dir; block.triangles.get(Texture.NORTH+1).tex=block.triangles.get(Texture.WEST+1).tex; + block.triangles.get(Texture.NORTH+1).dir=block.triangles.get(Texture.WEST+1).dir; block.triangles.get(Texture.WEST).tex=t1; + block.triangles.get(Texture.WEST).dir=dir1; block.triangles.get(Texture.WEST+1).tex=t2; + block.triangles.get(Texture.WEST+1).dir=dir2; for (int i=8;i<=11;i++) { Triangle t = block.triangles.get(i); Vector2[] tt = new Vector2[]{t.T,t.U,t.V}; diff --git a/src/sig/Cube.java b/src/sig/Cube.java index bb27ca7..6de3cd5 100644 --- a/src/sig/Cube.java +++ b/src/sig/Cube.java @@ -52,6 +52,7 @@ public class Cube extends Mesh{ if (!b.neighbors.FORWARD) { tris.add(b.block.triangles.get(4)); tris.add(b.block.triangles.get(5)); + System.out.println("No forward neighbor."); } if (!b.neighbors.BACKWARD) { tris.add(b.block.triangles.get(0)); diff --git a/src/sig/Panel.java b/src/sig/Panel.java index 44b3c7b..bb0aa95 100644 --- a/src/sig/Panel.java +++ b/src/sig/Panel.java @@ -371,13 +371,17 @@ public class Panel extends JPanel implements Runnable { triPreTransform.unmodifiedTri=t; if (t.b!=null) { - matWorld = Matrix.MakeRotationY((float)(t.b.getFacingDirection().ordinal()*(Math.PI/2))); + if (!(t.b.block instanceof Cube)) { + matWorld = Matrix.MakeRotationY((float)(t.b.getFacingDirection().ordinal()*(Math.PI/2))); + + triTransformed.A = Matrix.MultiplyVector(matWorld,triPreTransform.A); + triTransformed.B = Matrix.MultiplyVector(matWorld,triPreTransform.B); + triTransformed.C = Matrix.MultiplyVector(matWorld,triPreTransform.C); + triPreTransform.copyExtraDataTo(triTransformed); + } else { + triTransformed=triPreTransform; + } } - - triTransformed.A = Matrix.MultiplyVector(matWorld,triPreTransform.A); - triTransformed.B = Matrix.MultiplyVector(matWorld,triPreTransform.B); - triTransformed.C = Matrix.MultiplyVector(matWorld,triPreTransform.C); - triPreTransform.copyExtraDataTo(triTransformed); if (t.b!=null) { matWorld = Matrix.MakeTranslation(t.b.pos.x+0.5f,t.b.pos.y,t.b.pos.z+0.5f); diff --git a/src/sig/SigRenderer.java b/src/sig/SigRenderer.java index a781150..d25af41 100644 --- a/src/sig/SigRenderer.java +++ b/src/sig/SigRenderer.java @@ -33,7 +33,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene public static boolean WIREFRAME = false; public static boolean PROFILING = false; - public static boolean FLYING_MODE = false; + public static boolean FLYING_MODE = true; public static int SCREEN_WIDTH=1280; public static int SCREEN_HEIGHT=720; public final static long TIMEPERTICK = 16666667l; @@ -391,8 +391,8 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene SigRenderer(JFrame f) { //cube = new Mesh(OBJReader.ReadOBJFile("teapot.obj",false)); Random r = new Random(438107); - for (int x=0;x<64;x++) { - for (int z=0;z<64;z++) { + for (int x=0;x<1;x++) { + for (int z=0;z<1;z++) { addBlock(new Vector(x,0,z),Cube.class,BlockType.GRASS,FacingDirection.SOUTH); //addBlock(new Vector(x,1,z),Staircase.class,BlockType.JUNGLE_PLANK,FacingDirection.SOUTH); //addBlock(new Vector(x,2,z),Staircase.class,BlockType.SPRUCE_PLANK,FacingDirection.SOUTH);