OSDN Git Service

[fixed] GwtGL20 didn't deallocate texture ids
authorbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Fri, 16 Mar 2012 14:12:40 +0000 (14:12 +0000)
committerbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Fri, 16 Mar 2012 14:12:40 +0000 (14:12 +0000)
[fixed] GwtGraphics reports ppi/ppc/density
[fixed] Everything should use TimeUtils#nanoTime/millies instead of System.nanoTime for greater portability.
[fixed] AssetManager fully functional :D
[fixed] added missing methods to Pixmap emu class
[fixed] added missing methods to Texture emu class
[added] ParticleEffect emu class
[fixed] ShaderProgram emu class now handles setting uniforms correctly...
[fixed] Matrix4 emu class now emulates all original Matrix4 methods
[added] ArrayMap, SerializationException to emu package
[changed] All the tests are fixed up. Made a list of tests in GwtTestStarter that work. This excludes any tests using box2d, scene2d or OpenGL ES 1.0.
[fixed] other classes so we can have more complete gwt backend support.

72 files changed:
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtApplication.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtFileHandle.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGL20.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/AssetLoadingTask.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/AssetManager.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/TextureLoader.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/resolvers/ResolutionFileResolver.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/files/FileHandleStream.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/Pixmap.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/Texture.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/g2d/ParticleEffect.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/glutils/ShaderProgram.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/math/Matrix4.java
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/ArrayMap.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/SerializationException.java [new file with mode: 0644]
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/TimeUtils.java [new file with mode: 0644]
gdx/src/com/badlogic/gdx.gwt.xml
gdx/src/com/badlogic/gdx/assets/AssetLoadingTask.java
gdx/src/com/badlogic/gdx/assets/AssetManager.java
gdx/src/com/badlogic/gdx/graphics/g3d/keyframed/KeyframedModel.java
gdx/src/com/badlogic/gdx/graphics/g3d/loaders/md5/MD5Jni.java
gdx/src/com/badlogic/gdx/input/GestureDetector.java
gdx/src/com/badlogic/gdx/scenes/scene2d/Actor.java
gdx/src/com/badlogic/gdx/scenes/scene2d/ui/TextField.java
gdx/src/com/badlogic/gdx/utils/Base64Coder.java
gdx/src/com/badlogic/gdx/utils/GwtModuleGenerator.java [new file with mode: 0644]
gdx/src/com/badlogic/gdx/utils/TimeUtils.java [new file with mode: 0644]
tests/gdx-tests-android/assets/assets.txt
tests/gdx-tests-gwt/.classpath
tests/gdx-tests-gwt/.settings/com.google.gwt.eclipse.core.prefs
tests/gdx-tests-gwt/src/com/badlogic/gdx/tests/gwt/client/GwtTestStarter.java
tests/gdx-tests-gwt/war/assets.txt
tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java
tests/gdx-tests/src/com/badlogic/gdx/GdxTests.gwt.xml
tests/gdx-tests/src/com/badlogic/gdx/tests/AssetManagerTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/BitmapFontAlignmentTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/BitmapFontFlipTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/BitmapFontTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/BufferUtilsTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/DecalTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/DeltaTimeTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/FillrateTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/IntegerBitmapFontTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/InverseKinematicsTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/IsometricTileTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/MD5Test.java
tests/gdx-tests/src/com/badlogic/gdx/tests/MatrixJNITest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/MeshShaderTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/MultitouchTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/MusicTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/ParallaxTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/ParticleEmitterTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/PixelsPerInchTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/PixmapBlendingTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/PixmapTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/ShapeRendererTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SimpleAnimationTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SimpleTest.java [deleted file]
tests/gdx-tests/src/com/badlogic/gdx/tests/SpriteBatchShaderTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SpriteBatchTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SpriteCacheTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/SpritePerformanceTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/TerrainTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/TextureBindTestGL2.java [deleted file]
tests/gdx-tests/src/com/badlogic/gdx/tests/TexturePackerAtlasTest.java [deleted file]
tests/gdx-tests/src/com/badlogic/gdx/tests/VBOVATest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/VertexBufferObjectShaderTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/WaterRipples.java
tests/gdx-tests/src/com/badlogic/gdx/tests/YDownTest.java
tests/gdx-tests/src/com/badlogic/gdx/tests/utils/GdxTests.java

index 21f4352..894288e 100644 (file)
@@ -425,4 +425,8 @@ public abstract class GwtApplication implements EntryPoint, Application {
        public String getBaseUrl () {\r
                return preloader.baseUrl;\r
        }\r
+\r
+       public Preloader getPreloader () {\r
+               return preloader;\r
+       }\r
 }\r
index 0080143..9e11a71 100644 (file)
@@ -12,6 +12,7 @@ import java.io.UnsupportedEncodingException;
 import java.io.Writer;\r
 \r
 import com.badlogic.gdx.Files.FileType;\r
+import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.backends.gwt.preloader.Preloader;\r
 import com.badlogic.gdx.files.FileHandle;\r
 import com.badlogic.gdx.utils.GdxRuntimeException;\r
@@ -27,6 +28,12 @@ public class GwtFileHandle extends FileHandle {
                this.file = fileName;\r
                this.type = type;\r
        }\r
