OSDN Git Service

[removed] LwjglTestStarter started SpriteCacheOffsetTest by default.
authorbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Sun, 5 Dec 2010 19:13:11 +0000 (19:13 +0000)
committerbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Sun, 5 Dec 2010 19:13:11 +0000 (19:13 +0000)
[added] IsometricTileTest to demonstrate that rendering iso tile maps is dead simple...
[added] isotile.png for IsometricTileTest

tests/gdx-tests-android/assets/data/isotile.png [new file with mode: 0644]
tests/gdx-tests-jogl/data/isotile.png [new file with mode: 0644]
tests/gdx-tests-jogl/data/isotile2.png [new file with mode: 0644]
tests/gdx-tests-jogl/src/com/badlogic/gdx/tests/jogl/JoglDebugStarter.java
tests/gdx-tests-lwjgl/data/isotile.png [new file with mode: 0644]
tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglTestStarter.java
tests/gdx-tests/src/com/badlogic/gdx/tests/IsometricTileTest.java [new file with mode: 0644]
tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/utils/GdxTests.java
tests/gdx-tests/src/com/badlogic/gdx/tests/utils/OrthoCamController.java [new file with mode: 0644]

diff --git a/tests/gdx-tests-android/assets/data/isotile.png b/tests/gdx-tests-android/assets/data/isotile.png
new file mode 100644 (file)
index 0000000..a0cd1da
Binary files /dev/null and b/tests/gdx-tests-android/assets/data/isotile.png differ
diff --git a/tests/gdx-tests-jogl/data/isotile.png b/tests/gdx-tests-jogl/data/isotile.png
new file mode 100644 (file)
index 0000000..a0cd1da
Binary files /dev/null and b/tests/gdx-tests-jogl/data/isotile.png differ
diff --git a/tests/gdx-tests-jogl/data/isotile2.png b/tests/gdx-tests-jogl/data/isotile2.png
new file mode 100644 (file)
index 0000000..0814075
Binary files /dev/null and b/tests/gdx-tests-jogl/data/isotile2.png differ
index 806732f..8df7e8a 100644 (file)
@@ -18,6 +18,6 @@ import com.badlogic.gdx.backends.jogl.JoglApplication;
 public class JoglDebugStarter {\r
        \r
        public static void main( String[] argv ) {\r
-               new JoglApplication( new com.badlogic.gdx.tests.TileTest(), "Debug Test", 480, 320, false );            \r
+               new JoglApplication( new com.badlogic.gdx.tests.IsometricTileTest(), "Debug Test", 480, 320, false );           \r
        }\r
 }\r
diff --git a/tests/gdx-tests-lwjgl/data/isotile.png b/tests/gdx-tests-lwjgl/data/isotile.png
new file mode 100644 (file)
index 0000000..a0cd1da
Binary files /dev/null and b/tests/gdx-tests-lwjgl/data/isotile.png differ
index 661a926..28c3d55 100644 (file)
@@ -60,10 +60,7 @@ public class LwjglTestStarter {
                        });\r
 \r
                        add(pane, BorderLayout.CENTER);\r
-                       add(button, BorderLayout.SOUTH);\r
-\r
-                       GdxTest test = GdxTests.newTest("SpriteCacheOffsetTest");\r
-                       new LwjglApplication(test, "Test", 480, 320, test.needsGL20());\r
+                       add(button, BorderLayout.SOUTH);                \r
                }\r
        }\r
 \r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/IsometricTileTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/IsometricTileTest.java
