From d7bfc2643d9060279c755f92e30e0b47d17e7562 Mon Sep 17 00:00:00 2001 From: Izumi Kawashima Date: Wed, 23 Nov 2022 23:36:23 +0900 Subject: [PATCH] Support libgdx 1.9.14 --- build.gradle | 2 +- .../gdx/backends/gwt/DefaultGwtInput.java | 65 ++++++++++++++++++- .../gdx/backends/gwt/GwtApplication.java | 12 +++- .../gdx/backends/gwt/GwtGraphics.java | 10 +++ 4 files changed, 85 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index f850ee4f..692411a8 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ allprojects { group = 'org.mapsforge' version = 'master-SNAPSHOT' - ext.gdxVersion = "1.9.13" + ext.gdxVersion = "1.9.14" ext.gwtVersion = "2.8.2" ext.slf4jVersion = "1.7.28" diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java index ca6c24c5..ccadb3d3 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/DefaultGwtInput.java @@ -53,10 +53,73 @@ public class DefaultGwtInput implements Input { long currentEventTimeStamp; final CanvasElement canvas; boolean hasFocus = true; + final GwtApplicationConfiguration config; + GwtAccelerometer accelerometer; + GwtGyroscope gyroscope; - public DefaultGwtInput(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 setupGyroscope () { + if (GwtGyroscope.isSupported() && GwtFeaturePolicy.allowsFeature(GwtGyroscope.PERMISSION)) { + if (gyroscope == null) gyroscope = GwtGyroscope.getInstance(); + if (!gyroscope.activated()) gyroscope.start(); + } } public void reset() { 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 6209aedf..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 @@ -179,12 +179,12 @@ public abstract class GwtApplication implements EntryPoint, Application { lastWidth = graphics.getWidth(); lastHeight = graphics.getHeight(); Gdx.app = this; - Gdx.audio = new DefaultGwtAudio(); + Gdx.audio = createAudio(); Gdx.graphics = graphics; Gdx.gl20 = graphics.getGL20(); Gdx.gl = Gdx.gl20; Gdx.files = new GwtFiles(preloader); - this.input = new DefaultGwtInput(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 9aa4c6c7..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,11 @@ public class GwtGraphics implements Graphics { return canvas.getHeight(); } + @Override + public float getBackBufferScale() { + return 0; + } + @Override public int getSafeInsetLeft() { return 0; @@ -537,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;