Web-fix libgdx1.11.0 support, rebased (#977)

* Support libgdx 1.9.11

* Support libgdx 1.9.13

* Support libgdx 1.9.14

* Re-enabled vtm-web and vtm-web-app
This commit is contained in:
Izumi Kawashima 2022-11-24 02:14:44 +09:00 committed by GitHub
parent f7bdc420bf
commit 272ead2518
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 130 additions and 14 deletions

View File

@ -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'

View File

@ -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

View File

@ -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<Integer> touchMap = new IntMap<Integer>(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();

View File

@ -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()}
*/

View File

@ -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;

View File

@ -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
*

View File

@ -1,4 +1,4 @@
var TESSELLATION_LIMIT = 4096;
var TESSELLATION_LIMIT = 8128;
function j(a) {
throw a;