new file mode 100644 (file)
index 0000000..5e1a21d
--- /dev/null
@@ -0,0 +1,112 @@
+\r
+package com.badlogic.gdx.tests;\r
+\r
+import java.util.Random;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.graphics.Color;\r
+import com.badlogic.gdx.graphics.GL10;\r
+import com.badlogic.gdx.graphics.ImmediateModeRenderer;\r
+import com.badlogic.gdx.graphics.OrthographicCamera;\r
+import com.badlogic.gdx.graphics.SpriteCache;\r
+import com.badlogic.gdx.graphics.Texture;\r
+import com.badlogic.gdx.graphics.Texture.TextureFilter;\r
+import com.badlogic.gdx.graphics.Texture.TextureWrap;\r
+import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.tests.utils.OrthoCamController;\r
+\r
+public class IsometricTileTest extends GdxTest {\r
+       static final int LAYERS = 1;\r
+       static final int WIDTH = 4;\r
+       static final int HEIGHT = 5;\r
+       static final int TILES_PER_LAYER = WIDTH * HEIGHT;\r
+       static final int TILE_WIDTH = 54;\r
+       static final int TILE_HEIGHT = 54;\r
+       static final int TILE_HEIGHT_DIAMOND = 28;\r
+       static final int BOUND_X = HEIGHT * TILE_WIDTH / 2 + WIDTH * TILE_WIDTH / 2;\r
+       static final int BOUND_Y = HEIGHT * TILE_HEIGHT_DIAMOND / 2 + WIDTH * TILE_HEIGHT_DIAMOND / 2;\r
+\r
+       Texture texture;\r
+       SpriteCache[] caches = new SpriteCache[LAYERS]; \r
+       int[] layers = new int[LAYERS];\r
+       OrthographicCamera cam;\r
+       OrthoCamController camController;\r
+       ImmediateModeRenderer renderer;\r
+       long startTime = System.nanoTime();\r
+\r
+       @Override public void create () {\r
+               cam = new OrthographicCamera();\r
+               cam.setViewport(480, 320);\r
+               camController = new OrthoCamController(cam);\r
+               Gdx.input.setInputProcessor(camController);\r
+\r
+               renderer = new ImmediateModeRenderer();\r
+               texture = Gdx.graphics.newTexture(Gdx.files.internal("data/isotile.png"), \r
+                                                                                                        TextureFilter.Nearest, TextureFilter.Nearest,\r
+                                                                                                        TextureWrap.ClampToEdge, TextureWrap.ClampToEdge);\r
+\r
+               Random rand = new Random();\r
+               for (int i = 0; i < LAYERS; i++) {\r
+                       caches[i] = new SpriteCache();\r
+                       SpriteCache cache = caches[i];\r
+                       cache.beginCache();\r
+                                       \r
+                       int colX = HEIGHT * TILE_WIDTH / 2 - TILE_WIDTH / 2;\r
+                       int colY = BOUND_Y - TILE_HEIGHT_DIAMOND;\r
+                       for(int x=0; x < WIDTH; x++) {                                          \r
+                               for(int y=0; y < HEIGHT; y++) {                                                         \r
+                                       int tileX = colX - y * TILE_WIDTH / 2;\r
+                                       int tileY = colY - y * TILE_HEIGHT_DIAMOND / 2;\r
+                                       cache.add(texture, tileX, tileY, rand.nextInt(2) * 54, 0,TILE_WIDTH, TILE_HEIGHT, Color.WHITE);                         \r
+                               }\r
+                               colX += TILE_WIDTH / 2;\r
+                               colY -= TILE_HEIGHT_DIAMOND / 2;\r
+                       }\r
+\r
+                       layers[i] = cache.endCache();\r
+               }\r
+       }\r
+\r
+       @Override public void render () {\r
+               GL10 gl = Gdx.gl10;\r
+               gl.glClearColor(0.7f, 0.7f, 0.7f, 1);\r
+               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               cam.update();\r
+\r
+               gl.glEnable(GL10.GL_BLEND);\r
+               gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);\r
+               for (int i = 0; i < LAYERS; i++) {\r
+                       SpriteCache cache = caches[i];\r
+                       cache.setProjectionMatrix(cam.getCombinedMatrix());\r
+                       cache.begin();\r
+                       cache.draw(layers[i]);\r
+                       cache.end();\r
+               }\r
+               \r
+               renderer.begin(GL10.GL_LINES);\r
+               renderer.color(1, 0, 0, 1);\r
+               renderer.vertex(0,0,0);\r
+               renderer.color(1, 0, 0, 1);\r
+               renderer.vertex(500,0,0);\r
+               renderer.color(0, 1, 0, 1);\r
+               renderer.vertex(0,0,0);\r
+               renderer.color(0, 1, 0, 1);\r
+               renderer.vertex(0,500,0);\r
+               \r
+               renderer.color(0, 0, 1, 1);\r
+               renderer.vertex(0,BOUND_Y,0);\r
+               renderer.color(0, 0, 1, 1);\r
+               renderer.vertex(BOUND_X,BOUND_Y,0);\r
+               \r
+               renderer.color(0, 0, 1, 1);\r
+               renderer.vertex(BOUND_X,0,0);\r
+               renderer.color(0, 0, 1, 1);\r
+               renderer.vertex(BOUND_X,BOUND_Y,0);\r
+               \r
+               renderer.end();\r
+       }\r
+\r
+       @Override public boolean needsGL20 () {\r
+               return false;\r
+       }\r
+}\r
index ed9b8ad..48afca8 100644 (file)
@@ -23,6 +23,7 @@ import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.Texture.TextureFilter;\r
 import com.badlogic.gdx.graphics.Texture.TextureWrap;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.tests.utils.OrthoCamController;\r
 \r
 public class TileTest extends GdxTest {\r
        static final int LAYERS = 5;\r
@@ -30,17 +31,22 @@ public class TileTest extends GdxTest {
        static final int WIDTH = 15;\r
        static final int HEIGHT = 10;\r
        static final int TILES_PER_LAYER = WIDTH * HEIGHT;\r
+       \r
        SpriteCache[] caches = new SpriteCache[LAYERS];\r
        Texture texture;\r
        int[] layers = new int[LAYERS];\r
        OrthographicCamera cam;\r
+       OrthoCamController camController;\r
        long startTime = System.nanoTime();\r
        \r
        @Override\r
        public void create() {\r
                cam = new OrthographicCamera();\r
                cam.setViewport(480, 320);\r
-               cam.getPosition().set(WIDTH*32/2, HEIGHT*32/2,0);               \r
+               cam.getPosition().set(WIDTH*32/2, HEIGHT*32/2,0);\r
+               camController = new OrthoCamController(cam);\r
+               Gdx.input.setInputProcessor(camController);\r
+               \r
                texture = Gdx.graphics.newTexture(Gdx.files.internal("data/tiles.png"), TextureFilter.Nearest, TextureFilter.Nearest, TextureWrap.ClampToEdge, TextureWrap.ClampToEdge);\r
                \r
                Random rand = new Random();\r
@@ -67,6 +73,7 @@ public class TileTest extends GdxTest {
                cam.update();\r
                \r
                gl.glEnable(GL10.GL_BLEND);\r
+               gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);\r
                for(int i=0; i < LAYERS; i++) {\r
                        SpriteCache cache = caches[i];                  \r
                        cache.setProjectionMatrix(cam.getCombinedMatrix());\r
index 50bbdc4..491de61 100644 (file)
@@ -31,6 +31,7 @@ import com.badlogic.gdx.tests.ImmediateModeRendererTest;
 import com.badlogic.gdx.tests.IndexBufferObjectClassTest;\r
 import com.badlogic.gdx.tests.IndexBufferObjectShaderTest;\r
 import com.badlogic.gdx.tests.InputTest;\r
+import com.badlogic.gdx.tests.IsometricTileTest;\r
 import com.badlogic.gdx.tests.LifeCycleTest;\r
 import com.badlogic.gdx.tests.MD5Test;\r
 import com.badlogic.gdx.tests.ManagedTest;\r
@@ -96,6 +97,7 @@ public class GdxTests
                IndexBufferObjectClassTest.class,\r
                IndexBufferObjectShaderTest.class,\r
                InputTest.class,\r
+               IsometricTileTest.class,\r
                LifeCycleTest.class,\r
                ManagedTest.class,\r
                ManualBindTest.class,\r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/utils/OrthoCamController.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/utils/OrthoCamController.java
new file mode 100644 (file)
index 0000000..bb3ad0a
--- /dev/null
@@ -0,0 +1,33 @@
+package com.badlogic.gdx.tests.utils;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.InputAdapter;\r
+import com.badlogic.gdx.graphics.OrthographicCamera;\r
+import com.badlogic.gdx.math.Vector2;\r
+\r
+public class OrthoCamController extends InputAdapter {\r
+       final OrthographicCamera camera;\r
+       final Vector2 curr = new Vector2();\r
+       final Vector2 last = new Vector2(-1, -1);       \r
+       final Vector2 delta = new Vector2();\r
+       \r
+       public OrthoCamController(OrthographicCamera camera) {\r
+               this.camera = camera;\r
+       }\r
+\r
+       @Override public boolean touchDragged (int x, int y, int pointer) {\r
+               camera.getScreenToWorld(x, y, curr);\r
+               if(!(last.x == -1 && last.y == -1)) {\r
+                       camera.getScreenToWorld(last.x, last.y, delta);\r
+                       delta.sub(curr);\r
+                       camera.getPosition().add(delta.x, delta.y, 0);\r
+               }\r
+               last.set(x, y);\r
+               return false;\r
+       }\r
+       \r
+       @Override public boolean touchUp(int x, int y, int pointer) {\r
+               last.set(-1, -1);\r
+               return false;\r
+       }\r
+}\r