diff --git a/.gitignore b/.gitignore
index b88a4297c..6ae0247a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -155,3 +155,5 @@ spine-monogame/spine-monogame-example/Content/bin
spine-monogame/spine-monogame-example/Content/obj
spine-monogame/spine-monogame-example/bin
spine-monogame/spine-monogame-example/obj
+spine-libgdx/spine-libgdx/out
+spine-libgdx/spine-skeletonviewer/out
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c203da161..efbde5933 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -73,6 +73,8 @@
### libGDX
+* `spine-libgdx`, `spine-libgdx-tests`, and `spine-skeletonviewer` are now fully Gradle-ified.
+* `spine-skeletonviewer` now supports quickly loading skeletons by dragging and dropping `.json` or `.skel` skeleton files onto the window.
## Typescript/Javascript
* **Breaking change**: `AttachmentLoader#newRegionAttachment()` and `AttachmentLoader#newMeshAttachment()` take an additional `Sequence` parameter.
@@ -334,6 +336,7 @@
* Added `SpinePlayerConfig.draw`. If set, the callback is called each frame, just after the skeleton is drawn.
* Added `SpinePlayerConfig.downloader`. The `spine.Downloader` instance can be shared between players so assets are only downloaded once.
* If `SpinePlayerConfig.jsonURL` ends with an anchor, the anchor text is used to find the skeleton in the specified JSON file.
+* Added `SpinePlayer.dispose()`, disposes all CPU and GPU side resources, removes all listeners, and removes the player DOM from the parent.
# 3.8
diff --git a/formatters/settings.gradle b/formatters/settings.gradle
index bbef540aa..c98ec4958 100644
--- a/formatters/settings.gradle
+++ b/formatters/settings.gradle
@@ -1 +1,3 @@
-include ':spine-libgdx'
+include ':spine-libgdx:spine-libgdx'
+include ':spine-libgdx:spine-libgdx-tests'
+include ':spine-libgdx:spine-skeletonviewer'
diff --git a/spine-libgdx/README.md b/spine-libgdx/README.md
index 5da637fe6..a2a330b21 100644
--- a/spine-libgdx/README.md
+++ b/spine-libgdx/README.md
@@ -19,17 +19,7 @@ spine-libgdx works with data exported from Spine 4.1.xx.
spine-libgdx supports all Spine features and is the reference runtime implementation.
## Setup
-
-1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it as a zip via the download button above.
-1. Using Eclipse, import the project by choosing File -> Import -> Existing projects. For other IDEs you will need to create a new project and import the source.
-
-Alternatively, the contents of the `spine-libgdx/src` directory can be copied into your project.
-
-## Notes
-
-* The "test" source directory contains optional examples.
-* spine-libgdx depends on the gdx-backend-lwjgl project so the tests can easily be run on the desktop. If the tests are excluded, spine-libgdx only needs to depend on the gdx project.
-* spine-libgdx depends on the gdx-box2d extension project solely for the `Box2DExample` test.
+The simplest way to add `spine-libgdx` to your libGDX project is to copy the contents of the `spine-libgdx/src` folder to your project's source folder. However, this is not the recommended approach. Generally, you want to use `spine-libgdx` by depending on it via `Maven` or `Gradle`.
## Maven & Gradle
The spine-libgdx runtime is released to Maven Central through SonaType. We also deploy snapshot builds on every commit to the repository via [GitHub Actions](https://github.com/EsotericSoftware/spine-runtimes/actions).
@@ -40,15 +30,16 @@ You can find the latest version for release builds [here](http://search.maven.or
You can find the latest SNAPSHOT version in the project's [pom.xml](spine-libgdx/pom.xml#L13).
-If you want to use a different branch, e.g. `4.1-beta`, build the artifact locally:
+You can also build and install `spine-libgdx` into your local Maven repository:
```
cd spine-libgdx/spine-libgdx
mvn install
```
-The version number is composed of the editor number at the time of release of the Maven artifact plus a patch number at the end. E.g. `4.0.18.1` means editor version `4.0.18`, and patch version `1` for the runtime. The editor version is updated everytime a new editor release is performed, the patch version is updated everytime a new fix or enhancement is released in the runtime.
+Up until Spine 4.0, the version number is composed of the editor number at the time of release of the Maven artifact plus a patch number at the end. E.g. `4.0.18.1` means editor version `4.0.18`, and patch version `1` for the runtime. The editor version is updated everytime a new editor release is performed, the patch version is updated everytime a new fix or enhancement is released in the runtime.
+Starting from Spine 4.1, the version number is composed of the corresponding editor `major.minor` version, and runtime update version for the runtime. E.g. `4.1.10` means editor version 4.1, runtime update version 10. All runtime versions are compatible with the exports from the correspongind `major.minor` editor version.
### Maven
To add the spine-libgdx runtime to your Maven project, add this dependency:
@@ -88,11 +79,7 @@ project(":core") {
}
```
-## Examples
+## Running the examples
+Clone this repository and load the `spine-libgdx/build.gradle` file with IntelliJ IDEA or Eclipse. Alterantively, you can run `./gradlew eclipse` on the command line to generate Eclipse projects without having to use the Gradle build.
-* [HTML5 example](http://esotericsoftware.com/files/runtimes/spine-libgdx/raptor/)
-* [Super Spineboy](https://github.com/EsotericSoftware/spine-superspineboy) Full game example done with Spine Essential, includes source code.
-* [Simple example 1](spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java) Simplest possible example, fully commented.
-* [Simple example 2](spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java) Shows events and bounding box hit detection.
-* [Simple example 3](spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java) Shows mesh rendering and IK using the raptor example.
-* [More examples](spine-libgdx-tests/src/com/esotericsoftware/spine/)
+The `spine-libgdx-tests` project has various examples you can inspect and run.
diff --git a/spine-libgdx/build.gradle b/spine-libgdx/build.gradle
index 36fefe387..f259f1952 100644
--- a/spine-libgdx/build.gradle
+++ b/spine-libgdx/build.gradle
@@ -1,51 +1,41 @@
-apply plugin: "maven-publish"
-apply plugin: "java"
-
-group = "com.github.EsotericSoftware"
-version = "4.1"
+group = "com.esotericsoftware.spine"
+version = "4.1.0"
ext {
- libgdxVersion = "1.10.0"
+ libgdxVersion = "1.10.1-SNAPSHOT"
+ javaVersion = 8
}
-sourceSets.main.java.srcDirs = ["spine-libgdx/src"]
-sourceSets.test.java.srcDirs = ["spine-libgdx-tests/src"]
+allprojects {
+ apply plugin: "java"
-repositories {
- maven {
- url "https://oss.sonatype.org/content/repositories/snapshots"
+ sourceSets.main.java.srcDirs = ["src"]
+
+ repositories {
+ mavenLocal()
+ maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
+ mavenCentral()
}
- mavenCentral()
}
-dependencies {
- implementation "com.badlogicgames.gdx:gdx:$libgdxVersion"
-
- testImplementation "com.badlogicgames.gdx:gdx:$libgdxVersion"
- testImplementation "com.badlogicgames.gdx:gdx-backend-lwjgl:$libgdxVersion"
- testImplementation "com.badlogicgames.gdx:gdx-platform:$libgdxVersion:natives-desktop"
- testImplementation "com.badlogicgames.gdx:gdx-box2d:$libgdxVersion"
- testImplementation "com.badlogicgames.gdx:gdx-box2d-platform:$libgdxVersion:natives-desktop"
+project("spine-libgdx") {
+ apply plugin: "java-library"
+ dependencies {
+ implementation "com.badlogicgames.gdx:gdx:$libgdxVersion"
+ }
}
-task myJavadocs(type: Javadoc) {
- source = sourceSets.main.allJava
- javadoc.options.addStringOption('Xdoclint:none', '-quiet')
+configure(subprojects - project("spine-libgdx")) {
+ sourceSets.main.resources.srcDirs = ["assets"]
-}
-
-task sourcesJar(type: Jar, dependsOn: classes) {
- classifier = 'sources'
- from sourceSets.main.allSource
-}
-
-task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from javadoc.destinationDir
-}
-
-artifacts {
- archives sourcesJar
- archives javadocJar
-}
+ dependencies {
+ implementation project(":spine-libgdx")
+ implementation "com.badlogicgames.gdx:gdx:$libgdxVersion"
+ implementation "com.badlogicgames.gdx:gdx-platform:$libgdxVersion:natives-desktop"
+ implementation "com.badlogicgames.gdx:gdx-backend-lwjgl3:$libgdxVersion"
+ implementation "com.badlogicgames.gdx:gdx-lwjgl3-glfw-awt-macos:$libgdxVersion"
+ implementation "com.badlogicgames.gdx:gdx-box2d:$libgdxVersion"
+ implementation "com.badlogicgames.gdx:gdx-box2d-platform:$libgdxVersion:natives-desktop"
+ }
+}
\ No newline at end of file
diff --git a/spine-libgdx/gradle/wrapper/gradle-wrapper.jar b/spine-libgdx/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..7454180f2
Binary files /dev/null and b/spine-libgdx/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/spine-libgdx/gradle/wrapper/gradle-wrapper.properties b/spine-libgdx/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..2e6e5897b
--- /dev/null
+++ b/spine-libgdx/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/spine-libgdx/gradlew b/spine-libgdx/gradlew
new file mode 100755
index 000000000..744e882ed
--- /dev/null
+++ b/spine-libgdx/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MSYS* | MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/spine-libgdx/gradlew.bat b/spine-libgdx/gradlew.bat
new file mode 100644
index 000000000..107acd32c
--- /dev/null
+++ b/spine-libgdx/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/spine-libgdx/settings.gradle b/spine-libgdx/settings.gradle
new file mode 100644
index 000000000..632b7d04f
--- /dev/null
+++ b/spine-libgdx/settings.gradle
@@ -0,0 +1,4 @@
+// includeBuild "../../libgdx"
+include ":spine-libgdx"
+include ":spine-libgdx-tests"
+include ":spine-skeletonviewer"
\ No newline at end of file
diff --git a/spine-libgdx/spine-libgdx-tests/.classpath b/spine-libgdx/spine-libgdx-tests/.classpath
index fffff6cf4..5821062b3 100644
--- a/spine-libgdx/spine-libgdx-tests/.classpath
+++ b/spine-libgdx/spine-libgdx-tests/.classpath
@@ -2,10 +2,14 @@
-
-
+
+
+
+
+
+
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AnimationStateTests.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AnimationStateTests.java
index 4df486d51..2109b4dad 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AnimationStateTests.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AnimationStateTests.java
@@ -33,7 +33,7 @@ import java.lang.reflect.Field;
import java.util.concurrent.atomic.AtomicInteger;
import com.badlogic.gdx.Files.FileType;
-import com.badlogic.gdx.backends.lwjgl.LwjglFileHandle;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3FileHandle;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Null;
@@ -136,7 +136,7 @@ public class AnimationStateTests {
int test;
AnimationStateTests () {
- skeletonData = json.readSkeletonData(new LwjglFileHandle("test/test.json", FileType.Internal));
+ skeletonData = json.readSkeletonData(new Lwjgl3FileHandle("test/test.json", FileType.Internal));
TrackEntry entry;
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java
index a32408a2a..b0d9e831b 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java
@@ -31,8 +31,8 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -242,10 +242,9 @@ public class Box2DExample extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
- config.title = "Box2D - Spine";
- config.width = 640;
- config.height = 480;
- new LwjglApplication(new Box2DExample(), config);
+ Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
+ config.setTitle("Box2D - Spine");
+ config.setWindowedMode(800, 600);
+ new Lwjgl3Application(new Box2DExample(), config);
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FboTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FboTest.java
index f73c2ca62..eb17d3a74 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FboTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FboTest.java
@@ -32,7 +32,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Pixmap;
@@ -129,6 +129,6 @@ public class FboTest extends ApplicationAdapter {
}
static public void main (String[] args) throws Exception {
- new LwjglApplication(new FboTest());
+ new Lwjgl3Application(new FboTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FrameByFrameTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FrameByFrameTest.java
index c839736e5..958d36fbd 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FrameByFrameTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/FrameByFrameTest.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Animation.PlayMode;
@@ -99,6 +99,6 @@ public class FrameByFrameTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new FrameByFrameTest());
+ new Lwjgl3Application(new FrameByFrameTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IKTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IKTest.java
index 5111eb62e..8ab2e50ad 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IKTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IKTest.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector2;
@@ -145,6 +145,6 @@ public class IKTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new IKTest());
+ new Lwjgl3Application(new IKTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java
index cee706c5a..ef663cd78 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.utils.Array;
@@ -139,6 +139,6 @@ public class MixTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new MixTest());
+ new Lwjgl3Application(new MixTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java
index 900018b67..ba59dc774 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java
@@ -34,7 +34,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.Preferences;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
@@ -378,6 +378,6 @@ public class NormalMapTest extends ApplicationAdapter {
else if (args.length == 1) //
args = new String[] {args[0], null};
- new LwjglApplication(new NormalMapTest(args[0], args[1]));
+ new Lwjgl3Application(new NormalMapTest(args[0], args[1]));
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java
index e7dff07c3..9dd01ba5e 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -106,6 +106,6 @@ public class SimpleTest1 extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SimpleTest1());
+ new Lwjgl3Application(new SimpleTest1());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java
index 569449591..a581ab74e 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java
@@ -32,7 +32,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputAdapter;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
@@ -168,6 +168,6 @@ public class SimpleTest2 extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SimpleTest2());
+ new Lwjgl3Application(new SimpleTest2());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java
index 5e1433604..44a65a94c 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -106,6 +106,6 @@ public class SimpleTest3 extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SimpleTest3());
+ new Lwjgl3Application(new SimpleTest3());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java
index af9a68f64..a18402f8d 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.utils.ScreenUtils;
@@ -111,6 +111,6 @@ public class SimpleTest4 extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SimpleTest4());
+ new Lwjgl3Application(new SimpleTest4());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAssetManagerTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAssetManagerTest.java
index 242a20fb9..3c48cf77b 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAssetManagerTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAssetManagerTest.java
@@ -32,7 +32,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -125,6 +125,6 @@ public class SkeletonAssetManagerTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SkeletonAssetManagerTest());
+ new Lwjgl3Application(new SkeletonAssetManagerTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java
index af940706e..430231722 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -112,6 +112,6 @@ public class SkeletonAttachmentTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SkeletonAttachmentTest());
+ new Lwjgl3Application(new SkeletonAttachmentTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkinBonesMixAndMatchTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkinBonesMixAndMatchTest.java
index de7a7ba18..d3b8108d1 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkinBonesMixAndMatchTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkinBonesMixAndMatchTest.java
@@ -31,7 +31,7 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -113,6 +113,6 @@ public class SkinBonesMixAndMatchTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new SkinBonesMixAndMatchTest());
+ new Lwjgl3Application(new SkinBonesMixAndMatchTest());
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/TestHarness.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/TestHarness.java
index 6312cc947..81301a5eb 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/TestHarness.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/TestHarness.java
@@ -31,7 +31,8 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -122,6 +123,8 @@ public class TestHarness extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- new LwjglApplication(new TestHarness(), "", 640, 640);
+ Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
+ config.setWindowedMode(640, 640);
+ new Lwjgl3Application(new TestHarness(), config);
}
}
diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/VertexEffectTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/VertexEffectTest.java
index 4fc136f75..c63fa059d 100644
--- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/VertexEffectTest.java
+++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/VertexEffectTest.java
@@ -31,8 +31,8 @@ package com.esotericsoftware.spine;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -115,9 +115,8 @@ public class VertexEffectTest extends ApplicationAdapter {
}
public static void main (String[] args) throws Exception {
- LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
- config.width = 800;
- config.height = 600;
- new LwjglApplication(new VertexEffectTest(), config);
+ Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
+ config.setWindowedMode(800, 600);
+ new Lwjgl3Application(new VertexEffectTest(), config);
}
}
diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml
index 59bfe9c26..6955ff259 100644
--- a/spine-libgdx/spine-libgdx/pom.xml
+++ b/spine-libgdx/spine-libgdx/pom.xml
@@ -10,7 +10,7 @@
com.esotericsoftware.spinespine-libgdxjar
- 4.0.18.2-SNAPSHOT
+ 4.1.0-SNAPSHOTspine-libgdx
diff --git a/spine-libgdx/spine-skeletonviewer/.classpath b/spine-libgdx/spine-skeletonviewer/.classpath
index cd9d52970..120f0223f 100644
--- a/spine-libgdx/spine-skeletonviewer/.classpath
+++ b/spine-libgdx/spine-skeletonviewer/.classpath
@@ -2,9 +2,14 @@
-
+
+
+
+
+
-
+
+
diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java
index f72a48852..ee984259b 100644
--- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java
+++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java
@@ -35,8 +35,9 @@ import java.lang.reflect.Field;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
-import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
+import com.badlogic.gdx.backends.lwjgl3.Lwjgl3WindowAdapter;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
@@ -368,13 +369,23 @@ public class SkeletonViewer extends ApplicationAdapter {
}
if (dpiScale >= 2.0f) uiScale = 2;
- LwjglApplicationConfiguration.disableAudio = true;
- LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
- config.width = (int)(800 * uiScale);
- config.height = (int)(600 * uiScale);
- config.title = "Skeleton Viewer";
- config.allowSoftwareMode = true;
- config.samples = 2;
- new LwjglApplication(new SkeletonViewer(), config);
+ SkeletonViewer skeletonViewer = new SkeletonViewer();
+ Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
+ config.disableAudio(true);
+ config.setWindowedMode((int)(800 * uiScale), (int)(600 * uiScale));
+ config.setTitle("Skeleton Viewer");
+ config.setBackBufferConfig(8, 8, 8, 8, 24, 0, 2);
+ config.setWindowListener(new Lwjgl3WindowAdapter() {
+ @Override
+ public void filesDropped (String[] files) {
+ for (String file : files) {
+ if (file.endsWith(".json") || file.endsWith(".skel")) {
+ skeletonViewer.loadSkeleton(Gdx.files.absolute(file));
+ return;
+ }
+ }
+ }
+ });
+ new Lwjgl3Application(skeletonViewer, config);
}
}
diff --git a/spine-ts/index.html b/spine-ts/index.html
index 553914515..1d8787794 100644
--- a/spine-ts/index.html
+++ b/spine-ts/index.html
@@ -21,6 +21,7 @@