mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 15:24:55 +08:00
Merge branch '4.1-beta' into 4.1-beta-physics
This commit is contained in:
commit
0fecc12b77
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -1 +1,3 @@
|
||||
include ':spine-libgdx'
|
||||
include ':spine-libgdx:spine-libgdx'
|
||||
include ':spine-libgdx:spine-libgdx-tests'
|
||||
include ':spine-libgdx:spine-skeletonviewer'
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
BIN
spine-libgdx/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
spine-libgdx/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
5
spine-libgdx/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
5
spine-libgdx/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -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
|
||||
185
spine-libgdx/gradlew
vendored
Executable file
185
spine-libgdx/gradlew
vendored
Executable file
@ -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" "$@"
|
||||
89
spine-libgdx/gradlew.bat
vendored
Normal file
89
spine-libgdx/gradlew.bat
vendored
Normal file
@ -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
|
||||
4
spine-libgdx/settings.gradle
Normal file
4
spine-libgdx/settings.gradle
Normal file
@ -0,0 +1,4 @@
|
||||
// includeBuild "../../libgdx"
|
||||
include ":spine-libgdx"
|
||||
include ":spine-libgdx-tests"
|
||||
include ":spine-skeletonviewer"
|
||||
@ -2,10 +2,14 @@
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="assets"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-backend-lwjgl"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-box2d"/>
|
||||
<classpathentry kind="lib" path="/gdx-box2d/libs/gdx-box2d-natives.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/spine-libgdx"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/gdx-backend-lwjgl3"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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]));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<groupId>com.esotericsoftware.spine</groupId>
|
||||
<artifactId>spine-libgdx</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>4.0.18.2-SNAPSHOT</version>
|
||||
<version>4.1.0-SNAPSHOT</version>
|
||||
|
||||
|
||||
<name>spine-libgdx</name>
|
||||
|
||||
@ -2,9 +2,14 @@
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="assets"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="/gdx-box2d/libs/gdx-box2d-natives.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/spine-libgdx"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/gdx-backend-lwjgl"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/gdx-backend-lwjgl3"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/gdx-lwjgl3-glfw-awt-macos"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
<li><a href="/spine-player/example/embedding-binary-example.html">Embedding binary</a></li>
|
||||
<li><a href="/spine-player/example/embedding-json-example.html">Embedding JSON</a></li>
|
||||
<li><a href="/spine-player/example/editor.html">Editor</a></li>
|
||||
<li><a href="/spine-player/example/dispose.html">Disposing a player</a></li>
|
||||
</ul>
|
||||
<li>WebGL</li>
|
||||
<ul>
|
||||
|
||||
80
spine-ts/package-lock.json
generated
80
spine-ts/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-ts",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@esotericsoftware/spine-ts",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE",
|
||||
"workspaces": [
|
||||
"spine-core",
|
||||
@ -519,9 +519,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/concurrently": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.4.0.tgz",
|
||||
"integrity": "sha512-HZ3D0RTQMH3oS4gvtYj1P+NBc6PzE2McEra6yEFcQKrUQ9HvtTGU4Dbne083F034p+LRb7kWU0tPRNvSGs1UCQ==",
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz",
|
||||
"integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.0",
|
||||
@ -603,9 +603,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/date-fns": {
|
||||
"version": "2.27.0",
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz",
|
||||
"integrity": "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==",
|
||||
"version": "2.28.0",
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
|
||||
"integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.11"
|
||||
@ -1031,9 +1031,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
||||
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/has-flag": {
|
||||
@ -7343,6 +7343,7 @@
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
|
||||
"integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
|
||||
"deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"atob": "^2.1.2",
|
||||
@ -7356,6 +7357,7 @@
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
|
||||
"integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
|
||||
"deprecated": "See https://github.com/lydell/source-map-url#deprecated",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/spawn-command": {
|
||||
@ -7691,9 +7693,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
||||
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
|
||||
"version": "4.5.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
|
||||
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
@ -7949,41 +7951,41 @@
|
||||
},
|
||||
"spine-canvas": {
|
||||
"name": "@esotericsoftware/spine-canvas",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"spine-core": {
|
||||
"name": "@esotericsoftware/spine-core",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE"
|
||||
},
|
||||
"spine-player": {
|
||||
"name": "@esotericsoftware/spine-player",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-webgl": "^4.1.5"
|
||||
"@esotericsoftware/spine-webgl": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"spine-threejs": {
|
||||
"name": "@esotericsoftware/spine-threejs",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5",
|
||||
"@esotericsoftware/spine-core": "^4.1.6",
|
||||
"@types/three": "^0.133.1",
|
||||
"three": "^0.133.1"
|
||||
}
|
||||
},
|
||||
"spine-webgl": {
|
||||
"name": "@esotericsoftware/spine-webgl",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"license": "LicenseRef-LICENSE",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -7991,7 +7993,7 @@
|
||||
"@esotericsoftware/spine-canvas": {
|
||||
"version": "file:spine-canvas",
|
||||
"requires": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"@esotericsoftware/spine-core": {
|
||||
@ -8000,13 +8002,13 @@
|
||||
"@esotericsoftware/spine-player": {
|
||||
"version": "file:spine-player",
|
||||
"requires": {
|
||||
"@esotericsoftware/spine-webgl": "^4.1.5"
|
||||
"@esotericsoftware/spine-webgl": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"@esotericsoftware/spine-threejs": {
|
||||
"version": "file:spine-threejs",
|
||||
"requires": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5",
|
||||
"@esotericsoftware/spine-core": "^4.1.6",
|
||||
"@types/three": "^0.133.1",
|
||||
"three": "^0.133.1"
|
||||
}
|
||||
@ -8014,7 +8016,7 @@
|
||||
"@esotericsoftware/spine-webgl": {
|
||||
"version": "file:spine-webgl",
|
||||
"requires": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"@types/offscreencanvas": {
|
||||
@ -8401,9 +8403,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"concurrently": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.4.0.tgz",
|
||||
"integrity": "sha512-HZ3D0RTQMH3oS4gvtYj1P+NBc6PzE2McEra6yEFcQKrUQ9HvtTGU4Dbne083F034p+LRb7kWU0tPRNvSGs1UCQ==",
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz",
|
||||
"integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
@ -8466,9 +8468,9 @@
|
||||
}
|
||||
},
|
||||
"date-fns": {
|
||||
"version": "2.27.0",
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz",
|
||||
"integrity": "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==",
|
||||
"version": "2.28.0",
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
|
||||
"integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
@ -8805,9 +8807,9 @@
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
||||
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
@ -14059,9 +14061,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
||||
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
|
||||
"version": "4.5.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
|
||||
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
|
||||
"dev": true
|
||||
},
|
||||
"union-value": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-ts",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"files": [
|
||||
"README.md"
|
||||
|
||||
24
spine-ts/publish.sh
Executable file
24
spine-ts/publish.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if [ ! "$#" -eq 2 ]; then
|
||||
echo "Usage: ./publish.sh <last-version> <new-version>"
|
||||
exit
|
||||
else
|
||||
lastVersion=${1%/}
|
||||
newVersion=${2%/}
|
||||
echo "last version: $lastVersion"
|
||||
echo "new version: $newVersion"
|
||||
fi
|
||||
|
||||
sed -i '' "s/$lastVersion/$newVersion/" package.json
|
||||
sed -i '' "s/$lastVersion/$newVersion/" spine-canvas/package.json
|
||||
sed -i '' "s/$lastVersion/$newVersion/" spine-core/package.json
|
||||
sed -i '' "s/$lastVersion/$newVersion/" spine-player/package.json
|
||||
sed -i '' "s/$lastVersion/$newVersion/" spine-threejs/package.json
|
||||
sed -i '' "s/$lastVersion/$newVersion/" spine-webgl/package.json
|
||||
|
||||
rm -rf node_modules
|
||||
rm package-lock.json
|
||||
npm install
|
||||
npm publish --access public --workspaces
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-canvas",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@ -30,6 +30,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-core",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
||||
49
spine-ts/spine-player/example/dispose.html
Normal file
49
spine-ts/spine-player/example/dispose.html
Normal file
@ -0,0 +1,49 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="../dist/iife/spine-player.js"></script>
|
||||
<link rel="stylesheet" href="../css/spine-player.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
</head>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: gray;
|
||||
margin: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<div id="container" style="width:640px; height:380px"></div>
|
||||
<div>
|
||||
<button id="dispose">Dispose</button>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
var player = createPlayer();
|
||||
|
||||
document.getElementById("dispose").addEventListener("click", event => {
|
||||
console.log("Disposing player.");
|
||||
player.dispose();
|
||||
player = createPlayer();
|
||||
});
|
||||
|
||||
function createPlayer() {
|
||||
return new spine.SpinePlayer("container", {
|
||||
skelUrl: "assets/spineboy-pro.skel",
|
||||
atlasUrl: "assets/spineboy-pma.atlas",
|
||||
animation: "run",
|
||||
premultipliedAlpha: true,
|
||||
backgroundColor: "#cccccc",
|
||||
viewport: {
|
||||
debugRender: true,
|
||||
},
|
||||
showControls: true
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-player",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@ -30,6 +30,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-webgl": "^4.1.5"
|
||||
"@esotericsoftware/spine-webgl": "^4.1.6"
|
||||
}
|
||||
}
|
||||
@ -27,7 +27,7 @@
|
||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
import { Animation, AnimationState, AnimationStateData, AtlasAttachmentLoader, Bone, Color, Downloader, MathUtils, MixBlend, MixDirection, Skeleton, SkeletonBinary, SkeletonData, SkeletonJson, StringMap, TextureAtlas, TextureFilter, TimeKeeper, TrackEntry, Vector2 } from "@esotericsoftware/spine-core"
|
||||
import { Animation, AnimationState, AnimationStateData, AtlasAttachmentLoader, Bone, Color, Disposable, Downloader, MathUtils, MixBlend, MixDirection, Skeleton, SkeletonBinary, SkeletonData, SkeletonJson, StringMap, TextureAtlas, TextureFilter, TimeKeeper, TrackEntry, Vector2 } from "@esotericsoftware/spine-core"
|
||||
import { AssetManager, GLTexture, Input, LoadingScreen, ManagedWebGLRenderingContext, ResizeMode, SceneRenderer, Vector3 } from "@esotericsoftware/spine-webgl"
|
||||
|
||||
export interface SpinePlayerConfig {
|
||||
@ -178,7 +178,7 @@ export interface Viewport {
|
||||
padBottom: string | number
|
||||
}
|
||||
|
||||
export class SpinePlayer {
|
||||
export class SpinePlayer implements Disposable {
|
||||
public parent: HTMLElement;
|
||||
public dom: HTMLElement;
|
||||
public canvas: HTMLCanvasElement;
|
||||
@ -211,11 +211,13 @@ export class SpinePlayer {
|
||||
public speed = 1;
|
||||
public time = new TimeKeeper();
|
||||
private stopRequestAnimationFrame = false;
|
||||
private disposed = false;
|
||||
|
||||
private viewport: Viewport = {} as Viewport;
|
||||
private currentViewport: Viewport;
|
||||
private previousViewport: Viewport;
|
||||
private viewportTransitionStart = 0;
|
||||
private eventListeners: Array<{ target: any, event: any, func: any }> = [];
|
||||
|
||||
constructor (parent: HTMLElement | string, private config: SpinePlayerConfig) {
|
||||
this.parent = typeof parent === "string" ? document.getElementById(parent) : parent;
|
||||
@ -248,12 +250,29 @@ export class SpinePlayer {
|
||||
this.initialize();
|
||||
|
||||
// Register a global resize handler to redraw, avoiding flicker.
|
||||
window.addEventListener("resize", () => this.drawFrame(false));
|
||||
this.addEventListener(window, "resize", () => this.drawFrame(false));
|
||||
|
||||
// Start the rendering loop.
|
||||
requestAnimationFrame(() => this.drawFrame());
|
||||
}
|
||||
|
||||
dispose (): void {
|
||||
this.sceneRenderer.dispose();
|
||||
this.loadingScreen.dispose();
|
||||
this.assetManager.dispose();
|
||||
for (var i = 0; i < this.eventListeners.length; i++) {
|
||||
var eventListener = this.eventListeners[i];
|
||||
eventListener.target.removeEventListener(eventListener.event, eventListener.func);
|
||||
}
|
||||
this.parent.removeChild(this.dom);
|
||||
this.disposed = true;
|
||||
}
|
||||
|
||||
addEventListener (target: any, event: any, func: any) {
|
||||
this.eventListeners.push({ target: target, event: event, func: func });
|
||||
target.addEventListener(event, func);
|
||||
}
|
||||
|
||||
private validateConfig (config: SpinePlayerConfig) {
|
||||
if (!config) throw new Error("A configuration object must be passed to to new SpinePlayer().");
|
||||
if ((config as any).skelUrl) config.binaryUrl = (config as any).skelUrl;
|
||||
@ -583,16 +602,17 @@ export class SpinePlayer {
|
||||
if (config.showControls) {
|
||||
// For manual hover to work, we need to disable hidding controls if the mouse/touch entered the clickable area of a child of the controls.
|
||||
// For this we need to register a mouse handler on the document and see if we are within the canvas area.
|
||||
document.addEventListener("mousemove", (ev: UIEvent) => {
|
||||
this.addEventListener(document, "mousemove", (ev: UIEvent) => {
|
||||
if (ev instanceof MouseEvent) handleHover(ev.clientX, ev.clientY);
|
||||
});
|
||||
document.addEventListener("touchmove", (ev: UIEvent) => {
|
||||
this.addEventListener(document, "touchmove", (ev: UIEvent) => {
|
||||
if (ev instanceof TouchEvent) {
|
||||
let touches = ev.changedTouches;
|
||||
if (touches.length) {
|
||||
let touch = touches[0];
|
||||
handleHover(touch.clientX, touch.clientY);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@ -747,6 +767,7 @@ export class SpinePlayer {
|
||||
private drawFrame (requestNextFrame = true) {
|
||||
try {
|
||||
if (this.error) return;
|
||||
if (this.disposed) return;
|
||||
if (requestNextFrame && !this.stopRequestAnimationFrame) requestAnimationFrame(() => this.drawFrame());
|
||||
|
||||
let doc = document as any;
|
||||
@ -1015,6 +1036,7 @@ export class SpinePlayer {
|
||||
class Popup {
|
||||
public dom: HTMLElement;
|
||||
private className: string;
|
||||
private windowClickListener: any;
|
||||
|
||||
constructor (private id: string, private button: HTMLElement, private player: SpinePlayer, parent: HTMLElement, htmlContent: string) {
|
||||
this.dom = createElement(/*html*/`<div class="spine-player-popup spine-player-hidden"></div>`);
|
||||
@ -1023,6 +1045,10 @@ class Popup {
|
||||
this.className = "spine-player-button-icon-" + id + "-selected";
|
||||
}
|
||||
|
||||
dispose () {
|
||||
|
||||
}
|
||||
|
||||
hide (id: string): boolean {
|
||||
this.dom.remove();
|
||||
this.button.classList.remove(this.className);
|
||||
@ -1063,7 +1089,7 @@ class Popup {
|
||||
dismissed = true;
|
||||
}
|
||||
};
|
||||
window.addEventListener("click", windowClickListener);
|
||||
this.player.addEventListener(window, "click", windowClickListener);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1074,6 +1100,7 @@ class Switch {
|
||||
|
||||
constructor (private text: string) { }
|
||||
|
||||
|
||||
create (): HTMLElement {
|
||||
this.switch = createElement(/*html*/`
|
||||
<div class="spine-player-switch">
|
||||
@ -1092,7 +1119,8 @@ class Switch {
|
||||
setEnabled (enabled: boolean) {
|
||||
if (enabled) this.switch.classList.add("active");
|
||||
else this.switch.classList.remove("active");
|
||||
this.enabled = enabled;
|
||||
this.enabled = enabled
|
||||
;
|
||||
}
|
||||
|
||||
isEnabled (): boolean {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-threejs",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@ -32,6 +32,6 @@
|
||||
"dependencies": {
|
||||
"@types/three": "^0.133.1",
|
||||
"three": "^0.133.1",
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@esotericsoftware/spine-webgl",
|
||||
"version": "4.1.5",
|
||||
"version": "4.1.6",
|
||||
"description": "The official Spine Runtimes for the web.",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@ -30,6 +30,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
|
||||
"dependencies": {
|
||||
"@esotericsoftware/spine-core": "^4.1.5"
|
||||
"@esotericsoftware/spine-core": "^4.1.6"
|
||||
}
|
||||
}
|
||||
@ -27,8 +27,6 @@
|
||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
import { Pool } from "@esotericsoftware/spine-core";
|
||||
|
||||
export class Input {
|
||||
element: HTMLElement;
|
||||
mouseX = 0;
|
||||
@ -38,6 +36,7 @@ export class Input {
|
||||
touch1: Touch = null;
|
||||
initialPinchDistance = 0;
|
||||
private listeners = new Array<InputListener>();
|
||||
private eventListeners: Array<{ target: any, event: any, func: any }> = [];
|
||||
|
||||
constructor (element: HTMLElement) {
|
||||
this.element = element;
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
import { Color, TimeKeeper } from "@esotericsoftware/spine-core";
|
||||
import { Color, Disposable, TimeKeeper } from "@esotericsoftware/spine-core";
|
||||
import { GLTexture } from "./GLTexture";
|
||||
import { ResizeMode, SceneRenderer } from "./SceneRenderer";
|
||||
|
||||
@ -38,7 +38,7 @@ let loaded = 0;
|
||||
const FADE_IN = 1, FADE_OUT = 1;
|
||||
const logoWidth = 165, logoHeight = 108, spinnerSize = 163;
|
||||
|
||||
export class LoadingScreen {
|
||||
export class LoadingScreen implements Disposable {
|
||||
private renderer: SceneRenderer;
|
||||
private logo: GLTexture = null;
|
||||
private spinner: GLTexture = null;
|
||||
@ -69,6 +69,10 @@ export class LoadingScreen {
|
||||
spinnerImage.onload = onload;
|
||||
}
|
||||
}
|
||||
dispose (): void {
|
||||
this.logo.dispose();
|
||||
this.spinner.dispose();
|
||||
}
|
||||
|
||||
draw (complete = false) {
|
||||
if (loaded < 2 || (complete && this.fadeOut > FADE_OUT)) return;
|
||||
|
||||
@ -73,6 +73,14 @@ export class SceneRenderer implements Disposable {
|
||||
this.skeletonDebugRenderer = new SkeletonDebugRenderer(this.context);
|
||||
}
|
||||
|
||||
dispose () {
|
||||
this.batcher.dispose();
|
||||
this.batcherShader.dispose();
|
||||
this.shapes.dispose();
|
||||
this.shapesShader.dispose();
|
||||
this.skeletonDebugRenderer.dispose();
|
||||
}
|
||||
|
||||
begin () {
|
||||
this.camera.update();
|
||||
this.enableRenderer(this.batcher);
|
||||
@ -498,14 +506,6 @@ export class SceneRenderer implements Disposable {
|
||||
} else
|
||||
this.activeRenderer = this.skeletonDebugRenderer;
|
||||
}
|
||||
|
||||
dispose () {
|
||||
this.batcher.dispose();
|
||||
this.batcherShader.dispose();
|
||||
this.shapes.dispose();
|
||||
this.shapesShader.dispose();
|
||||
this.skeletonDebugRenderer.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
export enum ResizeMode {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user