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