diff --git a/settings.gradle b/settings.gradle index 3bbb4fe0..9117b867 100644 --- a/settings.gradle +++ b/settings.gradle @@ -38,6 +38,6 @@ include ':vtm-playground' include ':vtm-tests' include ':vtm-theme-comparator' include ':vtm-themes' -//include ':vtm-web' -//include ':vtm-web-app' +include ':vtm-web' +include ':vtm-web-app' //include ':vtm-web-js' diff --git a/vtm-web/src/org/oscim/gdx/client/GdxGL.java b/vtm-web/src/org/oscim/gdx/client/GdxGL.java index 73931522..d04815ec 100644 --- a/vtm-web/src/org/oscim/gdx/client/GdxGL.java +++ b/vtm-web/src/org/oscim/gdx/client/GdxGL.java @@ -580,7 +580,7 @@ public class GdxGL extends GwtGL20 implements GL { return glGetActiveAttrib(program, index, size, - type); + (IntBuffer)type); } @Override @@ -588,7 +588,7 @@ public class GdxGL extends GwtGL20 implements GL { return glGetActiveUniform(program, index, size, - type); + (IntBuffer)type); } @Override diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java similarity index 92% rename from vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java rename to vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java index 68ee7994..ccadb3d3 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java @@ -32,7 +32,7 @@ import com.google.gwt.dom.client.Touch; import com.google.gwt.event.dom.client.KeyCodes; @SuppressWarnings("deprecation") -public class GwtInput implements Input { +public class DefaultGwtInput implements Input { static final int MAX_TOUCHES = 20; boolean justTouched = false; private IntMap touchMap = new IntMap(20); @@ -53,13 +53,76 @@ public class GwtInput implements Input { long currentEventTimeStamp; final CanvasElement canvas; boolean hasFocus = true; + final GwtApplicationConfiguration config; + GwtAccelerometer accelerometer; + GwtGyroscope gyroscope; - public GwtInput(CanvasElement canvas) { + public DefaultGwtInput(CanvasElement canvas, GwtApplicationConfiguration config) { this.canvas = canvas; + this.config = config; + + if (config.useAccelerometer && GwtFeaturePolicy.allowsFeature(GwtAccelerometer.PERMISSION)) { + if (GwtApplication.agentInfo().isFirefox()) { + setupAccelerometer(); + } else { + GwtPermissions.queryPermission(GwtAccelerometer.PERMISSION, new GwtPermissions.GwtPermissionResult() { + @Override + public void granted() { + setupAccelerometer(); + } + + @Override + public void denied() { + } + + @Override + public void prompt() { + setupAccelerometer(); + } + }); + } + } + if (config.useGyroscope) { + if (GwtApplication.agentInfo().isFirefox()) { + setupGyroscope(); + } else { + GwtPermissions.queryPermission(GwtGyroscope.PERMISSION, new GwtPermissions.GwtPermissionResult() { + @Override + public void granted() { + setupGyroscope(); + } + + @Override + public void denied() { + } + + @Override + public void prompt() { + setupGyroscope(); + } + }); + } + } hookEvents(); + + // backwards compatibility: backspace was caught in older versions + setCatchKey(Keys.BACKSPACE, true); + } + void setupAccelerometer () { + if (GwtAccelerometer.isSupported() && GwtFeaturePolicy.allowsFeature(GwtAccelerometer.PERMISSION)) { + if (accelerometer == null) accelerometer = GwtAccelerometer.getInstance(); + if (!accelerometer.activated()) accelerometer.start(); + } } - void reset() { + void setupGyroscope () { + if (GwtGyroscope.isSupported() && GwtFeaturePolicy.allowsFeature(GwtGyroscope.PERMISSION)) { + if (gyroscope == null) gyroscope = GwtGyroscope.getInstance(); + if (!gyroscope.activated()) gyroscope.start(); + } + } + + public void reset() { if (justTouched) { justTouched = false; for (int i = 0; i < justPressedButtons.length; i++) { @@ -236,10 +299,20 @@ public class GwtInput implements Input { }); } + @Override + public void getTextInput(TextInputListener listener, String title, String text, String hint, OnscreenKeyboardType type) { + + } + @Override public void setOnscreenKeyboardVisible(boolean visible) { } + @Override + public void setOnscreenKeyboardVisible(boolean visible, OnscreenKeyboardType type) { + + } + @Override public void vibrate(int milliseconds) { } @@ -447,12 +520,12 @@ public class GwtInput implements Input { } // kindly borrowed from our dear playn friends... - static native void addEventListener(JavaScriptObject target, String name, GwtInput handler, boolean capture) /*-{ + static native void addEventListener(JavaScriptObject target, String name, DefaultGwtInput handler, boolean capture) /*-{ target .addEventListener( name, function(e) { - handler.@com.badlogic.gdx.backends.gwt.GwtInput::handleEvent(Lcom/google/gwt/dom/client/NativeEvent;)(e); + handler.@com.badlogic.gdx.backends.gwt.DefaultGwtInput::handleEvent(Lcom/google/gwt/dom/client/NativeEvent;)(e); }, capture); }-*/; @@ -627,7 +700,7 @@ public class GwtInput implements Input { } if (e.getType().equals(getMouseWheelEvent())) { if (processor != null) { - processor.scrolled((int) getMouseWheelVelocity(e)); + processor.scrolled(0, (int) getMouseWheelVelocity(e)); } this.currentEventTimeStamp = TimeUtils.nanoTime(); e.preventDefault(); diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtApplication.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtApplication.java index 950ac8d5..fccd7e74 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtApplication.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtApplication.java @@ -67,7 +67,7 @@ public abstract class GwtApplication implements EntryPoint, Application { private ApplicationListener listener; GwtApplicationConfiguration config; GwtGraphics graphics; - private GwtInput input; + private DefaultGwtInput input; private GwtNet net; private Panel root = null; private TextArea log = null; @@ -179,12 +179,12 @@ public abstract class GwtApplication implements EntryPoint, Application { lastWidth = graphics.getWidth(); lastHeight = graphics.getHeight(); Gdx.app = this; - Gdx.audio = new GwtAudio(); + Gdx.audio = createAudio(); Gdx.graphics = graphics; Gdx.gl20 = graphics.getGL20(); Gdx.gl = Gdx.gl20; Gdx.files = new GwtFiles(preloader); - this.input = new GwtInput(graphics.canvas); + this.input = createInput(graphics.canvas, this.config); Gdx.input = this.input; this.net = new GwtNet(config); Gdx.net = this.net; @@ -597,6 +597,14 @@ public abstract class GwtApplication implements EntryPoint, Application { } } + protected GwtAudio createAudio() { + return new DefaultGwtAudio(); + } + + protected DefaultGwtInput createInput(CanvasElement canvas, GwtApplicationConfiguration config) { + return new DefaultGwtInput(canvas, config); + } + /** * LoadingListener interface main purpose is to do some things before or after {@link GwtApplication#setupLoop()} */ diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java index e1538bdd..949a4fe5 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java @@ -184,6 +184,31 @@ public class GwtGraphics implements Graphics { return canvas.getHeight(); } + @Override + public float getBackBufferScale() { + return 0; + } + + @Override + public int getSafeInsetLeft() { + return 0; + } + + @Override + public int getSafeInsetTop() { + return 0; + } + + @Override + public int getSafeInsetBottom() { + return 0; + } + + @Override + public int getSafeInsetRight() { + return 0; + } + @Override public long getFrameId() { return frameId; @@ -517,6 +542,11 @@ public class GwtGraphics implements Graphics { public void setVSync(boolean vsync) { } + @Override + public void setForegroundFPS(int fps) { + + } + @Override public float getDensity() { return 96.0f / 160; diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java index 3fceb434..b15b27b3 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java @@ -27,6 +27,7 @@ import com.google.gwt.canvas.dom.client.Context2d; import com.google.gwt.canvas.dom.client.Context2d.Composite; import com.google.gwt.dom.client.CanvasElement; import com.google.gwt.dom.client.ImageElement; +import com.google.gwt.dom.client.VideoElement; import java.nio.Buffer; import java.nio.IntBuffer; @@ -234,6 +235,10 @@ public class Pixmap implements Disposable { return imageElement; } + public boolean canUseVideoElement(){return false;} + + public VideoElement getVideoElement(){return null;} + /** * Sets the color for the following drawing operations * diff --git a/vtm-web/src/org/oscim/gdx/resources/js/_tessellate.js b/vtm-web/src/org/oscim/gdx/resources/js/_tessellate.js index 3eef924a..289090f1 100644 --- a/vtm-web/src/org/oscim/gdx/resources/js/_tessellate.js +++ b/vtm-web/src/org/oscim/gdx/resources/js/_tessellate.js @@ -1,4 +1,4 @@ -var TESSELLATION_LIMIT = 4096; +var TESSELLATION_LIMIT = 8128; function j(a) { throw a;