OSDN Git Service

[added] SplineTest
authorbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Mon, 10 Jan 2011 18:42:59 +0000 (18:42 +0000)
committerbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Mon, 10 Jan 2011 18:42:59 +0000 (18:42 +0000)
tests/gdx-tests/src/com/badlogic/gdx/tests/Gdx2DTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SplineTest.java [new file with mode: 0644]
tests/gdx-tests/src/com/badlogic/gdx/tests/utils/GdxTests.java

index 192c1a5..93763b3 100644 (file)
@@ -98,8 +98,8 @@ public class Gdx2DTest extends GdxTest {
                \r
                rgba8888.clear(Color.rgba8888(1, 0, 0, 0.5f));\r
                rgba8888.setPixel(16, 16, Color.rgba8888(0, 0, 1, 1));\r
-               //if(rgba8888.getPixel(16, 16) != Color.rgba8888(0, 0, 1, 1)) throw new RuntimeException("rgba8888 error");\r
-               //if(rgba8888.getPixel(15, 16) != Color.rgba8888(1, 0, 0, 0.5f)) throw new RuntimeException("rgba8888 error");\r
+               if(rgba8888.getPixel(16, 16) != Color.rgba8888(0, 0, 1, 1)) throw new RuntimeException("rgba8888 error");\r
+               if(rgba8888.getPixel(15, 16) != Color.rgba8888(1, 0, 0, 0.5f)) throw new RuntimeException("rgba8888 error");\r
                rgba8888.drawLine(0,0,31,31,Color.rgba8888(0, 1, 0, 1));\r
                rgba8888.drawRect(10, 10, 5, 7, Color.rgba8888(1, 1, 0, 1));\r
                rgba8888.fillRect(20, 10, 5, 7, Color.rgba8888(0, 1, 1, 1));\r
@@ -116,7 +116,7 @@ public class Gdx2DTest extends GdxTest {
                        final int RUNS = 1000;\r
                        long startTime = System.nanoTime();             \r
                        for(int i = 0; i < RUNS; i++) {\r
-                               gdxPixmap.clear(0xffffffff);\r
+//                             gdxPixmap.clear(0xffffffff);\r
                                gdxPixmap.drawLine((int)(rand.nextFloat()*256), ((int)rand.nextFloat()*256), \r
                                                                                 (int)(rand.nextFloat()*256), ((int)rand.nextFloat()*256), 0xffffffff);\r
                                gdxPixmap.drawCircle(((int)rand.nextFloat()*256), ((int)rand.nextFloat()*256), ((int)rand.nextFloat() * 128), 0xffffffff);\r
@@ -132,7 +132,7 @@ public class Gdx2DTest extends GdxTest {
                        startTime = System.nanoTime();          \r
                        for(int i = 0; i < RUNS; i++) {\r
                                pixmap.setColor(1, 1, 1, 1);\r
-                               pixmap.fill();\r
+//                             pixmap.fill();\r
                                pixmap.setColor(1, 1, 1, 1);\r
                                pixmap.drawLine((int)(rand2.nextFloat()*256), ((int)rand2.nextFloat()*256), \r
                                                                                 (int)(rand2.nextFloat()*256), ((int)rand2.nextFloat()*256));\r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/SplineTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/SplineTest.java
new file mode 100644 (file)
index 0000000..79bf9f4
--- /dev/null
@@ -0,0 +1,108 @@
+\r
+package com.badlogic.gdx.tests;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.graphics.GL10;\r
+import com.badlogic.gdx.graphics.g2d.OrthographicCamera;\r
+import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer;\r
+import com.badlogic.gdx.math.CatmullRomSpline;\r
+import com.badlogic.gdx.math.Vector2;\r
+import com.badlogic.gdx.math.Vector3;\r
+import com.badlogic.gdx.tests.utils.GdxTest;\r
+\r
+public class SplineTest extends GdxTest {\r
+\r
+       @Override public boolean needsGL20 () {\r
+               return false;\r
+       }\r
+\r
+       final int CONTROL_POINTS = 10;\r
+       OrthographicCamera cam;\r
+       ImmediateModeRenderer renderer;\r
+       CatmullRomSpline spline;\r
+       Vector3[] path;\r
+       \r
+\r
+       @Override public void create () {\r
+               cam = new OrthographicCamera();\r
+               cam.setViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+               cam.getPosition().set(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, 0);\r
+               renderer = new ImmediateModeRenderer();\r
+               spline = new CatmullRomSpline();\r
+               float x = 0;\r
+               float y = Gdx.graphics.getHeight() / 2;\r
+               spline.add(new Vector3(x - 50, y, 0));\r
+               for(int i = 0; i < CONTROL_POINTS; i++) {\r
+                       spline.add(new Vector3(x, y, 0));\r
+                       x += Gdx.graphics.getWidth() / (CONTROL_POINTS - 2);\r
+               }\r
+               spline.add(new Vector3(Gdx.graphics.getWidth() + 50, y, 0));\r
+               path = new Vector3[(CONTROL_POINTS - 2) * 7 - 1];\r
+               for(int i = 0; i < path.length; i++) \r
+                       path[i] = new Vector3();\r
+               spline.getPath(path, 5);                \r
+       }       \r
+       \r
+       @Override public void render () {\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);               \r
+               cam.setMatrices();              \r
+               \r
+               renderer.begin(GL10.GL_TRIANGLES);\r
+               for(int i = 0; i < path.length - 1; i++) {\r
+                       Vector3 point1 = path[i];\r
+                       Vector3 point2 = path[i+1];\r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point1.x, point1.y, 0);\r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point1.x, 0, 0);\r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point2.x, point2.y, 0);\r
+                       \r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point2.x, point2.y, 0);\r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point1.x, 0, 0);\r
+                       renderer.color(1, 1, 1, 1);\r
+                       renderer.vertex(point2.x, 0, 0);\r
+               }\r
+               renderer.end();\r
+               \r
+               Gdx.gl10.glPointSize(4);\r
+               renderer.begin(GL10.GL_POINTS);\r
+               for(int i = 0; i < spline.getControlPoints().size(); i++) {\r
+                       Vector3 point = spline.getControlPoints().get(i);\r
+                       renderer.color(1, 0, 0, 1);\r
+                       renderer.vertex(point.x, point.y, 0);\r
+               }\r
+               renderer.end();\r
+               Gdx.gl10.glPointSize(1);\r
+               \r
+               processInput();\r
+       }\r
+       \r
+       Vector3 point = new Vector3();\r
+       private void processInput() {\r
+               if(Gdx.input.isTouched()) {                     \r
+                       Vector3 nearest = null;\r
+                       float nearestDist = Float.MAX_VALUE;\r
+                       point.set(cam.getScreenToWorldX(Gdx.input.getX()), \r
+                                cam.getScreenToWorldY(Gdx.input.getY()),\r
+                                0);                    \r
+                       \r
+                       for(int i = 0; i < spline.getControlPoints().size(); i++) {\r
+                               Vector3 controlPoint = spline.getControlPoints().get(i);\r
+                               float dist = Math.abs(point.x - controlPoint.x);\r
+                               if(dist < nearestDist) {\r
+                                       nearest = controlPoint;\r
+                                       nearestDist = dist; \r
+                               }                                                               \r
+                       }\r
+                       \r
+                       nearest.y += (point.y - nearest.y) * Gdx.graphics.getDeltaTime();               \r
+                       spline.getPath(path, 5);\r
+               }\r
+       }\r
+}\r
index d840a28..97cb4fd 100644 (file)
@@ -20,6 +20,7 @@ import com.badlogic.gdx.tests.AlphaTest;
 import com.badlogic.gdx.tests.AtlasIssueTest;\r
 import com.badlogic.gdx.tests.AudioDeviceTest;\r
 import com.badlogic.gdx.tests.AudioRecorderTest;\r
+import com.badlogic.gdx.tests.SplineTest;\r
 import com.badlogic.gdx.tests.BitmapFontAlignmentTest;\r
 import com.badlogic.gdx.tests.BitmapFontFlipTest;\r
 import com.badlogic.gdx.tests.BitmapFontTest;\r
@@ -85,9 +86,10 @@ import com.badlogic.gdx.tests.gles2.SimpleVertexShader;
 public class GdxTests \r
 {\r
        public static final Class[] tests = {\r
-               Gdx2DTest.class,\r
+               Gdx2DTest.class,                \r
                AlphaTest.class,\r
-               AtlasIssueTest.class,\r
+               SplineTest.class,\r
+               AtlasIssueTest.class,           \r
                FilterPerformanceTest.class,\r
                AudioDeviceTest.class,\r
                AudioRecorderTest.class,\r