+       \r
+       public GwtFileHandle(String path) {\r
+               this.type = FileType.Internal;\r
+               this.preloader = ((GwtApplication)Gdx.app).getPreloader();\r
+               this.file = path;\r
+       }\r
 \r
        public String path () {\r
                return file;\r
index a844a22..b67336f 100644 (file)
@@ -243,6 +243,7 @@ public class GwtGL20 implements GL20 {
                for(int i = 0; i < n; i++) {\r
                        int id = textures.get();\r
                        WebGLTexture texture = this.textures.get(id);\r
+                       deallocateTextureId(id);\r
                        gl.deleteTexture(texture);\r
                }\r
        }\r
@@ -274,8 +275,7 @@ public class GwtGL20 implements GL20 {
 \r
        @Override\r
        public void glDrawElements (int mode, int count, int type, Buffer indices) {\r
-               // FIXME this assumes that we actually use index buffers, not index arrays...\r
-               gl.drawElements(mode, count, type, indices.position());\r
+               gl.drawElements(mode, count, type, indices.position()); // FIXME this is assuming WebGL supports client side buffers...\r
        }\r
 \r
        @Override\r
@@ -344,8 +344,7 @@ public class GwtGL20 implements GL20 {
 \r
        @Override\r
        public void glReadPixels (int x, int y, int width, int height, int format, int type, Buffer pixels) {\r
-               // FIXME\r
-               throw new GdxRuntimeException("not implemented");\r
+               throw new GdxRuntimeException("Not supported by GWT backend");\r
        }\r
 \r
        @Override\r
index a949a0e..87a8814 100644 (file)
@@ -130,22 +130,22 @@ public class GwtGraphics implements Graphics {
 \r
        @Override\r
        public float getPpiX () {\r
-               return 0;\r
+               return 96;\r
        }\r
 \r
        @Override\r
        public float getPpiY () {\r
-               return 0;\r
+               return 96;\r
        }\r
 \r
        @Override\r
        public float getPpcX () {\r
-               return 0;\r
+               return 96 / 2.54f;\r
        }\r
 \r
        @Override\r
        public float getPpcY () {\r
-               return 0;\r
+               return 96 / 2.54f;\r
        }\r
 \r
        @Override\r
@@ -268,7 +268,7 @@ public class GwtGraphics implements Graphics {
        \r
        @Override\r
        public float getDensity () {\r
-               throw new GdxRuntimeException("No supported");\r
+               return 96 / 160;\r
        }\r
 \r
        @Override\r
index 2c3f282..276be55 100644 (file)
@@ -7,6 +7,7 @@ import java.util.Set;
 import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.Input;\r
 import com.badlogic.gdx.InputProcessor;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 import com.google.gwt.core.client.JavaScriptObject;\r
 import com.google.gwt.dom.client.Document;\r
 import com.google.gwt.dom.client.Element;\r
@@ -321,7 +322,7 @@ public class GwtInput implements Input {
                        this.deltaY = 0;\r
                        this.mouseX = (int)getRelativeX(e, canvas);\r
                        this.mouseY = (int)getRelativeY(e, canvas);\r
-                       this.currentEventTimeStamp = System.currentTimeMillis() * 1000;\r
+                       this.currentEventTimeStamp = TimeUtils.nanoTime();\r
                        if(processor != null) processor.touchDown(mouseX, mouseY, 0, getButton(e.getButton()));\r
                }\r
                \r
@@ -330,7 +331,7 @@ public class GwtInput implements Input {
                        this.deltaY = (int)getRelativeY(e, canvas) - mouseY;\r
                        this.mouseX = (int)getRelativeX(e, canvas);\r
                        this.mouseY = (int)getRelativeY(e, canvas);\r
-                       this.currentEventTimeStamp = System.currentTimeMillis() * 1000;\r
+                       this.currentEventTimeStamp = TimeUtils.nanoTime();\r
                        if(processor != null) {\r
                                if(touched) processor.touchDragged(mouseX, mouseY, 0);\r
                                else processor.touchMoved(mouseX, mouseY);\r
@@ -345,7 +346,7 @@ public class GwtInput implements Input {
                        this.deltaY = (int)getRelativeY(e, canvas) - mouseY;\r
                        this.mouseX = (int)getRelativeX(e, canvas);\r
                        this.mouseY = (int)getRelativeY(e, canvas);\r
-                       this.currentEventTimeStamp = System.currentTimeMillis() * 1000;\r
+                       this.currentEventTimeStamp = TimeUtils.nanoTime();\r
                        this.touched = false;\r
                        if(processor != null) processor.touchUp(mouseX, mouseY, 0, getButton(e.getButton()));\r
                }\r
index 84cce09..ff31a66 100644 (file)
@@ -1,17 +1,19 @@
 package com.badlogic.gdx.assets;\r
 \r
-import java.util.ArrayList;\r
-\r
 import com.badlogic.gdx.assets.loaders.AssetLoader;\r
+import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader;\r
+import com.badlogic.gdx.assets.loaders.SynchronousAssetLoader;\r
+import com.badlogic.gdx.utils.Array;\r
 \r
 public class AssetLoadingTask {\r
        AssetManager manager;\r
        public AssetDescriptor assetDesc;\r
        AssetLoader loader;\r
-       public boolean cancel;\r
-       public long startTime;\r
-       public boolean dependenciesLoaded;\r
-       public ArrayList<AssetDescriptor> dependencies;\r
+       boolean cancel;\r
+       long startTime;\r
+       boolean dependenciesLoaded;\r
+       Array<AssetDescriptor> dependencies;\r
+       Object asset;\r
        \r
        public AssetLoadingTask(AssetManager manager, AssetDescriptor desc, AssetLoader loader) {\r
                this.manager = manager;\r
@@ -20,9 +22,51 @@ public class AssetLoadingTask {
        }\r
        \r
        public boolean update () {\r
-               return false;\r
+               if(loader instanceof AsynchronousAssetLoader) {\r
+                       handleAsynchLoader((AsynchronousAssetLoader)loader);\r
+               } else {\r
+                       handleSynchLoader((SynchronousAssetLoader)loader);\r
+               }\r
+               return asset != null;\r
+       }\r
+       \r
+       private void handleSynchLoader (SynchronousAssetLoader loader) {\r
+               if(!dependenciesLoaded) {\r
+                       Array<AssetDescriptor> dependencies = loader.getDependencies(assetDesc.fileName, assetDesc.params);\r
+                       if (dependencies != null) {\r
+                               for (AssetDescriptor desc : dependencies) {\r
+                                       manager.injectDependency(assetDesc.fileName, desc);\r
+                               }\r
+                               dependenciesLoaded = true;\r
+                       } else {\r
+                               // if we have no dependencies, we load the async part of the task immediately.\r
+                               asset = loader.load(manager, assetDesc.fileName, assetDesc.params);\r
+                       }\r
+               } else {\r
+                       asset = loader.load(manager, assetDesc.fileName, assetDesc.params);\r
+               }\r
        }\r
+\r
+       private void handleAsynchLoader(AsynchronousAssetLoader loader) {\r
+               if(!dependenciesLoaded) {\r
+                       Array<AssetDescriptor> dependencies = loader.getDependencies(assetDesc.fileName, assetDesc.params);\r
+                       if (dependencies != null) {\r
+                               for (AssetDescriptor desc : dependencies) {\r
+                                       manager.injectDependency(assetDesc.fileName, desc);\r
+                               }\r
+                               dependenciesLoaded = true;\r
+                       } else {\r
+                               // we can load everything we are always on the rendering thread.\r
+                               loader.loadAsync(manager, assetDesc.fileName, assetDesc.params);\r
+                               asset = loader.loadSync(manager, assetDesc.fileName, assetDesc.params);\r
+                       }\r
+               } else {\r
+                       loader.loadAsync(manager, assetDesc.fileName, assetDesc.params);\r
+                       asset = loader.loadSync(manager, assetDesc.fileName, assetDesc.params);\r
+               }\r
+       }\r
+       \r
        public Object getAsset () {\r
-               return null;\r
+               return asset;\r
        }\r
 }\r
index 8b71b37..d781606 100644 (file)
@@ -20,8 +20,20 @@ import java.util.ArrayList;
 import java.util.Stack;\r
 \r
 import com.badlogic.gdx.assets.loaders.AssetLoader;\r
+import com.badlogic.gdx.assets.loaders.BitmapFontLoader;\r
 import com.badlogic.gdx.assets.loaders.FileHandleResolver;\r
+import com.badlogic.gdx.assets.loaders.MusicLoader;\r
+import com.badlogic.gdx.assets.loaders.PixmapLoader;\r
+import com.badlogic.gdx.assets.loaders.SoundLoader;\r
+import com.badlogic.gdx.assets.loaders.TextureAtlasLoader;\r
+import com.badlogic.gdx.assets.loaders.TextureLoader;\r
 import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;\r
+import com.badlogic.gdx.audio.Music;\r
+import com.badlogic.gdx.audio.Sound;\r
+import com.badlogic.gdx.graphics.Pixmap;\r
+import com.badlogic.gdx.graphics.Texture;\r
+import com.badlogic.gdx.graphics.g2d.BitmapFont;\r
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;\r
 import com.badlogic.gdx.utils.Array;\r
 import com.badlogic.gdx.utils.Disposable;\r
 import com.badlogic.gdx.utils.GdxRuntimeException;\r
@@ -48,12 +60,12 @@ public class AssetManager implements Disposable {
 \r
        /** Creates a new AssetManager with all default loaders. */\r
        public AssetManager (FileHandleResolver resolver) {\r
-//             setLoader(BitmapFont.class, new BitmapFontLoader(resolver));\r
-//             setLoader(Music.class, new MusicLoader(resolver));\r
-//             setLoader(Pixmap.class, new PixmapLoader(resolver));\r
-//             setLoader(Sound.class, new SoundLoader(resolver));\r
-//             setLoader(TextureAtlas.class, new TextureAtlasLoader(resolver));\r
-//             setLoader(Texture.class, new TextureLoader(resolver));\r
+               setLoader(BitmapFont.class, new BitmapFontLoader(resolver));\r
+               setLoader(Music.class, new MusicLoader(resolver));\r
+               setLoader(Pixmap.class, new PixmapLoader(resolver));\r
+               setLoader(Sound.class, new SoundLoader(resolver));\r
+               setLoader(TextureAtlas.class, new TextureAtlasLoader(resolver));\r
+               setLoader(Texture.class, new TextureLoader(resolver));\r
 //             setLoader(Skin.class, new SkinLoader(resolver));\r
 //             setLoader(TileMapRenderer.class, new TileMapRendererLoader(resolver));\r
        }\r
@@ -324,8 +336,7 @@ public class AssetManager implements Disposable {
        private void addTask (AssetDescriptor assetDesc) {\r
                AssetLoader loader = loaders.get(assetDesc.type);\r
                if (loader == null) throw new GdxRuntimeException("No loader for type: " + assetDesc.type.getName());\r
-               // FIXME\r
-//             tasks.push(new AssetLoadingTask(this, assetDesc, loader, threadPool));\r
+               tasks.push(new AssetLoadingTask(this, assetDesc, loader));\r
        }\r
 \r
        /** Updates the current task on the top of the task stack.\r
@@ -445,13 +456,6 @@ public class AssetManager implements Disposable {
        public synchronized void dispose () {\r
 //             log.debug("Disposing.");\r
                clear();\r
-               // FIXME\r
-//             threadPool.shutdown();\r
-//             try {\r
-//                     threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\r
-//             } catch (InterruptedException e) {\r
-//                     new GdxRuntimeException("Couldn't shutdown loading thread");\r
-//             }\r
        }\r
 \r
        /** Clears and disposes all assets and the preloading queue. */\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/TextureLoader.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/TextureLoader.java
new file mode 100644 (file)
index 0000000..c2b7eac
--- /dev/null
@@ -0,0 +1,98 @@
+/*******************************************************************************\r
+ * Copyright 2011 See AUTHORS file.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *   http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package com.badlogic.gdx.assets.loaders;\r
+\r
+import com.badlogic.gdx.assets.AssetDescriptor;\r
+import com.badlogic.gdx.assets.AssetLoaderParameters;\r
+import com.badlogic.gdx.assets.AssetManager;\r
+import com.badlogic.gdx.files.FileHandle;\r
+import com.badlogic.gdx.graphics.Pixmap;\r
+import com.badlogic.gdx.graphics.Pixmap.Format;\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.graphics.TextureData;\r
+import com.badlogic.gdx.graphics.glutils.FileTextureData;\r
+import com.badlogic.gdx.utils.Array;\r
+\r
+public class TextureLoader extends AsynchronousAssetLoader<Texture, TextureLoader.TextureParameter> {\r
+       TextureData data;\r
+       Texture texture;\r
+\r
+       public TextureLoader (FileHandleResolver resolver) {\r
+               super(resolver);\r
+       }\r
+\r
+       @Override\r
+       public void loadAsync (AssetManager manager, String fileName, TextureParameter parameter) {\r
+               if (parameter == null || (parameter != null && parameter.textureData == null)) {\r
+                       Pixmap pixmap = null;\r
+                       Format format = null;\r
+                       boolean genMipMaps = false;\r
+                       texture = null;\r
+\r
+                       if (parameter != null) {\r
+                               format = parameter.format;\r
+                               genMipMaps = parameter.genMipMaps;\r
+                               texture = parameter.texture;\r
+                       }\r
+\r
+                       FileHandle handle = resolve(fileName);\r
+                       pixmap = new Pixmap(handle);\r
+                       data = new FileTextureData(handle, pixmap, format, genMipMaps);\r
+               } else {\r
+                       data = parameter.textureData;\r
+                       if(!data.isPrepared()) data.prepare();\r
+                       texture = parameter.texture;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Texture loadSync (AssetManager manager, String fileName, TextureParameter parameter) {\r
+               Texture texture = this.texture;\r
+               if (texture != null) {\r
+                       texture.load(data);\r
+               } else {\r
+                       texture = new Texture(data);\r
+               }\r
+               if (parameter != null) {\r
+                       texture.setFilter(parameter.minFilter, parameter.magFilter);\r
+                       texture.setWrap(parameter.wrapU, parameter.wrapV);\r
+               }\r
+               return texture;\r
+       }\r
+\r
+       @Override\r
+       public Array<AssetDescriptor> getDependencies (String fileName, TextureParameter parameter) {\r
+               return null;\r
+       }\r
+\r
+       static public class TextureParameter extends AssetLoaderParameters<Texture> {\r
+               /** the format of the final Texture. Uses the source images format if null **/\r
+               public Format format = null;\r
+               /** whether to generate mipmaps **/\r
+               public boolean genMipMaps = false;\r
+               /** The texture to put the {@link TextureData} in, optional. **/\r
+               public Texture texture = null;\r
+               /** TextureData for textures created on the fly, optional. When set, all format and genMipMaps are ignored */\r
+               public TextureData textureData = null;\r
+               public TextureFilter minFilter = TextureFilter.Nearest;\r
+               public TextureFilter magFilter = TextureFilter.Nearest;\r
+               public TextureWrap wrapU = TextureWrap.ClampToEdge;\r
+               public TextureWrap wrapV = TextureWrap.ClampToEdge;\r
+       }\r
+}\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/resolvers/ResolutionFileResolver.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/assets/loaders/resolvers/ResolutionFileResolver.java
new file mode 100644 (file)
index 0000000..55dab59
--- /dev/null
@@ -0,0 +1,86 @@
+/*******************************************************************************\r
+ * Copyright 2011 See AUTHORS file.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *   http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package com.badlogic.gdx.assets.loaders.resolvers;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.assets.loaders.FileHandleResolver;\r
+import com.badlogic.gdx.assets.loaders.resolvers.ResolutionFileResolver.Resolution;\r
+import com.badlogic.gdx.backends.gwt.GwtFileHandle;\r
+import com.badlogic.gdx.files.FileHandle;\r
+\r
+public class ResolutionFileResolver implements FileHandleResolver {\r
+       public static class Resolution {\r
+               int portraitWidth;\r
+               int portraitHeight;\r
+               String suffix;\r
+\r
+               public Resolution (int portraitWidth, int portraitHeight, String suffix) {\r
+                       this.portraitWidth = portraitWidth;\r
+                       this.portraitHeight = portraitHeight;\r
+                       this.suffix = suffix;\r
+               }\r
+       }\r
+\r
+       final FileHandleResolver baseResolver;\r
+       final Resolution[] descriptors;\r
+\r
+       public ResolutionFileResolver (FileHandleResolver baseResolver, Resolution... descriptors) {\r
+               this.baseResolver = baseResolver;\r
+               this.descriptors = descriptors;\r
+       }\r
+\r
+       @Override\r
+       public FileHandle resolve (String fileName) {\r
+               Resolution bestDesc = choose(descriptors);\r
+               FileHandle originalHandle = new GwtFileHandle(fileName);\r
+               FileHandle handle = baseResolver.resolve(resolve(originalHandle, bestDesc.suffix));\r
+               if (!handle.exists()) handle = baseResolver.resolve(fileName);\r
+               return handle;\r
+       }\r
+\r
+       protected String resolve (FileHandle originalHandle, String suffix) {\r
+               return originalHandle.parent() + "/" + suffix + "/" + originalHandle.name();\r
+       }\r
+\r
+       static public Resolution choose (Resolution... descriptors) {\r
+               int width = 0;\r
+               if (Gdx.graphics.getWidth() > Gdx.graphics.getHeight()) {\r
+                       width = Gdx.graphics.getHeight();\r
+               } else {\r
+                       width = Gdx.graphics.getWidth();\r
+               }\r
+\r
+               Resolution bestDesc = null;\r
+               // Find lowest.\r
+               int best = Integer.MAX_VALUE;\r
+               for (int i = 0, n = descriptors.length; i < n; i++) {\r
+                       if (descriptors[i].portraitWidth < best) {\r
+                               best = descriptors[i].portraitWidth;\r
+                               bestDesc = descriptors[i];\r
+                       }\r
+               }\r
+               // Find higher, but not over the screen res.\r
+               best = Integer.MAX_VALUE;\r
+               for (int i = 0, n = descriptors.length; i < n; i++) {\r
+                       if (descriptors[i].portraitWidth <= width) {\r
+                               best = descriptors[i].portraitWidth;\r
+                               bestDesc = descriptors[i];\r
+                       }\r
+               }\r
+               return bestDesc;\r
+       }\r
+}\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/files/FileHandleStream.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/files/FileHandleStream.java
new file mode 100644 (file)
index 0000000..9a32cae
--- /dev/null
@@ -0,0 +1,86 @@
+/*******************************************************************************\r
+ * Copyright 2011 See AUTHORS file.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *   http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package com.badlogic.gdx.files;\r
+\r
+import java.io.InputStream;\r
+import java.io.OutputStream;\r
+\r
+import com.badlogic.gdx.Files.FileType;\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.backends.gwt.GwtApplication;\r
+import com.badlogic.gdx.backends.gwt.GwtFileHandle;\r
+\r
+/** A FileHandle intended to be subclassed for the purpose of implementing {@link #read()} and/or {@link #write(boolean)}. Methods\r
+ * that would manipulate the file instead throw UnsupportedOperationException.\r
+ * @author Nathan Sweet */\r
+public abstract class FileHandleStream extends GwtFileHandle {\r
+       public FileHandleStream (String path) {\r
+               super(((GwtApplication)Gdx.app).getPreloader(), path, FileType.Internal);\r
+       }\r
+\r
+       public boolean isDirectory () {\r
+               return false;\r
+       }\r
+\r
+       public long length () {\r
+               return 0;\r
+       }\r
+\r
+       public boolean exists () {\r
+               return true;\r
+       }\r
+\r
+       public FileHandle child (String name) {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public FileHandle parent () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public InputStream read () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public OutputStream write (boolean overwrite) {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public FileHandle[] list () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public void mkdirs () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public boolean delete () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public boolean deleteDirectory () {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public void copyTo (FileHandle dest) {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       public void moveTo (FileHandle dest) {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+}\r
index 5ad4a5f..8a9aea0 100644 (file)
@@ -140,6 +140,18 @@ public class Pixmap implements Disposable {
        public Format getFormat () {\r
                return format;\r
        }\r
+       \r
+       public int getGLInternalFormat() {\r
+               return GL20.GL_RGBA;\r
+       }\r
+       \r
+       public int getGLFormat() {\r
+               return GL20.GL_RGBA;\r
+       }\r
+       \r
+       public int getGLType() {\r
+               return GL20.GL_UNSIGNED_BYTE;\r
+       }\r
 \r
        public int getWidth () {\r
                return width;\r
index eaf6a0b..f1588a1 100644 (file)
@@ -3,6 +3,7 @@ package com.badlogic.gdx.graphics;
 import java.nio.IntBuffer;\r
 \r
 import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.assets.AssetManager;\r
 import com.badlogic.gdx.files.FileHandle;\r
 import com.badlogic.gdx.graphics.Pixmap.Format;\r
 import com.badlogic.gdx.graphics.TextureData.TextureDataType;\r
@@ -144,7 +145,11 @@ public class Texture {
         * @param x The x coordinate in pixels\r
         * @param y The y coordinate in pixels */\r
        public void draw (Pixmap pixmap, int x, int y) {\r
-               throw new GdxRuntimeException("can't draw to a managed texture");\r
+               if (data.isManaged()) throw new GdxRuntimeException("can't draw to a managed texture");\r
+\r
+               Gdx.gl.glBindTexture(GL10.GL_TEXTURE_2D, glHandle);\r
+               Gdx.gl.glTexSubImage2D(GL10.GL_TEXTURE_2D, 0, x, y, pixmap.getWidth(), pixmap.getHeight(), pixmap.getGLFormat(),\r
+                       pixmap.getGLType(), pixmap.getPixels());\r
        }\r
 \r
        /** @return the width of the texture in pixels */\r
@@ -215,4 +220,8 @@ public class Texture {
                Gdx.gl.glDeleteTextures(1, buffer);\r
                glHandle = 0;\r
        }\r
+       \r
+       public static void setAssetManager(AssetManager manager) {\r
+               // FIXME well not really, no pause/resume cycle\r
+       }\r
 }\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/g2d/ParticleEffect.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/g2d/ParticleEffect.java
new file mode 100644 (file)
index 0000000..5dfc3b7
--- /dev/null
@@ -0,0 +1,190 @@
+/*******************************************************************************\r
+ * Copyright 2011 See AUTHORS file.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *   http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package com.badlogic.gdx.graphics.g2d;\r
+\r
+import java.io.BufferedReader;\r
+import java.io.File;\r
+import java.io.FileWriter;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.InputStreamReader;\r
+import java.io.Writer;\r
+\r
+import com.badlogic.gdx.files.FileHandle;\r
+import com.badlogic.gdx.graphics.Texture;\r
+import com.badlogic.gdx.utils.Array;\r
+import com.badlogic.gdx.utils.Disposable;\r
+import com.badlogic.gdx.utils.GdxRuntimeException;\r
+\r
+/**\r
+ * See <a href="http://www.badlogicgames.com/wordpress/?p=1255">http://www.badlogicgames.com/wordpress/?p=1255</a>\r
+ * @author mzechner\r
+ *\r
+ */\r
+public class ParticleEffect implements Disposable {\r
+       private final Array<ParticleEmitter> emitters;\r
+\r
+       public ParticleEffect () {\r
+               emitters = new Array(8);\r
+       }\r
+\r
+       public ParticleEffect (ParticleEffect effect) {\r
+               emitters = new Array(true, effect.emitters.size);\r
+               for (int i = 0, n = effect.emitters.size; i < n; i++)\r
+                       emitters.add(new ParticleEmitter(effect.emitters.get(i)));\r
+       }\r
+\r
+       public void start () {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).start();\r
+       }\r
+\r
+       public void update (float delta) {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).update(delta);\r
+       }\r
+\r
+       public void draw (SpriteBatch spriteBatch) {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).draw(spriteBatch);\r
+       }\r
+\r
+       public void draw (SpriteBatch spriteBatch, float delta) {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).draw(spriteBatch, delta);\r
+       }\r
+\r
+       public void allowCompletion () {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).allowCompletion();\r
+       }\r
+\r
+       public boolean isComplete () {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       if (emitter.isContinuous()) return false;\r
+                       if (!emitter.isComplete()) return false;\r
+               }\r
+               return true;\r
+       }\r
+\r
+       public void setDuration (int duration) {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       emitter.setContinuous(false);\r
+                       emitter.duration = duration;\r
+                       emitter.durationTimer = 0;\r
+               }\r
+       }\r
+\r
+       public void setPosition (float x, float y) {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).setPosition(x, y);\r
+       }\r
+\r
+       public void setFlip (boolean flipX, boolean flipY) {\r
+               for (int i = 0, n = emitters.size; i < n; i++)\r
+                       emitters.get(i).setFlip(flipX, flipY);\r
+       }\r
+\r
+       public Array<ParticleEmitter> getEmitters () {\r
+               return emitters;\r
+       }\r
+\r
+       /** Returns the emitter with the specified name, or null. */\r
+       public ParticleEmitter findEmitter (String name) {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       if (emitter.getName().equals(name)) return emitter;\r
+               }\r
+               return null;\r
+       }\r
+\r
+       public void save (File file) {\r
+               throw new GdxRuntimeException("Not supported in GWT backend");\r
+       }\r
+\r
+       public void load (FileHandle effectFile, FileHandle imagesDir) {\r
+               loadEmitters(effectFile);\r
+               loadEmitterImages(imagesDir);\r
+       }\r
+\r
+       public void load (FileHandle effectFile, TextureAtlas atlas) {\r
+               loadEmitters(effectFile);\r
+               loadEmitterImages(atlas);\r
+       }\r
+\r
+       public void loadEmitters (FileHandle effectFile) {\r
+               InputStream input = effectFile.read();\r
+               emitters.clear();\r
+               BufferedReader reader = null;\r
+               try {\r
+                       reader = new BufferedReader(new InputStreamReader(input), 512);\r
+                       while (true) {\r
+                               ParticleEmitter emitter = new ParticleEmitter(reader);\r
+                               reader.readLine();\r
+                               emitter.setImagePath(reader.readLine());\r
+                               emitters.add(emitter);\r
+                               if (reader.readLine() == null) break;\r
+                               if (reader.readLine() == null) break;\r
+                       }\r
+               } catch (IOException ex) {\r
+                       throw new GdxRuntimeException("Error loading effect: " + effectFile, ex);\r
+               } finally {\r
+                       try {\r
+                               if (reader != null) reader.close();\r
+                       } catch (IOException ex) {\r
+                       }\r
+               }\r
+       }\r
+\r
+       public void loadEmitterImages (TextureAtlas atlas) {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       String imagePath = emitter.getImagePath();\r
+                       if (imagePath == null) continue;\r
+                       String imageName = new File(imagePath.replace('\\', '/')).getName();\r
+                       int lastDotIndex = imageName.lastIndexOf('.');\r
+                       if (lastDotIndex != -1) imageName = imageName.substring(0, lastDotIndex);\r
+                       Sprite sprite = atlas.createSprite(imageName);\r
+                       if (sprite == null) throw new IllegalArgumentException("SpriteSheet missing image: " + imageName);\r
+                       emitter.setSprite(sprite);\r
+               }\r
+       }\r
+\r
+       public void loadEmitterImages (FileHandle imagesDir) {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       String imagePath = emitter.getImagePath();\r
+                       if (imagePath == null) continue;\r
+                       String imageName = new File(imagePath.replace('\\', '/')).getName();\r
+                       emitter.setSprite(new Sprite(loadTexture(imagesDir.child(imageName))));\r
+               }\r
+       }\r
+\r
+       protected Texture loadTexture (FileHandle file) {\r
+               return new Texture(file, false);\r
+       }\r
+\r
+       /** Disposes the texture for each sprite for each ParticleEmitter. */\r
+       public void dispose () {\r
+               for (int i = 0, n = emitters.size; i < n; i++) {\r
+                       ParticleEmitter emitter = emitters.get(i);\r
+                       emitter.getSprite().getTexture().dispose();\r
+               }\r
+       }\r
+}\r
index 5cab249..b35a9c0 100644 (file)
@@ -129,7 +129,6 @@ public class ShaderProgram implements Disposable {
        private boolean invalidated;\r
 \r
        /** direct buffer for passing float and int uniform arrays **/\r
-       private ByteBuffer buffer = null;\r
        private FloatBuffer floatBuffer = null;\r
 \r
        public ShaderProgram (FileHandle vertexShader, FileHandle fragmentShader) {\r
@@ -599,9 +598,8 @@ public class ShaderProgram implements Disposable {
        }\r
 \r
        private void ensureBufferCapacity (int numBytes) {\r
-               if (buffer == null || buffer.capacity() != numBytes) {\r
-                       buffer = BufferUtils.newByteBuffer(numBytes);\r
-                       floatBuffer = buffer.asFloatBuffer();\r
+               if (floatBuffer == null || floatBuffer.capacity() != numBytes / 4) {\r
+                       floatBuffer = BufferUtils.newFloatBuffer(numBytes / 4);\r
                }\r
        }\r
 \r
index 9e28f22..265e8d8 100644 (file)
@@ -816,32 +816,32 @@ public class Matrix4 implements Serializable {
                return true;\r
        }\r
        \r
-       static void matrix4_mulVec(float[] mat, float[] vec) {\r
-               float x = vec[0] * mat[M00] + vec[1] * mat[M01] + vec[2] * mat[M02] + mat[M03];\r
-               float y = vec[0] * mat[M10] + vec[1] * mat[M11] + vec[2] * mat[M12] + mat[M13];\r
-               float z = vec[0] * mat[M20] + vec[1] * mat[M21] + vec[2] * mat[M22] + mat[M23];\r
-               vec[0] = x;\r
-               vec[1] = y;\r
-               vec[2] = z;\r
+       static void matrix4_mulVec(float[] mat, float[] vec, int offset) {\r
+               float x = vec[offset + 0] * mat[M00] + vec[offset + 1] * mat[M01] + vec[offset + 2] * mat[M02] + mat[M03];\r
+               float y = vec[offset + 0] * mat[M10] + vec[offset + 1] * mat[M11] + vec[offset + 2] * mat[M12] + mat[M13];\r
+               float z = vec[offset + 0] * mat[M20] + vec[offset + 1] * mat[M21] + vec[offset + 2] * mat[M22] + mat[M23];\r
+               vec[offset + 0] = x;\r
+               vec[offset + 1] = y;\r
+               vec[offset + 2] = z;\r
        }\r
        \r
-       static void matrix4_proj(float[] mat, float[] vec) {\r
-               float inv_w = 1.0f / (vec[0] * mat[M30] + vec[1] * mat[M31] + vec[2] * mat[M32] + mat[M33]);\r
-               float x = (vec[0] * mat[M00] + vec[1] * mat[M01] + vec[2] * mat[M02] + mat[M03]) * inv_w;\r
-               float y = (vec[0] * mat[M10] + vec[1] * mat[M11] + vec[2] * mat[M12] + mat[M13]) * inv_w; \r
-               float z = (vec[0] * mat[M20] + vec[1] * mat[M21] + vec[2] * mat[M22] + mat[M23]) * inv_w;\r
-               vec[0] = x;\r
-               vec[1] = y;\r
-               vec[2] = z;\r
+       static void matrix4_proj(float[] mat, float[] vec, int offset) {\r
+               float inv_w = 1.0f / (vec[offset + 0] * mat[M30] + vec[offset + 1] * mat[M31] + vec[offset + 2] * mat[M32] + mat[M33]);\r
+               float x = (vec[offset + 0] * mat[M00] + vec[offset + 1] * mat[M01] + vec[offset + 2] * mat[M02] + mat[M03]) * inv_w;\r
+               float y = (vec[offset + 0] * mat[M10] + vec[offset + 1] * mat[M11] + vec[offset + 2] * mat[M12] + mat[M13]) * inv_w; \r
+               float z = (vec[offset + 0] * mat[M20] + vec[offset + 1] * mat[M21] + vec[offset + 2] * mat[M22] + mat[M23]) * inv_w;\r
+               vec[offset + 0] = x;\r
+               vec[offset + 1] = y;\r
+               vec[offset + 2] = z;\r
        }\r
        \r
-       static void matrix4_rot(float[] mat, float[] vec) {\r
-               float x = vec[0] * mat[M00] + vec[1] * mat[M01] + vec[2] * mat[M02];\r
-               float y = vec[0] * mat[M10] + vec[1] * mat[M11] + vec[2] * mat[M12];\r
-               float z = vec[0] * mat[M20] + vec[1] * mat[M21] + vec[2] * mat[M22];\r
-               vec[0] = x;\r
-               vec[1] = y;\r
-               vec[2] = z;\r
+       static void matrix4_rot(float[] mat, float[] vec, int offset) {\r
+               float x = vec[offset + 0] * mat[M00] + vec[offset + 1] * mat[M01] + vec[offset + 2] * mat[M02];\r
+               float y = vec[offset + 0] * mat[M10] + vec[offset + 1] * mat[M11] + vec[offset + 2] * mat[M12];\r
+               float z = vec[offset + 0] * mat[M20] + vec[offset + 1] * mat[M21] + vec[offset + 2] * mat[M22];\r
+               vec[offset + 0] = x;\r
+               vec[offset + 1] = y;\r
+               vec[offset + 2] = z;\r
        }\r
 \r
        /** Multiplies the matrix mata with matrix matb, storing the result in mata. The arrays are assumed to hold 4x4 column major\r
@@ -860,7 +860,7 @@ public class Matrix4 implements Serializable {
         * @param mat the matrix\r
         * @param vec the vector. */\r
        public static void mulVec (float[] mat, float[] vec) {\r
-               matrix4_mulVec(mat, vec);\r
+               matrix4_mulVec(mat, vec, 0);\r
        }\r
 \r
        /** Multiplies the vectors with the given matrix. The matrix array is assumed to hold a 4x4 column major matrix as you can get\r
@@ -875,12 +875,10 @@ public class Matrix4 implements Serializable {
         * @param numVecs the number of vectors\r
         * @param stride the stride between vectors in floats */\r
        public static void mulVec (float[] mat, float[] vecs, int offset, int numVecs, int stride) {\r
-               // FIXME\r
-//             float* vecPtr = vecs + offset;\r
-//             for(int i = 0; i < numVecs; i++) {\r
-//                     matrix4_mulVec(mat, vecPtr);\r
-//                     vecPtr += stride;\r
-//             }\r
+               for(int i = 0; i < numVecs; i++) {\r
+                       matrix4_mulVec(mat, vecs, offset);\r
+                       offset += stride;\r
+               }\r
        }\r
 \r
        /** Multiplies the vector with the given matrix, performing a division by w. The matrix array is assumed to hold a 4x4 column\r
@@ -890,7 +888,7 @@ public class Matrix4 implements Serializable {
         * @param mat the matrix\r
         * @param vec the vector. */\r
        public static void prj (float[] mat, float[] vec) {\r
-               matrix4_proj(mat, vec);\r
+               matrix4_proj(mat, vec, 0);\r
        }\r
 \r
        /** Multiplies the vectors with the given matrix, , performing a division by w. The matrix array is assumed to hold a 4x4 column\r
@@ -905,12 +903,10 @@ public class Matrix4 implements Serializable {
         * @param numVecs the number of vectors\r
         * @param stride the stride between vectors in floats */\r
        public static void prj (float[] mat, float[] vecs, int offset, int numVecs, int stride) {\r
-               // FIXME\r
-//             float* vecPtr = vecs + offset;\r
-//             for(int i = 0; i < numVecs; i++) {\r
-//                     matrix4_proj(mat, vecPtr);\r
-//                     vecPtr += stride;\r
-//             }\r
+               for(int i = 0; i < numVecs; i++) {\r
+                       matrix4_proj(mat, vecs, offset);\r
+                       offset += stride;\r
+               }\r
        }\r
 \r
        /** Multiplies the vector with the top most 3x3 sub-matrix of the given matrix. The matrix array is assumed to hold a 4x4 column\r
@@ -920,7 +916,7 @@ public class Matrix4 implements Serializable {
         * @param mat the matrix\r
         * @param vec the vector. */\r
        public static void rot (float[] mat, float[] vec) {\r
-               matrix4_rot(mat, vec);\r
+               matrix4_rot(mat, vec, 0);\r
        }\r
 \r
        /** Multiplies the vectors with the top most 3x3 sub-matrix of the given matrix. The matrix array is assumed to hold a 4x4\r
@@ -935,12 +931,10 @@ public class Matrix4 implements Serializable {
         * @param numVecs the number of vectors\r
         * @param stride the stride between vectors in floats */\r
        public static void rot (float[] mat, float[] vecs, int offset, int numVecs, int stride) {\r
-               // FIXME\r
-//             float* vecPtr = vecs + offset;\r
-//             for(int i = 0; i < numVecs; i++) {\r
-//                     matrix4_rot(mat, vecPtr);\r
-//                     vecPtr += stride;\r
-//             }\r
+               for(int i = 0; i < numVecs; i++) {\r
+                       matrix4_rot(mat, vecs, offset);\r
+                       offset += stride;\r
+               }\r
        }\r
 \r
        /** Computes the inverse of the given matrix. The matrix array is assumed to hold a 4x4 column major matrix as you can get from\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/ArrayMap.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/ArrayMap.java
new file mode 100644 (file)
index 0000000..b17caef
--- /dev/null
@@ -0,0 +1,374 @@
+\r
+package com.badlogic.gdx.utils;\r
+\r
+import com.badlogic.gdx.math.MathUtils;\r
+\r
+// BOZO - Add iterator.\r
+\r
+/** An ordered or unordered map of objects. This implementation uses arrays to store the keys and values, which means\r
+ * {@link #getKey(Object, boolean)} does a comparison for each key in the map. This may be acceptable for small maps and has the\r
+ * benefits that {@link #put(Object, Object)} and the keys and values can be accessed by index, which makes iteration fast. Like\r
+ * {@link Array}, if ordered is false, this class avoids a memory copy when removing elements (the last element is moved to the\r
+ * removed element's position).\r
+ * @author Nathan Sweet */\r
+public class ArrayMap<K, V> {\r
+       public K[] keys;\r
+       public V[] values;\r
+       public int size;\r
+       public boolean ordered;\r
+\r
+       /** Creates an ordered map with a capacity of 16. */\r
+       public ArrayMap () {\r
+               this(true, 16);\r
+       }\r
+\r
+       /** Creates an ordered map with the specified capacity. */\r
+       public ArrayMap (int capacity) {\r
+               this(true, capacity);\r
+       }\r
+\r
+       /** @param ordered If false, methods that remove elements may change the order of other elements in the arrays, which avoids a\r
+        *           memory copy.\r
+        * @param capacity Any elements added beyond this will cause the backing arrays to be grown. */\r
+       public ArrayMap (boolean ordered, int capacity) {\r
+               this.ordered = ordered;\r
+               keys = (K[])new Object[capacity];\r
+               values = (V[])new Object[capacity];\r
+       }\r
+\r
+       /** Creates a new map with {@link #keys} and {@link #values} of the specified type.\r
+        * @param ordered If false, methods that remove elements may change the order of other elements in the arrays, which avoids a\r
+        *           memory copy.\r
+        * @param capacity Any elements added beyond this will cause the backing arrays to be grown. */\r
+       public ArrayMap (boolean ordered, int capacity, Class<K> keyArrayType, Class<V> valueArrayType) {\r
+               this.ordered = ordered;\r
+               keys = (K[])new Object[capacity];\r
+               values = (V[])new Object[capacity];\r
+       }\r
+\r
+       /** Creates an ordered map with {@link #keys} and {@link #values} of the specified type and a capacity of 16. */\r
+       public ArrayMap (Class<K> keyArrayType, Class<V> valueArrayType) {\r
+               this(false, 16, keyArrayType, valueArrayType);\r
+       }\r
+\r
+       /** Creates a new map containing the elements in the specified map. The new map will have the same type of backing arrays and\r
+        * will be ordered if the specified map is ordered. The capacity is set to the number of elements, so any subsequent elements\r
+        * added will cause the backing arrays to be grown. */\r
+       public ArrayMap (ArrayMap array) {\r
+               this(array.ordered, array.size, (Class<K>)array.keys.getClass().getComponentType(), (Class<V>)array.values.getClass()\r
+                       .getComponentType());\r
+               size = array.size;\r
+               System.arraycopy(array.keys, 0, keys, 0, size);\r
+               System.arraycopy(array.values, 0, values, 0, size);\r
+       }\r
+\r
+       public void put (K key, V value) {\r
+               if (size == keys.length) resize(Math.max(8, (int)(size * 1.75f)));\r
+               keys[size] = key;\r
+               values[size++] = value;\r
+       }\r
+\r
+       public void addAll (ArrayMap map) {\r
+               addAll(map, 0, map.size);\r
+       }\r
+\r
+       public void addAll (ArrayMap map, int offset, int length) {\r
+               if (offset + length > map.size)\r
+                       throw new IllegalArgumentException("offset + length must be <= size: " + offset + " + " + length + " <= " + map.size);\r
+               int sizeNeeded = size + length - offset;\r
+               if (sizeNeeded >= keys.length) resize(Math.max(8, (int)(sizeNeeded * 1.75f)));\r
+               System.arraycopy(map.keys, offset, keys, size, length);\r
+               System.arraycopy(map.values, offset, values, size, length);\r
+               size += length;\r
+       }\r
+\r
+       /** Returns the value for the specified key. Note this does a .equals() comparison of each key in reverse order until the\r
+        * specified key is found. */\r
+       public V get (K key) {\r
+               Object[] keys = this.keys;\r
+               int i = size - 1;\r
+               if (key == null) {\r
+                       for (; i >= 0; i--)\r
+                               if (keys[i] == key) return values[i];\r
+               } else {\r
+                       for (; i >= 0; i--)\r
+                               if (key.equals(keys[i])) return values[i];\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /** Returns the value for the specified key. Note this does a comparison of each key in reverse order until the specified key is\r
+        * found.\r
+        * @param identity If true, == comparison will be used. If false, .equals() comaparison will be used. */\r
+       public V get (K key, boolean identity) {\r
+               Object[] keys = this.keys;\r
+               int i = size - 1;\r
+               if (identity || key == null) {\r
+                       for (; i >= 0; i--)\r
+                               if (keys[i] == key) return values[i];\r
+               } else {\r
+                       for (; i >= 0; i--)\r
+                               if (key.equals(keys[i])) return values[i];\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /** Returns the key for the specified value. Note this does a comparison of each value in reverse order until the specified\r
+        * value is found.\r
+        * @param identity If true, == comparison will be used. If false, .equals() comaparison will be used. */\r
+       public K getKey (V value, boolean identity) {\r
+               Object[] values = this.values;\r
+               int i = size - 1;\r
+               if (identity || values == null) {\r
+                       for (; i >= 0; i--)\r
+                               if (values[i] == values) return keys[i];\r
+               } else {\r
+                       for (; i >= 0; i--)\r
+                               if (values.equals(values[i])) return keys[i];\r
+               }\r
+               return null;\r
+       }\r
+\r
+       public K getKeyAt (int index) {\r
+               if (index >= size) throw new IndexOutOfBoundsException(String.valueOf(index));\r
+               return keys[index];\r
+       }\r
+\r
+       public V getValueAt (int index) {\r
+               if (index >= size) throw new IndexOutOfBoundsException(String.valueOf(index));\r
+               return values[index];\r
+       }\r
+\r
+       public void setKey (int index, K key) {\r
+               if (index >= size) throw new IndexOutOfBoundsException(String.valueOf(index));\r
+               keys[index] = key;\r
+       }\r
+\r
+       public void setValue (int index, V value) {\r
+               if (index >= size) throw new IndexOutOfBoundsException(String.valueOf(index));\r
+               values[index] = value;\r
+       }\r
+\r
+       public void insert (int index, K key, V value) {\r
+               if (size == keys.length) resize(Math.max(8, (int)(size * 1.75f)));\r
+               if (ordered) {\r
+                       System.arraycopy(keys, index, keys, index + 1, size - index);\r
+                       System.arraycopy(values, index, values, index + 1, size - index);\r
+               } else {\r
+                       keys[size] = keys[index];\r
+                       values[size] = values[index];\r
+               }\r
+               size++;\r
+               keys[index] = key;\r
+               values[index] = value;\r
+       }\r
+\r
+       /** @param identity If true, == comparison will be used. If false, .equals() comaparison will be used. */\r
+       public boolean containsKey (K key, boolean identity) {\r
+               K[] keys = this.keys;\r
+               int i = size - 1;\r
+               if (identity || key == null) {\r
+                       while (i >= 0)\r
+                               if (keys[i--] == key) return true;\r
+               } else {\r
+                       while (i >= 0)\r
+                               if (key.equals(keys[i--])) return true;\r
+               }\r
+               return false;\r
+       }\r
+\r
+       /** @param identity If true, == comparison will be used. If false, .equals() comaparison will be used. */\r
+       public boolean containsValue (V value, boolean identity) {\r
+               V[] values = this.values;\r
+               int i = size - 1;\r
+               if (identity || value == null) {\r
+                       while (i >= 0)\r
+                               if (values[i--] == value) return true;\r
+               } else {\r
+                       while (i >= 0)\r
+                               if (value.equals(values[i--])) return true;\r
+               }\r
+               return false;\r
+       }\r
+\r
+       public int indexOfKey (K key, boolean identity) {\r
+               Object[] keys = this.keys;\r
+               if (identity || key == null) {\r
+                       for (int i = 0, n = size; i < n; i++)\r
+                               if (keys[i] == key) return i;\r
+               } else {\r
+                       for (int i = 0, n = size; i < n; i++)\r
+                               if (key.equals(keys[i])) return i;\r
+               }\r
+               return -1;\r
+       }\r
+\r
+       public int indexOfValue (V value, boolean identity) {\r
+               Object[] values = this.values;\r
+               if (identity || value == null) {\r
+                       for (int i = 0, n = size; i < n; i++)\r
+                               if (values[i] == value) return i;\r
+               } else {\r
+                       for (int i = 0, n = size; i < n; i++)\r
+                               if (value.equals(values[i])) return i;\r
+               }\r
+               return -1;\r
+       }\r
+\r
+       public V removeKey (K key, boolean identity) {\r
+               Object[] keys = this.keys;\r
+               if (identity || key == null) {\r
+                       for (int i = 0, n = size; i < n; i++) {\r
+                               if (keys[i] == key) {\r
+                                       V value = values[i];\r
+                                       removeIndex(i);\r
+                                       return value;\r
+                               }\r
+                       }\r
+               } else {\r
+                       for (int i = 0, n = size; i < n; i++) {\r
+                               if (key.equals(keys[i])) {\r
+                                       V value = values[i];\r
+                                       removeIndex(i);\r
+                                       return value;\r
+                               }\r
+                       }\r
+               }\r
+               return null;\r
+       }\r
+\r
+       public boolean removeValue (V value, boolean identity) {\r
+               Object[] values = this.values;\r
+               if (identity || value == null) {\r
+                       for (int i = 0, n = size; i < n; i++) {\r
+                               if (values[i] == value) {\r
+                                       removeIndex(i);\r
+                                       return true;\r
+                               }\r
+                       }\r
+               } else {\r
+                       for (int i = 0, n = size; i < n; i++) {\r
+                               if (value.equals(values[i])) {\r
+                                       removeIndex(i);\r
+                                       return true;\r
+                               }\r
+                       }\r
+               }\r
+               return false;\r
+       }\r
+\r
+       /** Removes and returns the key/values pair at the specified index. */\r
+       public void removeIndex (int index) {\r
+               if (index >= size) throw new IndexOutOfBoundsException(String.valueOf(index));\r
+               Object[] keys = this.keys;\r
+               size--;\r
+               if (ordered) {\r
+                       System.arraycopy(keys, index + 1, keys, index, size - index);\r
+                       System.arraycopy(values, index + 1, values, index, size - index);\r
+               } else {\r
+                       keys[index] = keys[size];\r
+                       values[index] = values[size];\r
+               }\r
+               keys[size] = null;\r
+               values[size] = null;\r
+       }\r
+\r
+       /** Returns the last key. */\r
+       public K peekKey () {\r
+               return keys[size - 1];\r
+       }\r
+\r
+       /** Returns the last value. */\r
+       public V peekValue () {\r
+               return values[size - 1];\r
+       }\r
+\r
+       public void clear () {\r
+               K[] keys = this.keys;\r
+               V[] values = this.values;\r
+               for (int i = 0, n = size; i < n; i++) {\r
+                       keys[i] = null;\r
+                       values[i] = null;\r
+               }\r
+               size = 0;\r
+       }\r
+\r
+       /** Reduces the size of the backing arrays to the size of the actual number of entries. This is useful to release memory when\r
+        * many items have been removed, or if it is known that more entries will not be added. */\r
+       public void shrink () {\r
+               resize(size);\r
+       }\r
+\r
+       /** Increases the size of the backing arrays to acommodate the specified number of additional entries. Useful before adding many\r
+        * entries to avoid multiple backing array resizes. */\r
+       public void ensureCapacity (int additionalCapacity) {\r
+               int sizeNeeded = size + additionalCapacity;\r
+               if (sizeNeeded >= keys.length) resize(Math.max(8, sizeNeeded));\r
+       }\r
+\r
+       protected void resize (int newSize) {\r
+               K[] newKeys = (K[])new Object[newSize];\r
+               System.arraycopy(keys, 0, newKeys, 0, Math.min(keys.length, newKeys.length));\r
+               this.keys = newKeys;\r
+\r
+               V[] newValues = (V[])new Object[newSize];\r
+               System.arraycopy(values, 0, newValues, 0, Math.min(values.length, newValues.length));\r
+               this.values = newValues;\r
+       }\r
+\r
+       public void reverse () {\r
+               for (int i = 0, lastIndex = size - 1, n = size / 2; i < n; i++) {\r
+                       int ii = lastIndex - i;\r
+                       K tempKey = keys[i];\r
+                       keys[i] = keys[ii];\r
+                       keys[ii] = tempKey;\r
+\r
+                       V tempValue = values[i];\r
+                       values[i] = values[ii];\r
+                       values[ii] = tempValue;\r
+               }\r
+       }\r
+\r
+       public void shuffle () {\r
+               for (int i = size - 1; i >= 0; i--) {\r
+                       int ii = MathUtils.random(i);\r
+                       K tempKey = keys[i];\r
+                       keys[i] = keys[ii];\r
+                       keys[ii] = tempKey;\r
+\r
+                       V tempValue = values[i];\r
+                       values[i] = values[ii];\r
+                       values[ii] = tempValue;\r
+               }\r
+       }\r
+\r
+       /** Reduces the size of the arrays to the specified size. If the arrays are already smaller than the specified size, no action\r
+        * is taken. */\r
+       public void truncate (int newSize) {\r
+               if (size <= newSize) return;\r
+               for (int i = newSize; i < size; i++) {\r
+                       keys[i] = null;\r
+                       values[i] = null;\r
+               }\r
+               size = newSize;\r
+       }\r
+\r
+       public String toString () {\r
+               if (size == 0) return "{}";\r
+               K[] keys = this.keys;\r
+               V[] values = this.values;\r
+               StringBuilder buffer = new StringBuilder(32);\r
+               buffer.append('{');\r
+               buffer.append(keys[0]);\r
+               buffer.append('=');\r
+               buffer.append(values[0]);\r
+               for (int i = 1; i < size; i++) {\r
+                       buffer.append(", ");\r
+                       buffer.append(keys[i]);\r
+                       buffer.append('=');\r
+                       buffer.append(values[i]);\r
+               }\r
+               buffer.append('}');\r
+               return buffer.toString();\r
+       }\r
+}\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/SerializationException.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/SerializationException.java
new file mode 100644 (file)
index 0000000..87894a8
--- /dev/null
@@ -0,0 +1,69 @@
+/*******************************************************************************\r
+ * Copyright 2011 See AUTHORS file.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *   http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package com.badlogic.gdx.utils;\r
+\r
+/** Indicates an error during serialization due to misconfiguration or during deserialization due to invalid input data.\r
+ * @author Nathan Sweet <misc@n4te.com> */\r
+public class SerializationException extends RuntimeException {\r
+       private StringBuffer trace;\r
+\r
+       public SerializationException () {\r
+               super();\r
+       }\r
+\r
+       public SerializationException (String message, Throwable cause) {\r
+               super(message, cause);\r
+       }\r
+\r
+       public SerializationException (String message) {\r
+               super(message);\r
+       }\r
+\r
+       public SerializationException (Throwable cause) {\r
+               super("", cause);\r
+       }\r
+\r
+       /** Returns true if any of the exceptions that caused this exception are of the specified type. */\r
+       public boolean causedBy (Class type) {\r
+               return causedBy(this, type);\r
+       }\r
+\r
+       private boolean causedBy (Throwable ex, Class type) {\r
+               Throwable cause = ex.getCause();\r
+               if (cause == null || cause == ex) return false;\r
+               return false;\r
+       }\r
+\r
+       public String getMessage () {\r
+               if (trace == null) return super.getMessage();\r
+               StringBuffer buffer = new StringBuffer(512);\r
+               buffer.append(super.getMessage());\r
+               if (buffer.length() > 0) buffer.append('\n');\r
+               buffer.append("Serialization trace:");\r
+               buffer.append(trace);\r
+               return buffer.toString();\r
+       }\r
+\r
+       /** Adds information to the exception message about where in the the object graph serialization failure occurred. Serializers\r
+        * can catch {@link SerializationException}, add trace information, and rethrow the exception. */\r
+       public void addTrace (String info) {\r
+               if (info == null) throw new IllegalArgumentException("info cannot be null.");\r
+               if (trace == null) trace = new StringBuffer(512);\r
+               trace.append('\n');\r
+               trace.append(info);\r
+       }\r
+}\r
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/TimeUtils.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/utils/TimeUtils.java
new file mode 100644 (file)
index 0000000..64c4cf6
--- /dev/null
@@ -0,0 +1,23 @@
+package com.badlogic.gdx.utils;\r
+\r
+/**\r
+ * Wrapper around System.nanoTime() and System.currentTimeMillis(). Use this\r
+ * if you want to be compatible across all platforms!\r
+ * @author mzechner\r
+ *\r
+ */\r
+public class TimeUtils {\r
+       /**\r
+        * @return The current value of the system timer, in nanoseconds.\r
+        */\r
+       public static long nanoTime() {\r
+               return System.currentTimeMillis() * 1000000l;\r
+       }\r
+       \r
+       /**\r
+        * @return the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.\r
+        */\r
+       public static long millis() {\r
+               return System.currentTimeMillis();\r
+       }\r
+}\r
index b98cc2e..c36d581 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<module rename-to='com.badlogic.gdx'>\r
-\r
-       <source path="gdx">\r
-               <!-- main interfaces/classes -->\r
-               <include name="**/Application.java"/>\r
-               <include name="**/ApplicationListener.java"/>\r
-               <include name="**/ApplicationAdapter.java"/>\r
-               <include name="**/Audio.java"/>\r
-               <include name="**/Files.java"/>\r
-               <include name="**/Game.java"/>\r
-               <include name="**/Gdx.java"/>\r
-               <include name="**/Graphics.java"/>\r
-               <include name="**/Input.java"/>\r
-               <include name="**/InputAdapter.java"/>\r
-               <include name="**/InputMultiplexer.java"/>\r
-               <include name="**/InputProcessor.java"/>\r
-               <include name="**/Preferences.java"/>\r
-               <include name="**/Screen.java"/>\r
-               <include name="**/Version.java"/>\r
-               \r
-               <!-- audio interfaces/classes -->\r
-               <include name="**/audio/AudioDevice.java"/>\r
-               <include name="**/audio/AudioRecorder.java"/>\r
-               <include name="**/audio/Music.java"/>\r
-               <include name="**/audio/Sound.java"/>\r
-               \r
-               <!-- files interfaces/classes -->\r
-<!--           <include name="**/FileHandle.java"/> -->\r
-<!--           <include name="**/FileHandleStream.java"/> -->\r
-               \r
-               <!-- graphics interfaces/classes -->\r
-               <include name="**/graphics/FPSLogger.java"/>\r
-               <include name="**/graphics/Camera.java"/>\r
-               <include name="**/graphics/Color.java"/>\r
-               <include name="**/graphics/GL10.java"/>\r
-               <include name="**/graphics/GL11.java"/>\r
-               <include name="**/graphics/GL20.java"/>\r
-               <include name="**/graphics/GLCommon.java"/>\r
-               <include name="**/graphics/GLU.java"/>\r
-               <include name="**/graphics/Mesh.java"/>\r
-               <include name="**/graphics/OrthographicCamera.java"/>\r
-               <include name="**/graphics/PerspectiveCamera.java"/>\r
-               <include name="**/graphics/TextureData.java"/>\r
-               <include name="**/graphics/VertexAttribute.java"/>\r
-               <include name="**/graphics/VertexAttributes.java"/>\r
-               <include name="**/graphics/glutils/PixmapTextureData.java"/>\r
-               <include name="**/graphics/glutils/FileTextureData.java"/>\r
-               <include name="**/graphics/glutils/FrameBuffer.java"/>\r
-               <include name="**/graphics/glutils/IndexBufferObjectSubData.java"/>\r
-               <include name="**/graphics/glutils/IndexData.java"/>\r
-               <include name="**/graphics/glutils/VertexBufferObjectSubData.java"/>\r
-               <include name="**/graphics/glutils/VertexData.java"/>\r
-               <include name="**/graphics/glutils/ShapeRenderer.java"/>\r
-               <include name="**/graphics/glutils/ImmediateModeRenderer.java"/>\r
-               <include name="**/graphics/glutils/ImmediateModeRenderer10.java"/>\r
-               <include name="**/graphics/glutils/ImmediateModeRenderer20.java"/>\r
-               \r
-               <include name="**/graphics/g2d/Animation.java"/>\r
-               <include name="**/graphics/g2d/PixmapPacker.java"/>\r
-               <include name="**/graphics/g2d/Sprite.java"/>\r
-               <include name="**/graphics/g2d/SpriteBatch.java"/>\r
-               <include name="**/graphics/g2d/SpriteCache.java"/>\r
-               <include name="**/graphics/g2d/TextureRegion.java"/>\r
-               <include name="**/graphics/g2d/BitmapFont.java"/>\r
-               <include name="**/graphics/g2d/BitmapFontCache.java"/>\r
-               <include name="**/graphics/g2d/TextureAtlas.java"/>\r
-               \r
-               <include name="**/graphics/g3d/decals/**"/>\r
-               <include name="**/loaders/obj/ObjLoader.java"/>\r
-               \r
-               <!-- assets -->\r
-               <include name="**/assets/AssetDescriptor.java"/>\r
-               <include name="**/assets/AssetErrorListener.java"/>\r
-               <include name="**/assets/AssetLoaderParameters.java"/>\r
-               <include name="**/assets/RefCountedContainer.java"/>\r
-               <include name="**/assets/loaders/AssetLoader.java"/>\r
-               <include name="**/assets/loaders/FileHandleResolver.java"/>\r
-               <include name="**/assets/loaders/resolvers/InternalFileHandleResolver.java"/>\r
-               \r
-\r
-               <!-- math package -->\r
-               <include name="**/math/**"/>\r
-               <exclude name="**/math/Matrix4.java"/>\r
-               \r
-               <!-- utils interfaces/classes -->\r
-               <include name="**/utils/Disposable.java"/>\r
-               <include name="**/utils/GdxRuntimeException.java"/>\r
-               <include name="**/utils/Sort.java"/>\r
-               <include name="**/utils/ComparableTimSort.java"/>\r
-               <include name="**/utils/TimSort.java"/>\r
-               <include name="**/utils/ObjectMap.java"/>\r
-               <include name="**/utils/ObjectIntMap.java"/>\r
-               <include name="**/utils/IntMap.java"/>\r
-               <include name="**/utils/IntArray.java"/>\r
-               <include name="**/utils/LongMap.java"/>\r
-               <include name="**/utils/LongArray.java"/>\r
-               <include name="**/utils/FloatArray.java"/>\r
-               <include name="**/utils/Pool.java"/>\r
-               <include name="**/utils/OrderedMap.java"/>\r
-               <include name="**/utils/SortedIntList.java"/>\r
-       </source>\r
-</module>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<module rename-to="com.badlogic.gdx">
+       <source path="gdx">
+               <include name="scenes/scene2d/interpolators/AccelerateDecelerateInterpolator.java"/>
+               <include name="scenes/scene2d/interpolators/AccelerateInterpolator.java"/>
+               <include name="scenes/scene2d/Action.java"/>
+               <include name="scenes/scene2d/actions/ActionResetingPool.java"/>
+               <include name="scenes/scene2d/Actor.java"/>
+               <include name="graphics/g3d/Animation.java"/>
+               <include name="scenes/scene2d/AnimationAction.java"/>
+               <include name="graphics/g3d/Animator.java"/>
+               <include name="scenes/scene2d/interpolators/AnticipateInterpolator.java"/>
+               <include name="Application.java"/>
+               <include name="ApplicationAdapter.java"/>
+               <include name="ApplicationListener.java"/>
+               <include name="assets/AssetDescriptor.java"/>
+               <include name="assets/AssetErrorListener.java"/>
+               <include name="assets/loaders/AssetLoader.java"/>
+               <include name="assets/AssetLoaderParameters.java"/>
+               <include name="assets/loaders/AsynchronousAssetLoader.java"/>
+               <include name="Audio.java"/>
+               <include name="audio/AudioDevice.java"/>
+               <include name="audio/AudioRecorder.java"/>
+               <include name="utils/Base64Coder.java"/>
+               <include name="src/com/esotericsoftware/tablelayout/BaseTableLayout.java"/>
+               <include name="utils/BinaryHeap.java"/>
+               <include name="graphics/g2d/BitmapFont.java"/>
+               <include name="graphics/g2d/BitmapFontCache.java"/>
+               <include name="assets/loaders/BitmapFontLoader.java"/>
+               <include name="utils/BooleanArray.java"/>
+               <include name="math/collision/BoundingBox.java"/>
+               <include name="graphics/Camera.java"/>
+               <include name="graphics/g3d/decals/CameraGroupStrategy.java"/>
+               <include name="math/CatmullRomSpline.java"/>
+               <include name="src/com/esotericsoftware/tablelayout/Cell.java"/>
+               <include name="utils/CharArray.java"/>
+               <include name="math/Circle.java"/>
+               <include name="graphics/Color.java"/>
+               <include name="utils/ComparableTimSort.java"/>
+               <include name="scenes/scene2d/CompositeAction.java"/>
+               <include name="scenes/scene2d/Cullable.java"/>
+               <include name="graphics/g3d/decals/Decal.java"/>
+               <include name="graphics/g3d/decals/DecalBatch.java"/>
+               <include name="graphics/g3d/decals/DecalMaterial.java"/>
+               <include name="scenes/scene2d/interpolators/DecelerateInterpolator.java"/>
+               <include name="graphics/g3d/decals/DefaultGroupStrategy.java"/>
+               <include name="scenes/scene2d/actions/Delay.java"/>
+               <include name="utils/Disposable.java"/>
+               <include name="math/EarClippingTriangulator.java"/>
+               <include name="graphics/g2d/EmptyNinePatch.java"/>
+               <include name="assets/loaders/resolvers/ExternalFileHandleResolver.java"/>
+               <include name="graphics/FPSLogger.java"/>
+               <include name="scenes/scene2d/actions/FadeIn.java"/>
+               <include name="scenes/scene2d/actions/FadeOut.java"/>
+               <include name="scenes/scene2d/actions/FadeTo.java"/>
+               <include name="assets/loaders/FileHandleResolver.java"/>
+               <include name="Files.java"/>
+               <include name="utils/FloatArray.java"/>
+               <include name="scenes/scene2d/actions/Forever.java"/>
+               <include name="graphics/glutils/FrameBuffer.java"/>
+               <include name="math/Frustum.java"/>
+               <include name="graphics/GL10.java"/>
+               <include name="graphics/GL11.java"/>
+               <include name="graphics/GL20.java"/>
+               <include name="graphics/GLCommon.java"/>
+               <include name="graphics/GLU.java"/>
+               <include name="Game.java"/>
+               <include name="Gdx.java"/>
+               <include name="utils/GdxRuntimeException.java"/>
+               <include name="assets/loaders/GenericLoader.java"/>
+               <include name="input/GestureDetector.java"/>
+               <include name="Graphics.java"/>
+               <include name="scenes/scene2d/Group.java"/>
+               <include name="graphics/g3d/decals/GroupPlug.java"/>
+               <include name="graphics/g3d/decals/GroupStrategy.java"/>
+               <include name="utils/IdentityMap.java"/>
+               <include name="graphics/glutils/ImmediateModeRenderer.java"/>
+               <include name="graphics/glutils/ImmediateModeRenderer10.java"/>
+               <include name="graphics/glutils/ImmediateModeRenderer20.java"/>
+               <include name="graphics/glutils/IndexBufferObjectSubData.java"/>
+               <include name="graphics/glutils/IndexData.java"/>
+               <include name="Input.java"/>
+               <include name="InputAdapter.java"/>
+               <include name="InputMultiplexer.java"/>
+               <include name="InputProcessor.java"/>
+               <include name="utils/IntArray.java"/>
+               <include name="utils/IntMap.java"/>
+               <include name="assets/loaders/resolvers/InternalFileHandleResolver.java"/>
+               <include name="math/Interpolation.java"/>
+               <include name="scenes/scene2d/Interpolator.java"/>
+               <include name="math/Intersector.java"/>
+               <include name="utils/JsonReader.java"/>
+               <include name="graphics/g3d/keyframed/Keyframe.java"/>
+               <include name="graphics/g3d/keyframed/KeyframeAnimation.java"/>
+               <include name="graphics/g3d/keyframed/KeyframeAnimator.java"/>
+               <include name="graphics/g3d/keyframed/KeyframedModel.java"/>
+               <include name="scenes/scene2d/Layout.java"/>
+               <include name="scenes/scene2d/interpolators/LinearInterpolator.java"/>
+               <include name="utils/Logger.java"/>
+               <include name="utils/LongArray.java"/>
+               <include name="utils/LongMap.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Animation.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5AnimationInfo.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Animator.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Jni.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Joints.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Loader.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Mesh.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Model.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Quaternion.java"/>
+               <include name="graphics/g3d/loaders/md5/MD5Renderer.java"/>
+               <include name="graphics/g3d/Material.java"/>
+               <include name="math/MathUtils.java"/>
+               <include name="math/Matrix3.java"/>
+               <include name="graphics/Mesh.java"/>
+               <include name="graphics/glutils/MipMapGenerator.java"/>
+               <include name="graphics/g3d/loaders/ModelLoaderOld.java"/>
+               <include name="scenes/scene2d/actions/MoveBy.java"/>
+               <include name="scenes/scene2d/actions/MoveTo.java"/>
+               <include name="audio/Music.java"/>
+               <include name="assets/loaders/MusicLoader.java"/>
+               <include name="graphics/g2d/NinePatch.java"/>
+               <include name="graphics/g3d/loaders/obj/ObjLoader.java"/>
+               <include name="utils/ObjectIntMap.java"/>
+               <include name="utils/ObjectMap.java"/>
+               <include name="scenes/scene2d/OnActionCompleted.java"/>
+               <include name="utils/OrderedMap.java"/>
+               <include name="graphics/OrthographicCamera.java"/>
+               <include name="scenes/scene2d/interpolators/OvershootInterpolator.java"/>
+               <include name="scenes/scene2d/actions/Parallel.java"/>
+               <include name="src/com/esotericsoftware/tablelayout/ParseException.java"/>
+               <include name="graphics/g2d/ParticleEffectPool.java"/>
+               <include name="graphics/g2d/ParticleEmitter.java"/>
+               <include name="graphics/PerspectiveCamera.java"/>
+               <include name="assets/loaders/PixmapLoader.java"/>
+               <include name="graphics/g2d/PixmapPacker.java"/>
+               <include name="graphics/glutils/PixmapTextureData.java"/>
+               <include name="math/Plane.java"/>
+               <include name="graphics/g3d/decals/PluggableGroupStrategy.java"/>
+               <include name="math/Polygon.java"/>
+               <include name="utils/Pool.java"/>
+               <include name="utils/PooledLinkedList.java"/>
+               <include name="Preferences.java"/>
+               <include name="math/Quaternion.java"/>
+               <include name="math/collision/Ray.java"/>
+               <include name="math/Rectangle.java"/>
+               <include name="assets/RefCountedContainer.java"/>
+               <include name="scenes/scene2d/actions/Remove.java"/>
+               <include name="scenes/scene2d/actions/Repeat.java"/>
+               <include name="scenes/scene2d/actions/RotateBy.java"/>
+               <include name="scenes/scene2d/actions/RotateTo.java"/>
+               <include name="scenes/scene2d/actions/ScaleTo.java"/>
+               <include name="utils/Scaling.java"/>
+               <include name="Screen.java"/>
+               <include name="math/collision/Segment.java"/>
+               <include name="scenes/scene2d/actions/Sequence.java"/>
+               <include name="graphics/glutils/ShapeRenderer.java"/>
+               <include name="graphics/g3d/decals/SimpleOrthoGroupStrategy.java"/>
+               <include name="graphics/g2d/tiled/SimpleTileAtlas.java"/>
+               <include name="utils/Sort.java"/>
+               <include name="utils/SortedIntList.java"/>
+               <include name="audio/Sound.java"/>
+               <include name="assets/loaders/SoundLoader.java"/>
+               <include name="math/collision/Sphere.java"/>
+               <include name="graphics/g2d/Sprite.java"/>
+               <include name="graphics/g2d/SpriteBatch.java"/>
+               <include name="graphics/g2d/SpriteCache.java"/>
+               <include name="scenes/scene2d/Stage.java"/>
+               <include name="assets/loaders/SynchronousAssetLoader.java"/>
+               <include name="src/com/esotericsoftware/tablelayout/TableLayoutParser.java"/>
+               <include name="scenes/scene2d/TemporalAction.java"/>
+               <include name="graphics/g2d/TextureAtlas.java"/>
+               <include name="assets/loaders/TextureAtlasLoader.java"/>
+               <include name="graphics/TextureData.java"/>
+               <include name="graphics/TextureDict.java"/>
+               <include name="graphics/TextureRef.java"/>
+               <include name="graphics/g2d/TextureRegion.java"/>
+               <include name="graphics/g2d/tiled/TileAtlas.java"/>
+               <include name="assets/loaders/TileAtlasLoader.java"/>
+               <include name="graphics/g2d/tiled/TileMapRenderer.java"/>
+               <include name="graphics/g2d/tiled/TileSet.java"/>
+               <include name="graphics/g2d/tiled/TiledLayer.java"/>
+               <include name="graphics/g2d/tiled/TiledMap.java"/>
+               <include name="graphics/g2d/tiled/TiledObject.java"/>
+               <include name="graphics/g2d/tiled/TiledObjectGroup.java"/>
+               <include name="utils/TimSort.java"/>
+               <include name="src/com/esotericsoftware/tablelayout/Toolkit.java"/>
+               <include name="math/Vector2.java"/>
+               <include name="math/Vector3.java"/>
+               <include name="Version.java"/>
+               <include name="graphics/VertexAttribute.java"/>
+               <include name="graphics/VertexAttributes.java"/>
+               <include name="graphics/glutils/VertexBufferObjectSubData.java"/>
+               <include name="graphics/glutils/VertexData.java"/>
+               <include name="math/WindowedMean.java"/>
+               <include name="utils/XmlReader.java"/>
+               <include name="utils/XmlWriter.java"/>
+               <include name="graphics/g2d/Animation.java"/>
+               <include name="graphics/g3d/Animation.java"/>
+       </source>
+</module>
index 7389ed8..32fda69 100644 (file)
@@ -26,6 +26,7 @@ import com.badlogic.gdx.assets.loaders.SynchronousAssetLoader;
 import com.badlogic.gdx.utils.Array;\r
 import com.badlogic.gdx.utils.GdxRuntimeException;\r
 import com.badlogic.gdx.utils.Logger;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 /** Responsible for loading an asset through an {@link AssetLoader} based on an {@link AssetDescriptor}. Implements\r
  * {@link Callable} and is used with an {@link ExecutorService threadpool} to load parts of an asset asynchronously if the asset is\r
@@ -55,7 +56,7 @@ class AssetLoadingTask implements Callable<Void> {
                this.assetDesc = assetDesc;\r
                this.loader = loader;\r
                this.threadPool = threadPool;\r
-               startTime = manager.log.getLevel() == Logger.DEBUG ? System.nanoTime() : 0;\r
+               startTime = manager.log.getLevel() == Logger.DEBUG ? TimeUtils.nanoTime() : 0;\r
        }\r
 \r
        /** Loads parts of the asset asynchronously if the loader is an {@link AsynchronousAssetLoader}. */\r
index d4e63ae..0e69ec9 100644 (file)
@@ -48,6 +48,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException;
 import com.badlogic.gdx.utils.Logger;\r
 import com.badlogic.gdx.utils.ObjectIntMap;\r
 import com.badlogic.gdx.utils.ObjectMap;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class AssetManager implements Disposable {\r
        final ObjectMap<Class, ObjectMap<String, RefCountedContainer>> assets = new ObjectMap<Class, ObjectMap<String, RefCountedContainer>>();\r
@@ -389,7 +390,7 @@ public class AssetManager implements Disposable {
                                        task.assetDesc.params.loadedCallback.finishedLoading(this, task.assetDesc.fileName, task.assetDesc.type);\r
                                }\r
 \r
-                               long endTime = System.nanoTime();\r
+                               long endTime = TimeUtils.nanoTime();\r
                                log.debug("Loaded: " + (endTime - task.startTime) / 1000000f + "ms " + task.assetDesc);\r
                        }\r
 \r
index 257435f..3005b16 100644 (file)
@@ -144,10 +144,8 @@ public class KeyframedModel {
                                numVertices = vertices.length;\r
                                numIndices = indices.length;\r
                                if (!cached) {\r
-                                       k.vertices[m] = new float[vertices.length];\r
-                                       k.vertices[m] = vertices.clone();\r
-                                       k.indices[m] = new short[indices.length];\r
-                                       k.indices[m] = indices.clone();\r
+                                       k.vertices[m] = clone(vertices);\r
+                                       k.indices[m] = clone(indices);\r
                                }\r
 \r
                                if (target[m] == null) {\r
@@ -202,6 +200,18 @@ public class KeyframedModel {
                return a;\r
        }\r
 \r
+       private short[] clone (short[] indices) {\r
+               short[] tmp = new short[indices.length];\r
+               System.arraycopy(indices, 0, tmp, 0, indices.length);\r
+               return tmp;\r
+       }\r
+\r
+       private float[] clone (float[] vertices) {\r
+               float[] tmp = new float[vertices.length];\r
+               System.arraycopy(vertices, 0, tmp, 0, vertices.length);\r
+               return tmp;\r
+       }\r
+\r
        public void getJointData (int tagIndex, Vector3 pos, Quaternion orient) {\r
                Keyframe kf = animator.getInterpolatedKeyframe();\r
                pos.set(kf.taggedJointPos[tagIndex]);\r
index 1ae1584..eb34538 100644 (file)
@@ -20,7 +20,7 @@ import com.badlogic.gdx.math.Vector3;
 \r
 public class MD5Jni {\r
        public static native void calculateVertices (float[] joints, float[] weights, float[] verticesIn, float[] verticesOut,\r
-               int numVertices, int vstride, int wstride); /*\r
+               int numVertices, int vstride, int wstride)/*-{ }-*/; /*\r
                for (int vertexOffset = 2, k = 0; vertexOffset < numVertices; vertexOffset += vstride) {\r
                        float finalX = 0;\r
                        float finalY = 0;\r
index 845aa9c..547eaad 100644 (file)
@@ -19,6 +19,7 @@ package com.badlogic.gdx.input;
 import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.InputAdapter;\r
 import com.badlogic.gdx.math.Vector2;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class GestureDetector extends InputAdapter {\r
        public static interface GestureListener {\r
@@ -266,9 +267,9 @@ public class GestureDetector extends InputAdapter {
                panning = false;\r
                if (inTapSquare & !longPressFired) {\r
                        // handle taps\r
-                       if (System.nanoTime() - lastTapTime > tapCountInterval) tapCount = 0;\r
+                       if (TimeUtils.nanoTime() - lastTapTime > tapCountInterval) tapCount = 0;\r
                        tapCount++;\r
-                       lastTapTime = System.nanoTime();\r
+                       lastTapTime = TimeUtils.nanoTime();\r
                        gestureStartTime = 0;\r
                        return listener.tap(tapSquareCenterX, tapSquareCenterY, tapCount);\r
                } else if (pinching) {\r
@@ -304,7 +305,7 @@ public class GestureDetector extends InputAdapter {
         * @return whether the user touched the screen for as much or more than the given duration. */\r
        public boolean isLongPressed (float duration) {\r
                if (gestureStartTime == 0) return false;\r
-               return System.nanoTime() - gestureStartTime > (long)(duration * 1000000000l);\r
+               return TimeUtils.nanoTime() - gestureStartTime > (long)(duration * 1000000000l);\r
        }\r
 \r
        public boolean isPanning () {\r
index d940936..840a489 100644 (file)
@@ -183,7 +183,7 @@ public abstract class Actor {
 \r
        @Override\r
        public String toString () {\r
-               String name = this.name != null ? this.name : getClass().getSimpleName();\r
+               String name = this.name != null ? this.name : getClass().getName();\r
                if (name.equals("")) name = getClass().getName();\r
                return name + " pos=" + x + "," + y + " origin=" + originX + "," + originY + " size=" + width + "," + height;\r
        }\r
index 0eda845..6478746 100644 (file)
@@ -32,6 +32,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
 import com.badlogic.gdx.scenes.scene2d.Group;\r
 import com.badlogic.gdx.scenes.scene2d.ui.utils.Clipboard;\r
 import com.badlogic.gdx.utils.FloatArray;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 /** A single-line text input field.\r
  * <p>\r
@@ -257,7 +258,7 @@ public class TextField extends Widget {
        }\r
 \r
        private void blink () {\r
-               long time = System.nanoTime();\r
+               long time = TimeUtils.nanoTime();\r
                if ((time - lastBlink) / 1000000000.0f > blinkTime) {\r
                        cursorOn = !cursorOn;\r
                        lastBlink = time;\r
index b9e15d2..9826931 100644 (file)
@@ -30,7 +30,7 @@ package com.badlogic.gdx.utils;
 public class Base64Coder {\r
 \r
        // The line separator string of the operating system.\r
-       private static final String systemLineSeparator = System.getProperty("line.separator");\r
+       private static final String systemLineSeparator = "\n";\r
 \r
        // Mapping table from 6-bit nibbles to Base64 characters.\r
        private static char[] map1 = new char[64];\r
diff --git a/gdx/src/com/badlogic/gdx/utils/GwtModuleGenerator.java b/gdx/src/com/badlogic/gdx/utils/GwtModuleGenerator.java
new file mode 100644 (file)
index 0000000..fd4e243
--- /dev/null
@@ -0,0 +1,116 @@
+\r
+package com.badlogic.gdx.utils;\r
+\r
+import java.io.IOException;\r
+import java.io.StringWriter;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.TreeMap;\r
+\r
+import com.badlogic.gdx.files.FileHandle;\r
+\r
+/** Generates the gdx.gwt.xml file by running through the gdx/src/ directory and cross-referencing it with the gdx-backends-gwt\r
+ * directory.\r
+ * @author mzechner */\r
+public class GwtModuleGenerator {\r
+       private static void gatherJavaFiles (FileHandle dir, Set<String> names, Map<String, FileHandle> fileHandles,\r
+               boolean recursive) {\r
+               if (dir.name().equals(".svn")) return;\r
+               FileHandle[] files = dir.list();\r
+               for (FileHandle file : files) {\r
+                       if (file.isDirectory() && recursive) {\r
+                               gatherJavaFiles(file, names, fileHandles, recursive);\r
+                       } else {\r
+                               if (file.extension().equals("java")) {\r
+                                       System.out.println(file.name());\r
+                                       if(names.contains(file.name())) System.out.println(file.name() + " duplicate!");\r
+                                       names.add(file.name());\r
+                                       fileHandles.put(file.name(), file);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       public static void main (String[] args) throws IOException {\r
+               Set<String> excludes = new HashSet<String>();\r
+               Map<String, FileHandle> excludesHandles = new HashMap<String, FileHandle>();\r
+               System.out.println("Excludes -------------------------------------------------");\r
+               gatherJavaFiles(new FileHandle("../backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx"), excludes, excludesHandles, true);\r
+               System.out.println("#" + excludes.size());\r
+\r
+               // build and shared library loading utils\r
+               excludes.add("GdxBuild.java");\r
+               excludes.add("GdxNativesLoader.java");\r
+               excludes.add("GwtModuleGenerator.java");\r
+               excludes.add("SharedLibraryLoader.java");\r
+               \r
+               // native pixmap routines\r
+               excludes.add("Gdx2DPixmap.java");\r
+               excludes.add("PixmapIO.java");\r
+               excludes.add("ETC1.java");\r
+               excludes.add("ETC1TextureData.java");\r
+               excludes.add("ScreenUtils.java");\r
+\r
+               // asset manager related\r
+               excludes.add("ResolutionFileResolver.java"); // FIXME\r
+               excludes.add("SkinLoader.java");\r
+               \r
+               // remote input\r
+               excludes.add("RemoteInput.java");\r
+               excludes.add("RemoteSender.java");\r
+               \r
+               // box2d\r
+               excludes.add("ParticleEmitterBox2D.java");\r
+               gatherJavaFiles(new FileHandle("src/com/badlogic/gdx/physics/box2d"), excludes, excludesHandles, true);\r
+               \r
+               // tiled support\r
+               excludes.add("TiledLoader.java"); // FIXME?\r
+               excludes.add("TileMapRendererLoader.java"); // FIXME?\r
+               \r
+               // various utils\r
+               excludes.add("AtomicQueue.java");\r
+               excludes.add("LittleEndianInputStream.java");\r
+               excludes.add("PauseableThread.java");\r
+               excludes.add("Json.java");\r
+               excludes.add("JsonWriter.java");\r
+               \r
+               // scene2d ui package\r
+               gatherJavaFiles(new FileHandle("src/com/badlogic/gdx/scenes/scene2d/ui"), excludes, excludesHandles, true);\r
+\r
+               Set<String> includes = new HashSet<String>();\r
+               Map<String, FileHandle> includesHandles = new TreeMap<String, FileHandle>();\r
+               System.out.println("Includes -------------------------------------------------");\r
+               gatherJavaFiles(new FileHandle("src"), includes, includesHandles, true);\r
+               System.out.println("#" + includes.size());\r
+\r
+               for (String include : includes) {\r
+                       if (!excludes.contains(include)) continue;\r
+                       FileHandle includeFile = includesHandles.get(include);\r
+                       FileHandle excludeFile = excludesHandles.get(include);\r
+                       includesHandles.remove(include);\r
+                       System.out.println("excluded '" + include + "'");\r
+               }\r
+               \r
+               System.out.println("diff: " + includesHandles.size());\r
+\r
+               StringWriter writer = new StringWriter();\r
+               writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");\r
+               XmlWriter builder = new XmlWriter(writer);\r
+               builder.element("module").attribute("rename-to", "com.badlogic.gdx");\r
+               builder.element("source").attribute("path", "gdx");\r
+               for(String include: includesHandles.keySet()) {\r
+                       String name = includesHandles.get(include).path().replace("\\", "/").replace("src/com/badlogic/gdx/", "");\r
+                       builder.element("include").attribute("name", name).pop();\r
+               }\r
+               // duplicate names...\r
+               builder.element("include").attribute("name", "graphics/g2d/Animation.java").pop();\r
+               builder.element("include").attribute("name", "graphics/g3d/Animation.java").pop();\r
+               builder.pop();\r
+               builder.pop();\r
+               System.out.println(writer);\r
+               \r
+               new FileHandle("src/com/badlogic/gdx.gwt.xml").writeString(writer.toString(), false);\r
+       }\r
+}\r
diff --git a/gdx/src/com/badlogic/gdx/utils/TimeUtils.java b/gdx/src/com/badlogic/gdx/utils/TimeUtils.java
new file mode 100644 (file)
index 0000000..1181c44
--- /dev/null
@@ -0,0 +1,23 @@
+package com.badlogic.gdx.utils;\r
+\r
+/**\r
+ * Wrapper around System.nanoTime() and System.currentTimeMillis(). Use this\r
+ * if you want to be compatible across all platforms!\r
+ * @author mzechner\r
+ *\r
+ */\r
+public class TimeUtils {\r
+       /**\r
+        * @return The current value of the system timer, in nanoseconds.\r
+        */\r
+       public static long nanoTime() {\r
+               return System.nanoTime();\r
+       }\r
+       \r
+       /**\r
+        * @return the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.\r
+        */\r
+       public static long millis() {\r
+               return System.currentTimeMillis();\r
+       }\r
+}\r
index 56074fa..75d40be 100644 (file)
@@ -1,9 +1,10 @@
-t:data/gwttestparams.txt
+t:assets.txt
 i:data/43kJgl.jpg
 i:data/alpha.png
 i:data/animation.png
 t:data/arial-15.fnt
 i:data/arial-15_00.png
+b:data/arial.ttf
 i:data/badlogic.jpg
 i:data/badlogicsmall.jpg
 i:data/black_marked_0.png
@@ -15,14 +16,20 @@ i:data/debug.png
 t:data/default.fnt
 i:data/default.png
 i:data/default_00.png
+b:data/DroidSansJapanese.ttf
+b:data/DroidSerif-Bold.ttf
+b:data/DroidSerif-Italic.ttf
+b:data/DroidSerif-Regular.ttf
 i:data/egg.png
 i:data/environment.jpg
 t:data/font.fnt
 i:data/font.png
 i:data/group-debug.png
+t:data/gwttestparams.txt
 i:data/isotile.png
 t:data/issue_pack
 i:data/jump.png
+t:data/jump.txt
 i:data/layers.png
 t:data/pack
 i:data/pack1.png
@@ -39,6 +46,12 @@ i:data/resource1.jpg
 i:data/rgb.png
 t:data/scene.obj
 t:data/scene2.obj
+b:data/shaders/batch.frag
+b:data/shaders/batch.vert
+b:data/shaders/convolution.frag
+b:data/shaders/default.frag
+b:data/shaders/default.vert
+b:data/shaders/depthtocolor.frag
 t:data/shaders/flat-frag.glsl
 t:data/shaders/flat-vert.glsl
 t:data/shaders/flattex-frag.glsl
@@ -57,6 +70,8 @@ i:data/stone2.png
 i:data/stones.jpg
 i:data/sys.png
 i:data/t8890.png
+b:data/test.etc1
+b:data/test.p
 i:data/test.png
 i:data/test3.png
 i:data/test4.png
@@ -65,10 +80,18 @@ i:data/testdot.png
 t:data/testpack
 i:data/Textures1.png
 i:data/tile.png
+b:data/tiledmap/alignment test.tmx
+b:data/tiledmap/margin spacing doctype test.tmx
 t:data/tiledmap/perspective walls packfile
 t:data/tiledmap/perspective walls test packfile
 i:data/tiledmap/perspective walls test1.png
+b:data/tiledmap/perspective walls.tmx
 i:data/tiledmap/perspective walls1.png
+b:data/tiledmap/tilemap csv.tmx
+b:data/tiledmap/tilemap gzip.tmx
+b:data/tiledmap/tilemap uncompressed.tmx
+b:data/tiledmap/tilemap xml.tmx
+b:data/tiledmap/tilemap zlib.tmx
 t:data/tiledmap/tileset packfile
 i:data/tiledmap/tileset1.png
 t:data/tiledmap/tileset2 packfile
@@ -81,8 +104,11 @@ t:data/tiledmap/tmw-desert-spacing packfile
 i:data/tiledmap/tmw-desert-spacing1.png
 i:data/tiles.png
 i:data/ui.png
+b:data/uiskin.json
 i:data/uiskin.png
 t:data/verdana39.fnt
 i:data/verdana39.png
+b:data/walk1.md5anim
 i:data/walkanim.png
 i:data/wheel.png
+b:data/zfat.md5mesh
index 0244afa..8ef1c2c 100644 (file)
@@ -3,8 +3,8 @@
        <classpathentry kind="src" path="src"/>\r
        <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>\r
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
-       <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>\r
        <classpathentry combineaccessrules="false" kind="src" path="/gdx-backends-gwt"/>\r
+       <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>\r
        <classpathentry combineaccessrules="false" kind="src" path="/gdx-tests"/>\r
        <classpathentry kind="output" path="war/WEB-INF/classes"/>\r
 </classpath>\r
index 122e28d..662a9d6 100644 (file)
@@ -1,5 +1,5 @@
-#Thu Mar 15 17:56:44 CET 2012\r
+#Fri Mar 16 10:43:47 CET 2012\r
 eclipse.preferences.version=1\r
 entryPointModules=\r
 filesCopiedToWebInfLib=gwt-servlet.jar\r
-gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBW11dPjwvZXh0cmEtYXJncz48dm0tYXJncz48IVtDREFUQVstWG14NTEybV1dPjwvdm0tYXJncz48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5iYWRsb2dpYy5nZHgudGVzdHMuZ3d0LkdkeFRlc3RzR3d0PC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\=\r
+gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy1zdHJpY3RdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDUxMm1dXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uYmFkbG9naWMuZ2R4LnRlc3RzLmd3dC5HZHhUZXN0c0d3dDwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+\r
index 8ea2f83..83156fe 100644 (file)
@@ -4,10 +4,89 @@ package com.badlogic.gdx.tests.gwt.client;
 import com.badlogic.gdx.ApplicationListener;\r
 import com.badlogic.gdx.backends.gwt.GwtApplication;\r
 import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration;\r
-import com.badlogic.gdx.tests.gwt.GwtBinaryTest;\r
+import com.badlogic.gdx.tests.AlphaTest;\r
+import com.badlogic.gdx.tests.AnimationTest;\r
+import com.badlogic.gdx.tests.AssetManagerTest;\r
+import com.badlogic.gdx.tests.AtlasIssueTest;\r
+import com.badlogic.gdx.tests.BitmapFontAlignmentTest;\r
+import com.badlogic.gdx.tests.BitmapFontFlipTest;\r
+import com.badlogic.gdx.tests.BitmapFontTest;\r
+import com.badlogic.gdx.tests.BlitTest;\r
+import com.badlogic.gdx.tests.CustomShaderSpriteBatchTest;\r
+import com.badlogic.gdx.tests.DecalTest;\r
+import com.badlogic.gdx.tests.EdgeDetectionTest;\r
+import com.badlogic.gdx.tests.FilterPerformanceTest;\r
+import com.badlogic.gdx.tests.FrameBufferTest;\r
+import com.badlogic.gdx.tests.GestureDetectorTest;\r
+import com.badlogic.gdx.tests.IndexBufferObjectShaderTest;\r
+import com.badlogic.gdx.tests.IntegerBitmapFontTest;\r
+import com.badlogic.gdx.tests.InverseKinematicsTest;\r
+import com.badlogic.gdx.tests.IsoCamTest;\r
+import com.badlogic.gdx.tests.IsometricTileTest;\r
+import com.badlogic.gdx.tests.MatrixJNITest;\r
+import com.badlogic.gdx.tests.MeshShaderTest;\r
+import com.badlogic.gdx.tests.MultitouchTest;\r
+import com.badlogic.gdx.tests.MusicTest;\r
+import com.badlogic.gdx.tests.ParallaxTest;\r
+import com.badlogic.gdx.tests.ParticleEmitterTest;\r
+import com.badlogic.gdx.tests.PixelsPerInchTest;\r
+import com.badlogic.gdx.tests.RotationTest;\r
+import com.badlogic.gdx.tests.ShaderMultitextureTest;\r
+import com.badlogic.gdx.tests.ShapeRendererTest;\r
+import com.badlogic.gdx.tests.SimpleAnimationTest;\r
+import com.badlogic.gdx.tests.SimpleDecalTest;\r
+import com.badlogic.gdx.tests.SortedSpriteTest;\r
+import com.badlogic.gdx.tests.SpriteBatchShaderTest;\r
+import com.badlogic.gdx.tests.SpriteCacheOffsetTest;\r
+import com.badlogic.gdx.tests.SpriteCacheTest;\r
+import com.badlogic.gdx.tests.TextureAtlasTest;\r
+import com.badlogic.gdx.tests.VertexBufferObjectShaderTest;\r
+import com.badlogic.gdx.tests.YDownTest;\r
+import com.badlogic.gdx.tests.utils.GdxTest;\r
 \r
 public class GwtTestStarter extends GwtApplication {\r
-\r
+       GdxTest[] tests = {\r
+               new AlphaTest(),\r
+               new AnimationTest(),\r
+               new AssetManagerTest(),\r
+               new AtlasIssueTest(),\r
+               new BitmapFontAlignmentTest(),\r
+               new BitmapFontFlipTest(),\r
+               new BitmapFontTest(),\r
+               new BlitTest(),\r
+               new CustomShaderSpriteBatchTest(),\r
+               new DecalTest(),\r
+               new EdgeDetectionTest(),\r
+               new FilterPerformanceTest(),\r
+               new FrameBufferTest(),\r
+               new GestureDetectorTest(),\r
+               new IndexBufferObjectShaderTest(),\r
+               new IntegerBitmapFontTest(),\r
+               new InverseKinematicsTest(),\r
+               new IsoCamTest(),\r
+               new IsometricTileTest(),\r
+               new MatrixJNITest(),\r
+               new MeshShaderTest(),\r
+               new MultitouchTest(),\r
+               new MusicTest(),\r
+               new ParallaxTest(),\r
+               new ParticleEmitterTest(),\r
+               new PixelsPerInchTest(),\r
+//             new PixmapBlendingTest(), // no idea why this doesn't work\r
+               new RotationTest(),\r
+               new ShaderMultitextureTest(),\r
+               new ShapeRendererTest(),\r
+               new SimpleAnimationTest(),\r
+               new SimpleDecalTest(),\r
+               new SortedSpriteTest(),\r
+               new SpriteBatchShaderTest(),\r
+               new SpriteCacheOffsetTest(),\r
+               new SpriteCacheTest(),\r
+               new TextureAtlasTest(),\r
+               new VertexBufferObjectShaderTest(),\r
+               new YDownTest()\r
+       };\r
+       \r
        @Override\r
        public GwtApplicationConfiguration getConfig () {\r
                return new GwtApplicationConfiguration(640, 640);\r
@@ -15,6 +94,6 @@ public class GwtTestStarter extends GwtApplication {
 \r
        @Override\r
        public ApplicationListener getApplicationListener () {\r
-               return new GwtBinaryTest();\r
+               return new AssetManagerTest();\r
        }\r
 }\r
index 1690b7c..75d40be 100644 (file)
@@ -111,4 +111,4 @@ i:data/verdana39.png
 b:data/walk1.md5anim
 i:data/walkanim.png
 i:data/wheel.png
-b:data/zfat.md5mesh
\ No newline at end of file
+b:data/zfat.md5mesh
index bcb7c28..6181337 100644 (file)
@@ -18,7 +18,19 @@ package com.badlogic.gdx.tests.lwjgl;
 \r
 import com.badlogic.gdx.backends.lwjgl.LwjglApplication;\r
 import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;\r
+import com.badlogic.gdx.tests.AssetManagerTest;\r
+import com.badlogic.gdx.tests.AtlasIssueTest;\r
+import com.badlogic.gdx.tests.BitmapFontAlignmentTest;\r
+import com.badlogic.gdx.tests.CustomShaderSpriteBatchTest;\r
+import com.badlogic.gdx.tests.DecalTest;\r
 import com.badlogic.gdx.tests.MeshShaderTest;\r
+import com.badlogic.gdx.tests.ParticleEmitterTest;\r
+import com.badlogic.gdx.tests.PixelsPerInchTest;\r
+import com.badlogic.gdx.tests.PixmapBlendingTest;\r
+import com.badlogic.gdx.tests.ShaderMultitextureTest;\r
+import com.badlogic.gdx.tests.SpriteBatchShaderTest;\r
+import com.badlogic.gdx.tests.SpriteCacheOffsetTest;\r
+import com.badlogic.gdx.tests.VertexBufferObjectShaderTest;\r
 import com.badlogic.gdx.tests.gwt.GwtBinaryTest;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 import com.badlogic.gdx.utils.SharedLibraryLoader;\r
@@ -32,7 +44,7 @@ public class LwjglDebugStarter {
                new SharedLibraryLoader("../../extensions/gdx-image/libs/gdx-image-natives.jar").load("gdx-image");\r
                new SharedLibraryLoader("../../extensions/gdx-freetype/libs/gdx-freetype-natives.jar").load("gdx-freetype");\r
                \r
-               GdxTest test = new GwtBinaryTest();\r
+               GdxTest test = new AssetManagerTest();\r
                LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();\r
                config.width = 800;\r
                config.height = 480;\r
index 060b90b..06b8e55 100644 (file)
@@ -1,5 +1,57 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">\r
 <module>\r
-       <source path="tests"/>\r
+       <source path="tests">\r
+               <exclude name="**/box2d/**"/>\r
+               <exclude name="**/AudioDeviceTest.java"/>\r
+               <exclude name="**/AudioRecorderTest.java"/>\r
+               <exclude name="**/ActionTest.java"/>\r
+               <exclude name="**/ActionSequenceTest.java"/>\r
+               <exclude name="**/Box2DCharacterControllerTest.java"/>\r
+               <exclude name="**/Box2DInitialOverlapTest.java"/>\r
+               <exclude name="**/Box2DTest.java"/>\r
+               <exclude name="**/Box2DTestCollection.java"/>\r
+               <exclude name="**/BufferUtilsTest.java"/>\r
+               <exclude name="**/ComplexActionTest.java"/>\r
+               <exclude name="**/ETC1Test.java"/>\r
+               <exclude name="**/FFTTest.java"/>\r
+               <exclude name="**/FlickScrollPaneTest.java"/>\r
+               <exclude name="**/FramebufferToTextureTest.java"/>\r
+               <exclude name="**/FreeTypeTest.java"/>\r
+               <exclude name="**/Gdx2DTest.java"/>\r
+               <exclude name="**/GroupCullingTest.java"/>\r
+               <exclude name="**/GroupFadeTest.java"/>\r
+               <exclude name="**/ImageScaleTest.java"/>\r
+               <exclude name="**/ImageTest.java"/>\r
+               <exclude name="**/InterpolationTest.java"/>\r
+               <exclude name="**/JpegTest.java"/>\r
+               <exclude name="**/KinematicBodyTest.java"/>\r
+               <exclude name="**/LabelTest.java"/>\r
+               <exclude name="**/LifeCycleTest.java"/>\r
+               <exclude name="**/MipMapTest.java"/>\r
+               <exclude name="**/Mpg123Test.java"/>\r
+               <exclude name="**/ProjectiveTextureTest.java"/>\r
+               <exclude name="**/RemoteTest.java"/>\r
+               <exclude name="**/ScreenCaptureTest.java"/>\r
+               <exclude name="**/ScrollPaneTest.java"/>\r
+               <exclude name="**/ShadowMappingTest.java"/>\r
+               <exclude name="**/SimpleStageCullingTest.java"/>\r
+               <exclude name="**/SoundTest.java"/>\r
+               <exclude name="**/SoundTouchTest.java"/>\r
+               <exclude name="**/StagePerformanceTest.java"/>\r
+               <exclude name="**/StageTest.java"/>\r
+               <exclude name="**/StbTrueTypeTest.java"/>\r
+               <exclude name="**/TextButtonTestGL2.java"/>\r
+               <exclude name="**/TextureDownloadTest.java"/>\r
+               <exclude name="**/TTFFactoryTest.java"/>\r
+               <exclude name="**/TableTest.java"/>\r
+               <exclude name="**/TextButtonTest.java"/>\r
+               <exclude name="**/TileTest.java"/>\r
+               <exclude name="**/TiledMapTest.java"/>\r
+               <exclude name="**/UITest.java"/>\r
+               <exclude name="**/VorbisTest.java"/>\r
+               <exclude name="**/WavTest.java"/>\r
+               <exclude name="**/AssetsFileGenerator.java"/>\r
+               <exclude name="**/GdxTests.java"/>\r
+       </source>\r
 </module>
\ No newline at end of file
index 51493df..50637da 100644 (file)
@@ -22,7 +22,6 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.assets.AssetErrorListener;\r
 import com.badlogic.gdx.assets.AssetManager;\r
 import com.badlogic.gdx.assets.loaders.TextureLoader;\r
-import com.badlogic.gdx.assets.loaders.TileMapRendererLoader;\r
 import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;\r
 import com.badlogic.gdx.assets.loaders.resolvers.ResolutionFileResolver;\r
 import com.badlogic.gdx.assets.loaders.resolvers.ResolutionFileResolver.Resolution;\r
@@ -31,12 +30,9 @@ import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.BitmapFont;\r
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.graphics.g2d.TextureAtlas;\r
-import com.badlogic.gdx.graphics.g2d.tiled.TileAtlas;\r
-import com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer;\r
-import com.badlogic.gdx.graphics.g2d.tiled.TiledLoader;\r
-import com.badlogic.gdx.graphics.g2d.tiled.TiledMap;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 import com.badlogic.gdx.utils.BufferUtils;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class AssetManagerTest extends GdxTest implements AssetErrorListener {\r
        @Override\r
@@ -68,50 +64,50 @@ public class AssetManagerTest extends GdxTest implements AssetErrorListener {
 \r
        boolean diagnosed = false;\r
        private long start;\r
-       private TileMapRenderer renderer;\r
-       private TileAtlas atlas;\r
-       private TiledMap map;\r
-       private Texture tex3;\r
+//     private TileMapRenderer renderer;\r
+//     private TileAtlas atlas;\r
+//     private TiledMap map;\r
+//     private Texture tex3;\r
        private BitmapFont font2;\r
        private TextureAtlas tex2;\r
        private Texture tex1;\r
        \r
        private void load() {\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                tex1 = new Texture("data/animation.png");\r
                tex2 = new TextureAtlas(Gdx.files.internal("data/pack"));\r
                font2 = new BitmapFont(Gdx.files.internal("data/verdana39.fnt"), false);\r
-               tex3 = new Texture("data/test.etc1");\r
-               map = TiledLoader.createMap(Gdx.files.internal("data/tiledmap/tilemap csv.tmx"));\r
-               atlas = new TileAtlas(map, Gdx.files.internal("data/tiledmap/"));\r
-               renderer = new TileMapRenderer(map, atlas, 8, 8);\r
-               System.out.println("plain took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+//             tex3 = new Texture("data/test.etc1");\r
+//             map = TiledLoader.createMap(Gdx.files.internal("data/tiledmap/tilemap csv.tmx"));\r
+//             atlas = new TileAtlas(map, Gdx.files.internal("data/tiledmap/"));\r
+//             renderer = new TileMapRenderer(map, atlas, 8, 8);\r
+               System.out.println("plain took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
                \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                manager.load("data/animation.png", Texture.class);\r
                manager.load("data/pack1.png", Texture.class);\r
                manager.load("data/pack", TextureAtlas.class);\r
                manager.load("data/verdana39.png", Texture.class);\r
                manager.load("data/verdana39.fnt", BitmapFont.class);\r
-               manager.load("data/test.etc1", Texture.class);\r
-               manager.load("data/tiledmap/tilemap csv.tmx", TileMapRenderer.class, new TileMapRendererLoader.TileMapParameter("data/tiledmap/", 8, 8));\r
+//             manager.load("data/test.etc1", Texture.class);\r
+//             manager.load("data/tiledmap/tilemap csv.tmx", TileMapRenderer.class, new TileMapRendererLoader.TileMapParameter("data/tiledmap/", 8, 8));\r
        }\r
        \r
        private void unload() {\r
                tex1.dispose();\r
                tex2.dispose();\r
                font2.dispose();\r
-               tex3.dispose();\r
-               atlas.dispose();\r
-               renderer.dispose();\r
+//             tex3.dispose();\r
+//             atlas.dispose();\r
+//             renderer.dispose();\r
                \r
                manager.unload("data/animation.png");\r
                manager.unload("data/pack1.png");\r
                manager.unload("data/pack");\r
                manager.unload("data/verdana39.png");\r
                manager.unload("data/verdana39.fnt");\r
-               manager.unload("data/test.etc1");\r
-               manager.unload("data/tiledmap/tilemap csv.tmx");\r
+//             manager.unload("data/test.etc1");\r
+//             manager.unload("data/tiledmap/tilemap csv.tmx");\r
        }\r
        \r
        private void invalidateTexture(Texture texture) {\r
@@ -124,9 +120,8 @@ public class AssetManagerTest extends GdxTest implements AssetErrorListener {
                Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                boolean result = manager.update();\r
                if (result & !diagnosed) {\r
-//                     Gdx.app.log("AssetManagerTest", "\n" + manager.getDiagnostics() + "\n" + Texture.getManagedStatus());\r
                        diagnosed = true;\r
-                       System.out.println("took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+                       System.out.println("took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
                        unload();\r
                        load();\r
                        diagnosed = false;\r
@@ -135,12 +130,12 @@ public class AssetManagerTest extends GdxTest implements AssetErrorListener {
                frame++;\r
 \r
                batch.begin();\r
-               if (manager.isLoaded("data/test.etc1")) batch.draw(manager.get("data/test.etc1", Texture.class), 0, 0);\r
                if (manager.isLoaded("data/animation.png")) batch.draw(manager.get("data/animation.png", Texture.class), 100, 100);\r
                if (manager.isLoaded("data/verdana39.png")) batch.draw(manager.get("data/verdana39.png", Texture.class), 300, 100);\r
                if (manager.isLoaded("data/pack")) batch.draw(manager.get("data/pack", TextureAtlas.class).findRegion("particle-star"), 164, 100);\r
                if (manager.isLoaded("data/verdana39.fnt")) manager.get("data/verdana39.fnt", BitmapFont.class).draw(batch, "This is a test", 100, 200);\r
-               if (manager.isLoaded("data/tiledmap/tilemap csv.tmx")) manager.get("data/tiledmap/tilemap csv.tmx", TileMapRenderer.class).render();\r
+//             if (manager.isLoaded("data/test.etc1")) batch.draw(manager.get("data/test.etc1", Texture.class), 0, 0);\r
+//             if (manager.isLoaded("data/tiledmap/tilemap csv.tmx")) manager.get("data/tiledmap/tilemap csv.tmx", TileMapRenderer.class).render();\r
                font.draw(batch, "loaded: " + manager.getProgress() + ", reloads: " + reloads, 0, 30);\r
                batch.end();\r
                \r
index bfe81c6..730c78c 100644 (file)
@@ -58,8 +58,7 @@ public class BitmapFontAlignmentTest extends GdxTest {
 \r
        @Override\r
        public void render () {\r
-               GL10 gl = Gdx.graphics.getGL10();\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                spriteBatch.begin();\r
                logoSprite.draw(spriteBatch);\r
                switch (renderMode) {\r
index da20916..9ac95ff 100644 (file)
@@ -97,8 +97,7 @@ public class BitmapFontFlipTest extends GdxTest {
        public void render () {\r
                red.a = (red.a + Gdx.graphics.getDeltaTime() * 0.1f) % 1;\r
 \r
-               GL10 gl = Gdx.graphics.getGL10();\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                spriteBatch.begin();\r
                logoSprite.draw(spriteBatch);\r
                switch (renderMode) {\r
index 9a6de40..19bd7c2 100644 (file)
@@ -25,21 +25,22 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont.TextBounds;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.graphics.g2d.TextureAtlas;\r
 import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer10;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 \r
 public class BitmapFontTest extends GdxTest {\r
        private SpriteBatch spriteBatch;\r
        private BitmapFont font;\r
-       ImmediateModeRenderer10 renderer;\r
-\r
+       private ShapeRenderer renderer;\r
+       \r
        @Override\r
        public void create () {\r
                spriteBatch = new SpriteBatch();\r
-\r
                TextureAtlas textureAtlas = new TextureAtlas("data/pack");\r
                font = new BitmapFont(Gdx.files.internal("data/verdana39.fnt"), textureAtlas.findRegion("verdana39"), false);\r
-\r
-               renderer = new ImmediateModeRenderer10();\r
+               renderer = new ShapeRenderer();\r
+               renderer.setProjectionMatrix(spriteBatch.getProjectionMatrix());\r
        }\r
 \r
        @Override\r
@@ -48,9 +49,8 @@ public class BitmapFontTest extends GdxTest {
 \r
                int viewHeight = Gdx.graphics.getHeight();\r
 \r
-               GL10 gl = Gdx.graphics.getGL10();\r
-               gl.glClearColor(1, 1, 1, 1);\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClearColor(1, 1, 1, 1);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                spriteBatch.begin();\r
 \r
                String text = "Sphinx of black quartz, judge my vow.";\r
@@ -78,16 +78,8 @@ public class BitmapFontTest extends GdxTest {
 \r
                spriteBatch.end();\r
 \r
-               drawRect(x, viewHeight - y, x + alignmentWidth, 300);\r
-       }\r
-\r
-       public void drawRect (float x1, float y1, float x2, float y2) {\r
-               renderer.begin(GL10.GL_LINE_STRIP);\r
-               renderer.vertex(x1, y1, 0);\r
-               renderer.vertex(x1, y2, 0);\r
-               renderer.vertex(x2, y2, 0);\r
-               renderer.vertex(x2, y1, 0);\r
-               renderer.vertex(x1, y1, 0);\r
+               renderer.begin(ShapeType.Rectangle);\r
+               renderer.rect(x, viewHeight - y, x + alignmentWidth, 300);\r
                renderer.end();\r
        }\r
 \r
index 285df10..a3f0065 100644 (file)
@@ -27,6 +27,7 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 import com.badlogic.gdx.utils.BufferUtils;\r
 import com.badlogic.gdx.utils.GdxRuntimeException;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class BufferUtilsTest extends GdxTest {\r
        static final int NUM_MB = 5;\r
@@ -125,38 +126,38 @@ public class BufferUtilsTest extends GdxTest {
                final int NUM_MB = 5;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        bb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                bb.put(bytes[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ByteBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ByteBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        bb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                bb.put(i, bytes[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ByteBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ByteBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        bb.clear();\r
                        bb.put(bytes);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ByteBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ByteBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        bb.clear();\r
                        BufferUtils.copy(bytes, 0, bb, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ByteBuffer native bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ByteBuffer native bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void benchShort () {\r
@@ -165,38 +166,38 @@ public class BufferUtilsTest extends GdxTest {
                int len = shorts.length;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        sb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                sb.put(shorts[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ShortBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ShortBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        sb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                sb.put(i, shorts[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ShortBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ShortBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        sb.clear();\r
                        sb.put(shorts);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ShortBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ShortBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        sb.clear();\r
                        BufferUtils.copy(shorts, 0, sb, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "ShortBuffer native bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "ShortBuffer native bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void benchInt () {\r
@@ -205,38 +206,38 @@ public class BufferUtilsTest extends GdxTest {
                int len = ints.length;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        ib.clear();\r
                        for (int i = 0; i < len; i++)\r
                                ib.put(ints[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "IntBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "IntBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        ib.clear();\r
                        for (int i = 0; i < len; i++)\r
                                ib.put(i, ints[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "IntBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "IntBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        ib.clear();\r
                        ib.put(ints);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "IntBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "IntBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        ib.clear();\r
                        BufferUtils.copy(ints, 0, ib, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "IntBuffer native bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "IntBuffer native bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void benchLong () {\r
@@ -245,38 +246,38 @@ public class BufferUtilsTest extends GdxTest {
                int len = longs.length;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        lb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                lb.put(longs[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "LongBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "LongBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        lb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                lb.put(i, longs[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "LongBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "LongBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        lb.clear();\r
                        lb.put(longs);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "LongBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "LongBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        lb.clear();\r
                        BufferUtils.copy(longs, 0, lb, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "LongBuffer native bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "LongBuffer native bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void benchFloat () {\r
@@ -285,38 +286,38 @@ public class BufferUtilsTest extends GdxTest {
                int len = floats.length;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        fb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                fb.put(floats[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "FloatBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "FloatBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        fb.clear();\r
                        for (int i = 0; i < len; i++)\r
                                fb.put(i, floats[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "FloatBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "FloatBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        fb.clear();\r
                        fb.put(floats);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "FloatBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "FloatBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        fb.clear();\r
                        BufferUtils.copy(floats, 0, fb, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "FloatBuffer native bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "FloatBuffer native bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void benchDouble () {\r
@@ -325,38 +326,38 @@ public class BufferUtilsTest extends GdxTest {
                int len = doubles.length;\r
 \r
                // relative put\r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        db.clear();\r
                        for (int i = 0; i < len; i++)\r
                                db.put(doubles[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "DoubleBuffer relative put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "DoubleBuffer relative put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // absolute put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        db.clear();\r
                        for (int i = 0; i < len; i++)\r
                                db.put(i, doubles[i]);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "DoubleBuffer absolute put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "DoubleBuffer absolute put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // bulk put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        db.clear();\r
                        db.put(doubles);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "DoubleBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "DoubleBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                // JNI put\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int j = 0; j < NUM_MB; j++) {\r
                        db.clear();\r
                        BufferUtils.copy(doubles, 0, db, len);\r
                }\r
-               Gdx.app.log("BufferUtilsTest", "DoubleBuffer bulk put: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("BufferUtilsTest", "DoubleBuffer bulk put: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void checkInt (long val1, long val2) {\r
index 52c4a14..9b426dc 100644 (file)
@@ -24,6 +24,7 @@ import com.badlogic.gdx.graphics.GL10;
 import com.badlogic.gdx.graphics.OrthographicCamera;\r
 import com.badlogic.gdx.graphics.Texture;\r
 import com.badlogic.gdx.graphics.g2d.TextureRegion;\r
+import com.badlogic.gdx.graphics.g3d.decals.CameraGroupStrategy;\r
 import com.badlogic.gdx.graphics.g3d.decals.Decal;\r
 import com.badlogic.gdx.graphics.g3d.decals.DecalBatch;\r
 import com.badlogic.gdx.graphics.g3d.decals.GroupStrategy;\r
@@ -35,8 +36,6 @@ public class DecalTest extends GdxTest {
        public static final int TARGET_FPS = 40;\r
        public static final int INITIAL_RENDERED = 100;\r
        private boolean willItBlend_that_is_the_question = true;\r
-       private GroupStrategy strategy = new SimpleOrthoGroupStrategy();\r
-       // private GroupStrategy strategy = new DefaultGroupStrategy();\r
        Texture egg;\r
        Texture wheel;\r
        LinkedList<Decal> toRender = new LinkedList<Decal>();\r
@@ -52,7 +51,7 @@ public class DecalTest extends GdxTest {
        @Override\r
        public void create () {\r
                Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);\r
-               Gdx.gl10.glDepthFunc(GL10.GL_LESS);\r
+               Gdx.gl.glDepthFunc(GL10.GL_LESS);\r
 \r
                egg = new Texture(Gdx.files.internal("data/egg.png"));\r
                egg.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);\r
@@ -65,8 +64,13 @@ public class DecalTest extends GdxTest {
                h = Gdx.graphics.getHeight() / 0.8f;\r
                for (int i = 0; i < INITIAL_RENDERED; i++) {\r
                        toRender.add(makeDecal());\r
-               }\r
-               batch = new DecalBatch(strategy);\r
+               }               \r
+               cam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+               cam.near = 0.1f;\r
+               cam.far = 10f;\r
+               cam.position.set(0, 0, 0.1f);\r
+               cam.direction.set(0, 0, -1f);\r
+               batch = new DecalBatch(new CameraGroupStrategy(cam));\r
 \r
                Gdx.gl.glClearColor(1, 1, 0, 1);\r
        }\r
@@ -120,8 +124,6 @@ public class DecalTest extends GdxTest {
                cam.far = 10f;\r
                cam.position.set(0, 0, 0.1f);\r
                cam.direction.set(0, 0, -1f);\r
-               cam.update();\r
-               cam.apply(Gdx.gl10);\r
        }\r
 \r
        private Decal makeDecal () {\r
index dc43458..183e921 100644 (file)
@@ -18,6 +18,7 @@ package com.badlogic.gdx.tests;
 \r
 import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class DeltaTimeTest extends GdxTest {\r
 \r
@@ -30,12 +31,12 @@ public class DeltaTimeTest extends GdxTest {
 \r
        @Override\r
        public void create () {\r
-               lastFrameTime = System.nanoTime();\r
+               lastFrameTime = TimeUtils.nanoTime();\r
        }\r
 \r
        @Override\r
        public void render () {\r
-               long frameTime = System.nanoTime();\r
+               long frameTime = TimeUtils.nanoTime();\r
                float deltaTime = (frameTime - lastFrameTime) / 1000000000.0f;\r
                lastFrameTime = frameTime;\r
 \r
index 7c21dae..2b23fd2 100644 (file)
@@ -25,12 +25,13 @@ import com.badlogic.gdx.graphics.Texture.TextureFilter;
 import com.badlogic.gdx.graphics.VertexAttribute;\r
 import com.badlogic.gdx.graphics.VertexAttributes;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class FillrateTest extends GdxTest implements InputProcessor {\r
        Texture texture;\r
        Mesh mesh;\r
        int numFills = 1;\r
-       long lastOut = System.nanoTime();\r
+       long lastOut = TimeUtils.nanoTime();\r
 \r
        int mode = 0;\r
        float mean = 0;\r
@@ -109,11 +110,11 @@ public class FillrateTest extends GdxTest implements InputProcessor {
 \r
                if (Gdx.graphics.getDeltaTime() < 1 / 60f) numFills++;\r
 \r
-               if (System.nanoTime() - lastOut >= 1000000000) {\r
+               if (TimeUtils.nanoTime() - lastOut >= 1000000000) {\r
                        Gdx.app.log("FillrateTest", "fills: " + mean / frames + ", fps: " + frames + ", mode" + mode);\r
                        mean = 0;\r
                        frames = 0;\r
-                       lastOut = System.nanoTime();\r
+                       lastOut = TimeUtils.nanoTime();\r
                        if (Gdx.graphics.getFramesPerSecond() < 60) numFills--;\r
                }\r
        }\r
index 827f5e1..3b4d963 100644 (file)
@@ -21,6 +21,7 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont;
 import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;\r
 import com.badlogic.gdx.graphics.g2d.BitmapFontCache;\r
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 \r
 public class IntegerBitmapFontTest extends GdxTest {\r
@@ -38,7 +39,8 @@ public class IntegerBitmapFontTest extends GdxTest {
        SpriteBatch batch;\r
 \r
        public void create () {\r
-               font = new BitmapFont();\r
+               TextureAtlas textureAtlas = new TextureAtlas("data/pack");\r
+               font = new BitmapFont(Gdx.files.internal("data/verdana39.fnt"), textureAtlas.findRegion("verdana39"), false);\r
                singleLineCache = new BitmapFontCache(font, true);\r
                multiLineCache = new BitmapFontCache(font, true);\r
                singleLineCacheNonInteger = new BitmapFontCache(font, false);\r
index 61e8743..09669cd 100644 (file)
@@ -19,6 +19,8 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.GL10;\r
 import com.badlogic.gdx.graphics.OrthographicCamera;\r
 import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer10;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;\r
 import com.badlogic.gdx.math.Vector2;\r
 import com.badlogic.gdx.math.Vector3;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
@@ -50,7 +52,7 @@ public class InverseKinematicsTest extends GdxTest {
 \r
        static final float GRAVITY = 0;\r
        OrthographicCamera camera;\r
-       ImmediateModeRenderer10 renderer;\r
+       ShapeRenderer renderer;\r
        Bone[] bones;\r
        Vector3 globalCoords = new Vector3();\r
        Vector3 endPoint = new Vector3();\r
@@ -60,7 +62,9 @@ public class InverseKinematicsTest extends GdxTest {
        public void create () {\r
                float aspect = Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();\r
                camera = new OrthographicCamera(15 * aspect, 15);\r
-               renderer = new ImmediateModeRenderer10();\r
+               camera.update();\r
+               renderer = new ShapeRenderer();\r
+               renderer.setProjectionMatrix(camera.combined);\r
 \r
                bones = new Bone[] {new Bone("bone0", 0, 0, 0), new Bone("bone1", 0, 2, 2), new Bone("bone2", 0, 4, 2),\r
                        new Bone("bone3", 0, 6, 2), new Bone("end", 0, 8, 2)};\r
@@ -72,7 +76,7 @@ public class InverseKinematicsTest extends GdxTest {
                Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
 \r
                camera.update();\r
-               camera.apply(Gdx.gl10);\r
+               renderer.setProjectionMatrix(camera.combined);\r
 \r
                if (Gdx.input.isTouched()) camera.unproject(globalCoords.set(Gdx.input.getX(), Gdx.input.getY(), 0));\r
                solveFakeIK(globalCoords);\r
@@ -80,24 +84,19 @@ public class InverseKinematicsTest extends GdxTest {
        }\r
 \r
        private void renderBones () {\r
-               renderer.begin(GL10.GL_LINES);\r
+               renderer.begin(ShapeType.Line);\r
+               renderer.setColor(0, 1, 0, 1);\r
                for (int i = 0; i < bones.length - 1; i++) {\r
-                       renderer.color(0, 1, 0, 1);\r
-                       renderer.vertex(bones[i].position);\r
-                       renderer.color(0, 1, 0, 1);\r
-                       renderer.vertex(bones[i + 1].position);\r
+                       renderer.line(bones[i].position.x, bones[i].position.y, bones[i + 1].position.x, bones[i + 1].position.y);\r
                }\r
                renderer.end();\r
 \r
-               Gdx.gl10.glPointSize(5);\r
-\r
-               renderer.begin(GL10.GL_POINTS);\r
+               renderer.begin(ShapeType.Point);\r
+               renderer.setColor(1, 0, 0, 1);\r
                for (int i = 0; i < bones.length; i++) {\r
-                       renderer.color(1, 0, 0, 1);\r
-                       renderer.vertex(bones[i].position);\r
+                       renderer.point(bones[i].position.x, bones[i].position.y, 0);\r
                }\r
                renderer.end();\r
-               Gdx.gl10.glPointSize(1);\r
        }\r
 \r
        public void solveFakeIK (Vector3 target) {\r
index 36390f2..8a25d0a 100644 (file)
@@ -24,8 +24,11 @@ import com.badlogic.gdx.graphics.OrthographicCamera;
 import com.badlogic.gdx.graphics.Texture;\r
 import com.badlogic.gdx.graphics.g2d.SpriteCache;\r
 import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer10;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 import com.badlogic.gdx.tests.utils.OrthoCamController;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class IsometricTileTest extends GdxTest {\r
        static final int LAYERS = 1;\r
@@ -43,8 +46,8 @@ public class IsometricTileTest extends GdxTest {
        int[] layers = new int[LAYERS];\r
        OrthographicCamera cam;\r
        OrthoCamController camController;\r
-       ImmediateModeRenderer10 renderer;\r
-       long startTime = System.nanoTime();\r
+       ShapeRenderer renderer;\r
+       long startTime = TimeUtils.nanoTime();\r
 \r
        @Override\r
        public void create () {\r
@@ -52,7 +55,7 @@ public class IsometricTileTest extends GdxTest {
                camController = new OrthoCamController(cam);\r
                Gdx.input.setInputProcessor(camController);\r
 \r
-               renderer = new ImmediateModeRenderer10();\r
+               renderer = new ShapeRenderer();\r
                texture = new Texture(Gdx.files.internal("data/isotile.png"));\r
 \r
                Random rand = new Random();\r
@@ -79,13 +82,12 @@ public class IsometricTileTest extends GdxTest {
 \r
        @Override\r
        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
+               Gdx.gl.glClearColor(0.7f, 0.7f, 0.7f, 1);\r
+               Gdx.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
+               Gdx.gl.glEnable(GL10.GL_BLEND);\r
+               Gdx.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.combined);\r
@@ -94,25 +96,17 @@ public class IsometricTileTest extends GdxTest {
                        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
+               renderer.setProjectionMatrix(cam.combined);\r
+               renderer.begin(ShapeType.Line);\r
+               renderer.setColor(1, 0, 0, 1);\r
+               renderer.line(0, 0, 500, 0);\r
+               renderer.line(0, 0, 0, 500);\r
+\r
+               renderer.setColor(0, 0, 1, 1);\r
+               renderer.line(0, BOUND_Y, BOUND_X, BOUND_Y);\r
+\r
+               renderer.setColor(0, 0, 1, 1);\r
+               renderer.line(BOUND_X, 0, BOUND_X, BOUND_Y);\r
 \r
                renderer.end();\r
        }\r
index 95050f6..018a33c 100644 (file)
@@ -29,6 +29,7 @@ import com.badlogic.gdx.graphics.g3d.loaders.md5.MD5Loader;
 import com.badlogic.gdx.graphics.g3d.loaders.md5.MD5Model;\r
 import com.badlogic.gdx.graphics.g3d.loaders.md5.MD5Renderer;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class MD5Test extends GdxTest implements InputProcessor {\r
        PerspectiveCamera camera;\r
@@ -52,10 +53,10 @@ public class MD5Test extends GdxTest implements InputProcessor {
                renderer = new MD5Renderer(model, useNormals, false);\r
                renderer.setSkeleton(model.baseSkeleton);\r
 \r
-               // long start = System.nanoTime();\r
+               // long start = TimeUtils.nanoTime();\r
                // for( int i = 0; i < 100000; i++ )\r
                // renderer.setSkeleton( model.baseSkeleton );\r
-               // app.log( "MD5 Test", "took: " + (System.nanoTime() - start ) /\r
+               // app.log( "MD5 Test", "took: " + (TimeUtils.nanoTime() - start ) /\r
                // 1000000000.0 );\r
 \r
                camera = new PerspectiveCamera(60, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
@@ -94,15 +95,15 @@ public class MD5Test extends GdxTest implements InputProcessor {
                        gl.glRotatef(angle, 0, 1, 0);\r
                        gl.glRotatef(-90, 1, 0, 0);\r
 \r
-                       start = System.nanoTime();\r
+                       start = TimeUtils.nanoTime();\r
                        MD5Animation.interpolate(anim.frames[animInfo.getCurrentFrame()], anim.frames[animInfo.getNextFrame()], skeleton,\r
                                animInfo.getInterpolation());\r
                        renderer.setSkeleton(skeleton);\r
-                       skinTime = (System.nanoTime() - start) / 1000000000.0f;\r
+                       skinTime = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-                       start = System.nanoTime();\r
+                       start = TimeUtils.nanoTime();\r
                        renderer.render();\r
-                       renderTime = (System.nanoTime() - start) / 1000000000.0f;\r
+                       renderTime = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
                        gl.glPopMatrix();\r
                }\r
 \r
index a9c9772..f83e0c8 100644 (file)
@@ -20,6 +20,7 @@ import com.badlogic.gdx.math.Matrix4;
 import com.badlogic.gdx.math.Vector3;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 import com.badlogic.gdx.utils.GdxRuntimeException;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class MatrixJNITest extends GdxTest {\r
        @Override\r
@@ -76,48 +77,48 @@ public class MatrixJNITest extends GdxTest {
                Matrix4 mata = new Matrix4();\r
                Matrix4 matb = new Matrix4();\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 1000000; i++) {\r
                        mata.mul(matb);\r
                }\r
-               Gdx.app.log("MatrixJNITest", "java matrix * matrix took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "java matrix * matrix took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 1000000; i++) {\r
                        Matrix4.mul(mata.val, matb.val);\r
                }\r
-               Gdx.app.log("MatrixJNITest", "jni matrix * matrix took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "jni matrix * matrix took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                Vector3 vec = new Vector3();\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 500000; i++) {\r
                        vec.mul(mata);\r
                }\r
-               Gdx.app.log("MatrixJNITest", "java vecs * matrix took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "java vecs * matrix took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                float[] fvec = new float[3];\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 500000; i++) {\r
                        Matrix4.mulVec(mata.val, fvec);\r
                }\r
-               Gdx.app.log("MatrixJNITest", "jni vecs * matrix took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "jni vecs * matrix took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
                float[] fvecs = new float[3 * 500000];\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                Matrix4.mulVec(mata.val, fvecs, 0, 500000, 3);\r
-               Gdx.app.log("MatrixJNITest", "jni bulk vecs * matrix took: " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "jni bulk vecs * matrix took: " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 1000000; i++) {\r
                        mata.inv();\r
                }\r
-               Gdx.app.log("MatrixJNITest", "java inv(matrix): " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "java inv(matrix): " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < 1000000; i++) {\r
                        Matrix4.inv(mata.val);\r
                }\r
-               Gdx.app.log("MatrixJNITest", "jni inv(matrix): " + (System.nanoTime() - start) / 1000000000.0f);\r
+               Gdx.app.log("MatrixJNITest", "jni inv(matrix): " + (TimeUtils.nanoTime() - start) / 1000000000.0f);\r
        }\r
 \r
        private void check (Vector3 vec, float[] fvec) {\r
index 9b0b4a7..777324f 100644 (file)
@@ -63,7 +63,7 @@ public class MeshShaderTest extends GdxTest {
                shader = new ShaderProgram(vertexShader, fragmentShader);\r
                if (shader.isCompiled() == false) {\r
                        Gdx.app.log("ShaderTest", shader.getLog());\r
-                       System.exit(0);\r
+                       Gdx.app.exit();\r
                }\r
 \r
                mesh = new Mesh(true, 4, 6, VertexAttribute.Position(), VertexAttribute.ColorUnpacked(), VertexAttribute.TexCoords(0));\r
index 395f84b..4c5698f 100644 (file)
@@ -23,22 +23,24 @@ import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.GL10;\r
 import com.badlogic.gdx.graphics.OrthographicCamera;\r
 import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer10;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;\r
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
-public class MultitouchTest extends GdxTest implements InputProcessor {\r
-       ImmediateModeRenderer10 renderer;\r
+public class MultitouchTest extends GdxTest {\r
+       ShapeRenderer renderer;\r
        OrthographicCamera camera;\r
-       long startTime = System.nanoTime();\r
+       long startTime = TimeUtils.nanoTime();\r
 \r
        Color[] colors = {Color.RED, Color.BLUE, Color.GREEN, Color.WHITE};\r
 \r
        @Override\r
        public void render () {\r
-               Gdx.graphics.getGL10().glClear(GL10.GL_COLOR_BUFFER_BIT);\r
-               Gdx.graphics.getGL10().glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                camera.update();\r
-               camera.apply(Gdx.gl10);\r
-               renderer.begin(GL10.GL_TRIANGLES);\r
+               renderer.setProjectionMatrix(camera.combined);\r
+               renderer.begin(ShapeType.FilledTriangle);\r
                int size = Math.max(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()) / 10;\r
                for (int i = 0; i < 10; i++) {\r
                        if (Gdx.input.isTouched(i) == false) continue;\r
@@ -46,76 +48,17 @@ public class MultitouchTest extends GdxTest implements InputProcessor {
                        float x = Gdx.input.getX(i);\r
                        float y = Gdx.graphics.getHeight() - Gdx.input.getY(i) - 1;\r
                        Color col = colors[i % colors.length];\r
-                       renderer.color(col.r, col.g, col.b, col.a);\r
-                       renderer.vertex(x, y + size, 0);\r
-                       renderer.color(col.r, col.g, col.b, col.a);\r
-                       renderer.vertex(x + size, y - size, 0);\r
-                       renderer.color(col.r, col.g, col.b, col.a);\r
-                       renderer.vertex(x - size, y - size, 0);\r
+                       renderer.filledTriangle(x, y + size, x + size, y - size, x - size, y - size);\r
                }\r
-\r
                renderer.end();\r
-\r
-// if (System.nanoTime() - startTime > 1000000000l) {\r
-// Gdx.app.log("MultiTouhTest", "fps:" + Gdx.graphics.getFramesPerSecond());\r
-// startTime = System.nanoTime();\r
-// }\r
        }\r
 \r
        @Override\r
        public void create () {\r
                Gdx.app.log("Multitouch", "multitouch supported: " + Gdx.input.isPeripheralAvailable(Peripheral.MultitouchScreen));\r
-               renderer = new ImmediateModeRenderer10();\r
+               renderer = new ShapeRenderer();\r
                camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
                camera.position.set(Gdx.graphics.getWidth() / 2.0f, Gdx.graphics.getHeight() / 2.0f, 0);\r
                Gdx.input.setInputProcessor(this);\r
        }\r
-\r
-       @Override\r
-       public boolean keyDown (int keycode) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyTyped (char character) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyUp (int keycode) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchDown (int x, int y, int pointer, int newParam) {\r
-// Gdx.app.log("Multitouch", "down: " + pointer);\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchDragged (int x, int y, int pointer) {\r
-// Gdx.app.log("Multitouch", "drag: " + pointer);\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchUp (int x, int y, int pointer, int button) {\r
-// Gdx.app.log("Multitouch", "up: " + pointer);\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean needsGL20 () {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchMoved (int x, int y) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean scrolled (int amount) {\r
-               return false;\r
-       }\r
 }\r
index e129e54..0bc64b1 100644 (file)
@@ -41,7 +41,7 @@ public class MusicTest extends GdxTest {
        @Override\r
        public void create () {\r
                for (int i = 0; i < music.length; i++) {\r
-                       music[i] = Gdx.audio.newMusic(Gdx.files.internal("data/music.mp3"));\r
+                       music[i] = Gdx.audio.newMusic(Gdx.files.internal("data/cloudconnected.ogg"));\r
                }\r
 \r
                buttons = new TextureRegion(new Texture(Gdx.files.internal("data/playback.png")));\r
index 7b2f882..97ed0f7 100644 (file)
@@ -74,7 +74,7 @@ public class ParallaxTest extends GdxTest {
                controller = new OrthoCamController(camera);\r
                Gdx.input.setInputProcessor(controller);\r
                batch = new SpriteBatch();\r
-               font = new BitmapFont();\r
+               font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false);\r
        }\r
 \r
        @Override\r
index 13c6d95..fe4304a 100644 (file)
@@ -115,8 +115,7 @@ public class ParticleEmitterTest extends GdxTest {
        public void render () {\r
                spriteBatch.getProjectionMatrix().setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
                float delta = Gdx.graphics.getDeltaTime();\r
-               GL10 gl = Gdx.graphics.getGL10();\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
                spriteBatch.begin();\r
                effect.draw(spriteBatch, delta);\r
                spriteBatch.end();\r
index c3ddde2..5dc5bdb 100644 (file)
@@ -31,13 +31,13 @@ public class PixelsPerInchTest extends GdxTest {
 \r
        @Override\r
        public void create () {\r
-               font = new BitmapFont();\r
+               font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false);\r
                batch = new SpriteBatch();\r
                texture = new Texture(Gdx.files.internal("data/badlogicsmall.jpg"));\r
        }\r
 \r
        public void render () {\r
-               Gdx.gl10.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
 \r
                batch.begin();\r
                float width = (int)(Gdx.graphics.getPpcX() * 2);\r
@@ -51,7 +51,7 @@ public class PixelsPerInchTest extends GdxTest {
 \r
        @Override\r
        public boolean needsGL20 () {\r
-               return false;\r
+               return true;\r
        }\r
 \r
 }\r
index 5e9a5be..d32420e 100644 (file)
@@ -63,9 +63,8 @@ public class PixmapBlendingTest extends GdxTest {
        @Override\r
        public void render () {\r
 \r
-               GL10 gl = Gdx.graphics.getGL10();\r
-               gl.glClearColor(0, 1, 0, 1);\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+               Gdx.gl.glClearColor(0, 1, 0, 1);\r
+               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
 \r
                spriteBatch.begin();\r
                logoSprite.draw(spriteBatch);\r
index f967648..1f953c3 100644 (file)
@@ -19,7 +19,6 @@ package com.badlogic.gdx.tests;
 import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.graphics.GL10;\r
 import com.badlogic.gdx.graphics.Pixmap;\r
-import com.badlogic.gdx.graphics.PixmapIO;\r
 import com.badlogic.gdx.graphics.Texture;\r
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.graphics.g2d.TextureRegion;\r
@@ -38,12 +37,6 @@ public class PixmapTest extends GdxTest {
        TextureRegion region;\r
 \r
        public void create () {\r
-               pixmap = new Pixmap(2, 2, Pixmap.Format.RGBA8888);\r
-               pixmap.setColor(1, 0, 0, 1);\r
-               pixmap.fill();\r
-               PixmapIO.writePNG(Gdx.files.absolute("test.png"), pixmap);\r
-               pixmap.dispose();\r
-               \r
                // Create an empty dynamic pixmap\r
                pixmap = new Pixmap(800, 480, Pixmap.Format.RGBA8888); // Pixmap.Format.RGBA8888);\r
 \r
index b6ab5a1..346de81 100644 (file)
@@ -49,7 +49,7 @@ public class ShapeRendererTest extends GdxTest {
                controller = new PerspectiveCamController(cam);\r
                Gdx.input.setInputProcessor(controller);\r
                batch = new SpriteBatch();\r
-               font = new BitmapFont();\r
+               font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false);\r
        }\r
 \r
        public void render () {\r
index ba177b6..a1840ce 100644 (file)
@@ -26,7 +26,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.math.Vector2;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
 \r
-public class SimpleAnimationTest extends GdxTest implements InputProcessor {\r
+public class SimpleAnimationTest extends GdxTest {\r
 \r
        @Override\r
        public boolean needsGL20 () {\r
@@ -83,50 +83,7 @@ public class SimpleAnimationTest extends GdxTest implements InputProcessor {
        @Override\r
        public boolean touchDown (int x, int y, int pointer, int button) {\r
                position.x = x;\r
-               position.y = y;\r
-               // System.out.println(position);\r
+               position.y = Gdx.graphics.getHeight() - y;\r
                return true;\r
        }\r
-\r
-       @Override\r
-       public boolean keyDown (int keycode) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyUp (int keycode) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyTyped (char character) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchUp (int x, int y, int pointer, int button) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchDragged (int x, int y, int pointer) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchMoved (int x, int y) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean scrolled (int amount) {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
 }\r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/SimpleTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/SimpleTest.java
deleted file mode 100644 (file)
index d1b51a9..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************\r
- * Copyright 2011 See AUTHORS file.\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *   http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- ******************************************************************************/\r
-\r
-package com.badlogic.gdx.tests;\r
-\r
-import com.badlogic.gdx.Gdx;\r
-import com.badlogic.gdx.InputProcessor;\r
-import com.badlogic.gdx.graphics.GL10;\r
-import com.badlogic.gdx.tests.utils.GdxTest;\r
-\r
-public class SimpleTest extends GdxTest implements InputProcessor {\r
-       float r = 1, g = 0, b = 0;\r
-\r
-       @Override\r
-       public void create () {\r
-               Gdx.app.log("Simple Test", "Thread=" + Thread.currentThread().getId() + ", surface created");\r
-               Gdx.input.setInputProcessor(this);\r
-       }\r
-\r
-       @Override\r
-       public void render () {\r
-               GL10 gl = Gdx.app.getGraphics().getGL10();\r
-\r
-               gl.glClearColor(r, g, b, 1);\r
-               gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
-       }\r
-\r
-       @Override\r
-       public void dispose () {\r
-               Gdx.app.log("Simple Test", "Thread=" + Thread.currentThread().getId() + ", application destroyed");\r
-       }\r
-\r
-       @Override\r
-       public boolean keyDown (int keycode) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyTyped (char character) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean keyUp (int keycode) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchDown (int x, int y, int pointer, int newParam) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchDragged (int x, int y, int pointer) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchUp (int x, int y, int pointer, int button) {\r
-               r = (float)Math.random();\r
-               g = (float)Math.random();\r
-               b = (float)Math.random();\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public void pause () {\r
-       }\r
-\r
-       @Override\r
-       public void resume () {\r
-       }\r
-\r
-       @Override\r
-       public boolean needsGL20 () {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean touchMoved (int x, int y) {\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       public boolean scrolled (int amount) {\r
-               return false;\r
-       }\r
-}\r
index 0c7630d..623d051 100644 (file)
@@ -25,11 +25,12 @@ import com.badlogic.gdx.graphics.Pixmap.Format;
 import com.badlogic.gdx.graphics.Texture;\r
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class SpriteBatchShaderTest extends GdxTest {\r
        int SPRITES = 400;\r
 \r
-       long startTime = System.nanoTime();\r
+       long startTime = TimeUtils.nanoTime();\r
        int frames = 0;\r
 \r
        Texture texture;\r
@@ -56,37 +57,37 @@ public class SpriteBatchShaderTest extends GdxTest {
                float draw2 = 0;\r
                float drawText = 0;\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                spriteBatch.begin();\r
-               begin = (System.nanoTime() - start) / 1000000000.0f;\r
+               begin = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
                int len = coords.length;\r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < len; i += 2)\r
                        spriteBatch.draw(texture, coords[i], coords[i + 1], 0, 0, 32, 32);\r
-               draw1 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw1 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteBatch.setColor(col);\r
                for (int i = 0; i < coords2.length; i += 2)\r
                        spriteBatch.draw(texture2, coords2[i], coords2[i + 1], 0, 0, 32, 32);\r
-               draw2 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw2 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
 // spriteBatch.drawText(font, "Question?", 100, 300, Color.RED);\r
 // spriteBatch.drawText(font, "and another this is a test", 200, 100, Color.WHITE);\r
 // spriteBatch.drawText(font, "all hail and another this is a test", 200, 200, Color.WHITE);\r
-               drawText = (System.nanoTime() - start) / 1000000000.0f;\r
+               drawText = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteBatch.end();\r
-               end = (System.nanoTime() - start) / 1000000000.0f;\r
+               end = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               if (System.nanoTime() - startTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - startTime > 1000000000) {\r
                        Gdx.app.log("SpriteBatch", "fps: " + frames + ", render calls: " + spriteBatch.renderCalls + ", " + begin + ", " + draw1\r
                                + ", " + draw2 + ", " + drawText + ", " + end);\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                }\r
                frames++;\r
        }\r
@@ -94,24 +95,14 @@ public class SpriteBatchShaderTest extends GdxTest {
        @Override\r
        public void create () {\r
                spriteBatch = new SpriteBatch();\r
-               Pixmap pixmap = new Pixmap(Gdx.files.internal("data/badlogicsmall.jpg"));\r
-// pixmap.setColor( 0, 0, 0, 0 );\r
-// pixmap.fillCircle( 16, 16, 4 );\r
-               texture = new Texture(32, 32, Format.RGB565);\r
-               texture.draw(pixmap, 0, 0);\r
-               pixmap.dispose();\r
+               texture = new Texture(Gdx.files.internal("data/badlogicsmall.jpg"));\r
 \r
-               pixmap = new Pixmap(32, 32, Format.RGB565);\r
+               Pixmap pixmap = new Pixmap(32, 32, Format.RGB565);\r
                pixmap.setColor(1, 1, 0, 0.7f);\r
                pixmap.fill();\r
-// pixmap.setColor( 0, 0, 0, 0 );\r
-// pixmap.fillCircle( 16, 16, 4 );\r
-//\r
                texture2 = new Texture(pixmap);\r
                pixmap.dispose();\r
 \r
-// if (font == null) font = Gdx.graphics.newFont("Arial", 32, FontStyle.Plain);\r
-\r
                for (int i = 0; i < coords.length; i += 2) {\r
                        coords[i] = (int)(Math.random() * Gdx.graphics.getWidth());\r
                        coords[i + 1] = (int)(Math.random() * Gdx.graphics.getHeight());\r
index da40c93..27b9fdc 100644 (file)
@@ -26,11 +26,12 @@ import com.badlogic.gdx.graphics.Texture.TextureFilter;
 import com.badlogic.gdx.graphics.g2d.Sprite;\r
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class SpriteBatchTest extends GdxTest implements InputProcessor {\r
        int SPRITES = 100 / 2;\r
 \r
-       long startTime = System.nanoTime();\r
+       long startTime = TimeUtils.nanoTime();\r
        int frames = 0;\r
 \r
        Texture texture;\r
@@ -75,37 +76,37 @@ public class SpriteBatchTest extends GdxTest implements InputProcessor {
                        SCALE_SPEED = -1;\r
                }\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                spriteBatch.begin();\r
-               begin = (System.nanoTime() - start) / 1000000000.0f;\r
+               begin = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < sprites.length; i += 6)\r
                        spriteBatch.draw(texture, sprites[i], sprites[i + 1], 16, 16, 32, 32, scale, scale, angle, 0, 0, 32, 32, false, false);\r
-               draw1 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw1 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < sprites2.length; i += 6)\r
                        spriteBatch\r
                                .draw(texture2, sprites2[i], sprites2[i + 1], 16, 16, 32, 32, scale, scale, angle, 0, 0, 32, 32, false, false);\r
-               draw2 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw2 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
 // spriteBatch.drawText(font, "Question?", 100, 300, Color.RED);\r
 // spriteBatch.drawText(font, "and another this is a test", 200, 100, Color.WHITE);\r
 // spriteBatch.drawText(font, "all hail and another this is a test", 200, 200, Color.WHITE);\r
 // spriteBatch.drawText(font, "normal fps: " + Gdx.graphics.getFramesPerSecond(), 10, 30, Color.RED);\r
-               drawText = (System.nanoTime() - start) / 1000000000.0f;\r
+               drawText = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteBatch.end();\r
-               end = (System.nanoTime() - start) / 1000000000.0f;\r
+               end = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               if (System.nanoTime() - startTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - startTime > 1000000000) {\r
                        Gdx.app.log("SpriteBatch", "fps: " + frames + ", render calls: " + spriteBatch.renderCalls + ", " + begin + ", " + draw1\r
                                + ", " + draw2 + ", " + drawText + ", " + end);\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                }\r
                frames++;\r
 \r
@@ -122,9 +123,9 @@ public class SpriteBatchTest extends GdxTest implements InputProcessor {
                float draw2 = 0;\r
                float drawText = 0;\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                spriteBatch.begin();\r
-               begin = (System.nanoTime() - start) / 1000000000.0f;\r
+               begin = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
                float angleInc = ROTATION_SPEED * Gdx.graphics.getDeltaTime();\r
                scale += SCALE_SPEED * Gdx.graphics.getDeltaTime();\r
@@ -137,38 +138,38 @@ public class SpriteBatchTest extends GdxTest implements InputProcessor {
                        SCALE_SPEED = -1;\r
                }\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = 0; i < SPRITES; i++) {\r
                        if (angleInc != 0) sprites3[i].rotate(angleInc); // this is aids\r
                        if (scale != 1) sprites3[i].setScale(scale); // this is aids\r
                        sprites3[i].draw(spriteBatch);\r
                }\r
-               draw1 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw1 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                for (int i = SPRITES; i < SPRITES << 1; i++) {\r
                        if (angleInc != 0) sprites3[i].rotate(angleInc); // this is aids\r
                        if (scale != 1) sprites3[i].setScale(scale); // this is aids\r
                        sprites3[i].draw(spriteBatch);\r
                }\r
-               draw2 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw2 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
 // spriteBatch.drawText(font, "Question?", 100, 300, Color.RED);\r
 // spriteBatch.drawText(font, "and another this is a test", 200, 100, Color.WHITE);\r
 // spriteBatch.drawText(font, "all hail and another this is a test", 200, 200, Color.WHITE);\r
 // spriteBatch.drawText(font, "Sprite fps: " + Gdx.graphics.getFramesPerSecond(), 10, 30, Color.RED);\r
-               drawText = (System.nanoTime() - start) / 1000000000.0f;\r
+               drawText = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteBatch.end();\r
-               end = (System.nanoTime() - start) / 1000000000.0f;\r
+               end = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               if (System.nanoTime() - startTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - startTime > 1000000000) {\r
                        Gdx.app.log("SpriteBatch", "fps: " + frames + ", render calls: " + spriteBatch.renderCalls + ", " + begin + ", " + draw1\r
                                + ", " + draw2 + ", " + drawText + ", " + end);\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                }\r
                frames++;\r
        }\r
index f92fbbc..3e07b4a 100644 (file)
@@ -28,11 +28,12 @@ import com.badlogic.gdx.graphics.g2d.Sprite;
 import com.badlogic.gdx.graphics.g2d.SpriteCache;\r
 import com.badlogic.gdx.math.MathUtils;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class SpriteCacheTest extends GdxTest implements InputProcessor {\r
        int SPRITES = 400 / 2;\r
 \r
-       long startTime = System.nanoTime();\r
+       long startTime = TimeUtils.nanoTime();\r
        int frames = 0;\r
 \r
        Texture texture;\r
@@ -60,23 +61,23 @@ public class SpriteCacheTest extends GdxTest implements InputProcessor {
                float end = 0;\r
                float draw1 = 0;\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                spriteCache.begin();\r
-               begin = (System.nanoTime() - start) / 1000000000.0f;\r
+               begin = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteCache.draw(normalCacheID);\r
-               draw1 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw1 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteCache.end();\r
-               end = (System.nanoTime() - start) / 1000000000.0f;\r
+               end = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               if (System.nanoTime() - startTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - startTime > 1000000000) {\r
 // Gdx.app.log( "SpriteBatch", "fps: " + frames + ", render calls: " + spriteBatch.renderCalls + ", " + begin + ", " + draw1 +\r
 // ", " + draw2 + ", " + drawText + ", " + end );\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                }\r
                frames++;\r
        }\r
@@ -92,23 +93,23 @@ public class SpriteCacheTest extends GdxTest implements InputProcessor {
                float draw2 = 0;\r
                float drawText = 0;\r
 \r
-               long start = System.nanoTime();\r
+               long start = TimeUtils.nanoTime();\r
                spriteCache.begin();\r
-               begin = (System.nanoTime() - start) / 1000000000.0f;\r
+               begin = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteCache.draw(spriteCacheID);\r
-               draw1 = (System.nanoTime() - start) / 1000000000.0f;\r
+               draw1 = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               start = System.nanoTime();\r
+               start = TimeUtils.nanoTime();\r
                spriteCache.end();\r
-               end = (System.nanoTime() - start) / 1000000000.0f;\r
+               end = (TimeUtils.nanoTime() - start) / 1000000000.0f;\r
 \r
-               if (System.nanoTime() - startTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - startTime > 1000000000) {\r
 // Gdx.app.log( "SpriteBatch", "fps: " + frames + ", render calls: " + spriteBatch.renderCalls + ", " + begin + ", " + draw1 +\r
 // ", " + draw2 + ", " + drawText + ", " + end );\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                }\r
                frames++;\r
        }\r
@@ -117,13 +118,10 @@ public class SpriteCacheTest extends GdxTest implements InputProcessor {
        public void create () {\r
                spriteCache = new SpriteCache(1000, true);\r
 \r
-               Pixmap pixmap = new Pixmap(Gdx.files.internal("data/badlogicsmall.jpg"));\r
-               texture = new Texture(32, 32, Format.RGB565);\r
+               Texture texture = new Texture(Gdx.files.internal("data/badlogicsmall.jpg"));\r
                texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);\r
-               texture.draw(pixmap, 0, 0);\r
-               pixmap.dispose();\r
 \r
-               pixmap = new Pixmap(32, 32, Format.RGBA8888);\r
+               Pixmap pixmap = new Pixmap(32, 32, Format.RGBA8888);\r
                pixmap.setColor(1, 1, 0, 0.5f);\r
                pixmap.fill();\r
                texture2 = new Texture(pixmap);\r
index fe1d947..9e06e9f 100644 (file)
@@ -25,6 +25,7 @@ import com.badlogic.gdx.graphics.g2d.Sprite;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;\r
 import com.badlogic.gdx.graphics.g2d.SpriteCache;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class SpritePerformanceTest extends GdxTest {\r
        StringBuilder log = new StringBuilder();\r
@@ -70,7 +71,7 @@ public class SpritePerformanceTest extends GdxTest {
                }\r
                int spritesHandle = cache.endCache();\r
 \r
-               startTime = System.nanoTime();\r
+               startTime = TimeUtils.nanoTime();\r
                frames = 0;\r
        }\r
 \r
@@ -116,11 +117,11 @@ public class SpritePerformanceTest extends GdxTest {
                }\r
 \r
                frames++;\r
-               if (System.nanoTime() - startTime > 5000000000l) {\r
+               if (TimeUtils.nanoTime() - startTime > 5000000000l) {\r
                        Gdx.app.log("SpritePerformanceTest", "mode: " + modes[mode] + ", fps: " + frames / 5.0f);\r
                        log.append("mode: " + modes[mode] + ", fps: " + frames / 5.0f + "\n");\r
                        frames = 0;\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                        mode++;\r
                        if (mode > 9) mode = 0;\r
                }\r
index 8f1f573..3acd7c0 100644 (file)
@@ -32,6 +32,7 @@ import com.badlogic.gdx.math.Intersector;
 import com.badlogic.gdx.math.Vector3;\r
 import com.badlogic.gdx.math.collision.Ray;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class TerrainTest extends GdxTest {\r
        ImmediateModeRenderer10 renderer;\r
@@ -40,7 +41,7 @@ public class TerrainTest extends GdxTest {
        PerspectiveCamera camera;\r
        Vector3 intersection = new Vector3();\r
        boolean intersected = false;\r
-       long lastTime = System.nanoTime();\r
+       long lastTime = TimeUtils.nanoTime();\r
 \r
        @Override\r
        public void create () {\r
@@ -88,9 +89,9 @@ public class TerrainTest extends GdxTest {
 \r
                handleInput(Gdx.input, Gdx.graphics.getDeltaTime());\r
 \r
-               if (System.nanoTime() - lastTime > 1000000000) {\r
+               if (TimeUtils.nanoTime() - lastTime > 1000000000) {\r
                        Gdx.app.log("TerrainTest", "fps: " + Gdx.graphics.getFramesPerSecond());\r
-                       lastTime = System.nanoTime();\r
+                       lastTime = TimeUtils.nanoTime();\r
                }\r
        }\r
 \r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/TextureBindTestGL2.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/TextureBindTestGL2.java
deleted file mode 100644 (file)
index 9df386b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.badlogic.gdx.tests;\r
-\r
-public class TextureBindTestGL2 extends TextureBindTest {\r
-       @Override\r
-       public boolean needsGL20() {\r
-               return true;\r
-       }\r
-}\r
diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/TexturePackerAtlasTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/TexturePackerAtlasTest.java
deleted file mode 100644 (file)
index 1d76a3a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************\r
- * Copyright 2011 See AUTHORS file.\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *   http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- ******************************************************************************/\r
-\r
-package com.badlogic.gdx.tests;\r
-\r
-public class TexturePackerAtlasTest {\r
-\r
-}\r
index c0e20a1..26eb57f 100644 (file)
@@ -28,6 +28,7 @@ import com.badlogic.gdx.graphics.glutils.VertexBufferObject;
 import com.badlogic.gdx.graphics.glutils.VertexBufferObjectSubData;\r
 import com.badlogic.gdx.graphics.glutils.VertexData;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class VBOVATest extends GdxTest {\r
 \r
@@ -83,7 +84,7 @@ public class VBOVATest extends GdxTest {
                        indices[i] = (short)i;\r
                }\r
 \r
-               startTime = System.nanoTime();\r
+               startTime = TimeUtils.nanoTime();\r
        }\r
 \r
        @Override\r
@@ -136,17 +137,17 @@ public class VBOVATest extends GdxTest {
                        vertexBuffer.unbind();\r
                }\r
 \r
-               long endTime = System.nanoTime();\r
+               long endTime = TimeUtils.nanoTime();\r
                if (endTime - startTime >= 4000000000l) {\r
                        double secs = (endTime - startTime) / 1000000000.0;\r
                        double fps = frames / secs;\r
-                       Gdx.app.log("VBOVATest", vertexBuffer.getClass().getSimpleName() + ", " + isStatic + ", " + (mode > 2) + ", " + fps);\r
+                       Gdx.app.log("VBOVATest", vertexBuffer.getClass().getName() + ", " + isStatic + ", " + (mode > 2) + ", " + fps);\r
                        mode++;\r
                        if (mode > 5) {\r
                                mode = 0;\r
                                isStatic = !isStatic;\r
                        }\r
-                       startTime = System.nanoTime();\r
+                       startTime = TimeUtils.nanoTime();\r
                        frames = 0;\r
                }\r
 \r
index c12d8aa..9b30cee 100644 (file)
@@ -24,6 +24,7 @@ import com.badlogic.gdx.graphics.GL20;
 import com.badlogic.gdx.graphics.Texture;\r
 import com.badlogic.gdx.graphics.VertexAttribute;\r
 import com.badlogic.gdx.graphics.VertexAttributes;\r
+import com.badlogic.gdx.graphics.glutils.IndexBufferObject;\r
 import com.badlogic.gdx.graphics.glutils.ShaderProgram;\r
 import com.badlogic.gdx.graphics.glutils.VertexBufferObject;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
@@ -33,7 +34,7 @@ public class VertexBufferObjectShaderTest extends GdxTest {
        Texture texture;\r
        ShaderProgram shader;\r
        VertexBufferObject vbo;\r
-       ShortBuffer indices;\r
+       IndexBufferObject indices;\r
 \r
        @Override\r
        public boolean needsGL20 () {\r
@@ -51,6 +52,7 @@ public class VertexBufferObjectShaderTest extends GdxTest {
        public void render () {\r
                GL20 gl = Gdx.gl20;\r
                gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+               Gdx.gl.glClearColor(0.7f, 0, 0, 1);\r
                gl.glClear(GL20.GL_COLOR_BUFFER_BIT);\r
 \r
                gl.glEnable(GL20.GL_TEXTURE_2D);\r
@@ -58,7 +60,9 @@ public class VertexBufferObjectShaderTest extends GdxTest {
                shader.setUniformi("u_texture", 0);\r
                texture.bind();\r
                vbo.bind(shader);\r
-               gl.glDrawElements(GL20.GL_TRIANGLES, 3, GL20.GL_UNSIGNED_SHORT, indices);\r
+               indices.bind();\r
+               gl.glDrawElements(GL20.GL_TRIANGLES, 3, GL20.GL_UNSIGNED_SHORT, indices.getBuffer().position());\r
+               indices.unbind();\r
                vbo.unbind(shader);\r
                shader.end();\r
        }\r
@@ -81,9 +85,8 @@ public class VertexBufferObjectShaderTest extends GdxTest {
                float[] vertices = new float[] {-1, -1, 0, 0, Color.toFloatBits(1f, 0f, 0f, 1f), 0, 1, 0.5f, 1.0f,\r
                        Color.toFloatBits(0f, 1f, 0f, 1f), 1, -1, 1, 0, Color.toFloatBits(0f, 0f, 1f, 1f)};\r
                vbo.setVertices(vertices, 0, vertices.length);\r
-               indices = BufferUtils.newShortBuffer(3);\r
-               indices.put(new short[] {0, 1, 2});\r
-               indices.flip();\r
+               indices = new IndexBufferObject(3);\r
+               indices.setIndices(new short[] {0, 1, 2}, 0, 3);\r
 \r
                texture = new Texture(Gdx.files.internal("data/badlogic.jpg"));\r
        }\r
@@ -93,4 +96,4 @@ public class VertexBufferObjectShaderTest extends GdxTest {
                vbo.invalidate();\r
        }\r
 \r
-}\r
+}
\ No newline at end of file
index b149ab5..b2038c8 100644 (file)
@@ -33,6 +33,7 @@ import com.badlogic.gdx.math.Plane;
 import com.badlogic.gdx.math.Vector3;\r
 import com.badlogic.gdx.math.collision.Ray;\r
 import com.badlogic.gdx.tests.utils.GdxTest;\r
+import com.badlogic.gdx.utils.TimeUtils;\r
 \r
 public class WaterRipples extends GdxTest implements InputProcessor {\r
        static final short WIDTH = 50;\r
@@ -160,7 +161,7 @@ public class WaterRipples extends GdxTest implements InputProcessor {
                }\r
        }\r
 \r
-       long lastTick = System.nanoTime();\r
+       long lastTick = TimeUtils.nanoTime();\r
        Random rand = new Random();\r
 \r
        @Override\r
index 3ccc0e3..f9c99e9 100644 (file)
@@ -34,7 +34,7 @@ public class YDownTest extends GdxTest {
        public void create () {\r
                // a bitmap font to draw some text, note that we\r
                // pass true to the constructor, which flips glyphs on y\r
-               font = new BitmapFont(true);\r
+               font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), true);\r
                \r
                // a texture region, note the flipping on y again\r
                region = new TextureRegion(new Texture("data/badlogic.jpg"));\r
index ed5dcbf..c569edb 100644 (file)
@@ -79,7 +79,7 @@ public class GdxTests {
                        PixmapTest.class, PreferencesTest.class,\r
                        ProjectiveTextureTest.class, Pong.class, ProjectTest.class,\r
                        RemoteTest.class, RotationTest.class, ShaderMultitextureTest.class,\r
-                       ShadowMappingTest.class, SplineTest.class, SimpleTest.class,\r
+                       ShadowMappingTest.class, SplineTest.class,\r
                        SimpleAnimationTest.class, SimpleDecalTest.class,\r
                        SimpleStageCullingTest.class, SoundTest.class,\r
                        SpriteCacheTest.class, SpriteCacheOffsetTest.class,\r
@@ -97,7 +97,7 @@ public class GdxTests {
                        VorbisTest.class, WaterRipples.class, HelloTriangle.class,\r
                        SimpleVertexShader.class, ShapeRendererTest.class,\r
                        MoveSpriteExample.class, StbTrueTypeTest.class, SoundTouchTest.class, Mpg123Test.class, WavTest.class,\r
-                       TextButtonTest.class, TextButtonTestGL2.class, TextureBindTest.class, TextureBindTestGL2.class,\r
+                       TextButtonTest.class, TextButtonTestGL2.class, TextureBindTest.class,\r
                        SortedSpriteTest.class, ExternalMusicTest.class, SoftKeyboardTest.class, \r
                        DirtyRenderingTest.class, FreeTypeTest.class, YDownTest.class};\r
 \r