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.spine spine-libgdx jar - 4.0.18.2-SNAPSHOT + 4.1.0-SNAPSHOT spine-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 @@
  • Embedding binary
  • Embedding JSON
  • Editor
  • +
  • Disposing a player
  • WebGL