mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 14:24:53 +08:00
Merge branch '4.2' into ts-webgl-overlay
This commit is contained in:
commit
f9bada6d0c
@ -26,7 +26,7 @@ runs:
|
||||
python -m pip install scons==4.7.0
|
||||
scons --version
|
||||
|
||||
- name: Setup dotnet 6
|
||||
- name: Setup dotnet 8
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
dotnet-version: '8.0.x'
|
||||
38
.github/workflows/format-check.yml
vendored
38
.github/workflows/format-check.yml
vendored
@ -7,14 +7,16 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
steps:
|
||||
|
||||
- name: Install OS dependencies (needed for act on ubuntu-latest)
|
||||
- name: Install OS dependencies (needed for act on ubuntu-latest)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y --force-yes curl xz-utils libicu-dev git dos2unix libncurses5
|
||||
sudo apt install -y --force-yes curl xz-utils libicu-dev git dos2unix
|
||||
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
|
||||
sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Cache Clang
|
||||
id: cache-clang
|
||||
@ -33,33 +35,33 @@ jobs:
|
||||
- name: Install dotnet
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: "6.0.x"
|
||||
- run: dotnet tool install -g dotnet-format
|
||||
|
||||
- name: Install Node and dependenceis
|
||||
uses: actions/setup-node@v3
|
||||
dotnet-version: "6.0.x"
|
||||
- run: dotnet tool install -g dotnet-format
|
||||
|
||||
- name: Install Node and dependenceis
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
- run: npm install -g typescript typescript-formatter
|
||||
- run: npm install -g typescript typescript-formatter
|
||||
|
||||
- name: Install JDK
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: "16"
|
||||
|
||||
- name: Format
|
||||
run: |
|
||||
java-version: "16"
|
||||
|
||||
- name: Format
|
||||
run: |
|
||||
export CLANGFORMAT=`pwd`/clang/bin/clang-format
|
||||
export PATH="$PATH:/root/.dotnet/tools"
|
||||
dotnet-format --version
|
||||
dotnet-format --version
|
||||
./formatters/format.sh
|
||||
find . -type f -name '*.cs' -exec perl -pi -e 's/\r\n/\n/g' '{}' +
|
||||
git diff
|
||||
git diff > format-diff.txt
|
||||
git diff > format-diff.txt
|
||||
|
||||
- name: Archive formatting result
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: format-diff
|
||||
path: format-diff.txt
|
||||
|
||||
25
.github/workflows/spine-godot-extension-v4-all.yml
vendored
Normal file
25
.github/workflows/spine-godot-extension-v4-all.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
name: Build spine-godot GDExtension (All Godot 4.x versions)
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/spine-godot.yml"
|
||||
- 'spine-godot/**'
|
||||
- 'spine-cpp/**'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-versions:
|
||||
strategy:
|
||||
matrix:
|
||||
version:
|
||||
[
|
||||
{"tag": "4.4.1-stable", "version": "4.4.1.stable", "dev": false},
|
||||
{"tag": "4.3-stable", "version": "4.3.stable", "dev": false},
|
||||
]
|
||||
uses: ./.github/workflows/spine-godot-extension-v4.yml
|
||||
with:
|
||||
godot_tag: ${{ matrix.version.tag }}
|
||||
godot_version: ${{ matrix.version.version }}
|
||||
dev: ${{ matrix.version.dev }}
|
||||
secrets: inherit
|
||||
264
.github/workflows/spine-godot-extension-v4.yml
vendored
Normal file
264
.github/workflows/spine-godot-extension-v4.yml
vendored
Normal file
@ -0,0 +1,264 @@
|
||||
name: Build spine-godot GDExtension (Godot 4.x)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
godot_tag:
|
||||
required: true
|
||||
type: string
|
||||
default: "Godot tag not specified!"
|
||||
godot_version:
|
||||
required: true
|
||||
type: string
|
||||
default: "Godot version not specified!"
|
||||
dev:
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_EC2_METADATA_DISABLED: true
|
||||
GODOT_TAG: ${{ inputs.godot_tag }}
|
||||
GODOT_VERSION: ${{ inputs.godot_version }}
|
||||
DEV_BUILD: ${{ inputs.dev }}
|
||||
|
||||
jobs:
|
||||
build-windows:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Build GDExtension
|
||||
shell: bash
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
./build-extension.sh windows
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-windows-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/windows/*.dll
|
||||
|
||||
build-linux-x86_64:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
./build-extension.sh linux
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-linux-x86_64-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/linux/*.so
|
||||
|
||||
build-macos:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
./build-extension.sh macos
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-macos-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/macos/**/*
|
||||
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
./build-extension.sh ios
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-ios-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/ios/**/*
|
||||
|
||||
build-android:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Make apt sources.list use the default Ubuntu repositories
|
||||
run: |
|
||||
sudo rm -f /etc/apt/sources.list.d/*
|
||||
sudo cp -f spine-godot/build/sources.lst /etc/apt/sources.list
|
||||
sudo apt-get update
|
||||
|
||||
- name: Set up Java 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
|
||||
- name: Setup Android SDK & NDK
|
||||
uses: android-actions/setup-android@v2
|
||||
|
||||
- name: Install NDK
|
||||
run: |
|
||||
yes | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --licenses
|
||||
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;23.2.8568313"
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/23.2.8568313 ./build-extension.sh android
|
||||
ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/23.2.8568313 ./build-extension.sh android x86_64
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-android-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/android/*.so
|
||||
|
||||
build-web:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Emscripten latest
|
||||
uses: mymindstorm/setup-emsdk@v11
|
||||
with:
|
||||
version: 3.1.26
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-4
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd spine-godot/build
|
||||
./setup-extension.sh $GODOT_TAG $DEV_BUILD
|
||||
./build-extension.sh web
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-web-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/web/*.wasm
|
||||
|
||||
upload-to-s3:
|
||||
needs: [build-windows, build-linux-x86_64, build-macos, build-ios, build-android, build-web]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download windows artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-windows-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-windows-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Download linux-x86_64 artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-linux-x86_64-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-linux-x86_64-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Download macos artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-macos-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-macos-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Download ios artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-ios-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-ios-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Download android artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-android-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-android-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Download web artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: gdextension-web-${{ env.GODOT_TAG }}
|
||||
path: artifacts/gdextension-web-${{ env.GODOT_TAG }}
|
||||
|
||||
- name: Package and upload artifacts
|
||||
shell: bash
|
||||
if: env.AWS_ACCESS_KEY_ID != null
|
||||
run: |
|
||||
BRANCH=${GITHUB_REF#refs/heads/}
|
||||
echo "branch: $BRANCH"
|
||||
|
||||
cd artifacts
|
||||
|
||||
# Create directories matching the expected structure
|
||||
mkdir -p bin/{windows,linux,macos/macos.framework,ios,android,web}
|
||||
|
||||
# Ensure gdextension file is in root
|
||||
cp ../spine-godot/spine_godot_extension.gdextension bin/
|
||||
|
||||
# Move artifacts to their correct locations
|
||||
mv gdextension-windows-$GODOT_TAG/* bin/windows/
|
||||
mv gdextension-linux-x86_64-$GODOT_TAG/* bin/linux/
|
||||
mv gdextension-macos-$GODOT_TAG/* bin/macos/
|
||||
mv gdextension-ios-$GODOT_TAG/* bin/ios/
|
||||
mv gdextension-android-$GODOT_TAG/* bin/android/
|
||||
mv gdextension-web-$GODOT_TAG/* bin/web/
|
||||
|
||||
# Create the final zip with branch and tag
|
||||
zip -r ../spine-godot-extension-$BRANCH-$GODOT_TAG.zip spine_godot_extension.gdextension bin/
|
||||
|
||||
cd ..
|
||||
aws s3 cp spine-godot-extension-$BRANCH-$GODOT_TAG.zip s3://spine-godot/$BRANCH/$GODOT_TAG/
|
||||
4
.github/workflows/spine-godot-v4-all.yml
vendored
4
.github/workflows/spine-godot-v4-all.yml
vendored
@ -14,10 +14,10 @@ jobs:
|
||||
matrix:
|
||||
version:
|
||||
[
|
||||
{"tag": "4.4.1-stable", "version": "4.4.1.stable", "mono": false},
|
||||
{"tag": "4.4.1-stable", "version": "4.4.1.stable", "mono": true},
|
||||
{"tag": "4.3-stable", "version": "4.3.stable", "mono": false},
|
||||
{"tag": "4.3-stable", "version": "4.3.stable", "mono": true},
|
||||
{"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": false},
|
||||
{"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": true},
|
||||
]
|
||||
uses: ./.github/workflows/spine-godot-v4.yml
|
||||
with:
|
||||
|
||||
80
.github/workflows/spine-godot-v4.yml
vendored
80
.github/workflows/spine-godot-v4.yml
vendored
@ -34,7 +34,7 @@ env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_EC2_METADATA_DISABLED: true
|
||||
EM_VERSION: 3.1.26
|
||||
EM_VERSION: 3.1.64
|
||||
GODOT_TAG: ${{ inputs.godot_tag }}
|
||||
GODOT_VERSION: ${{ inputs.godot_version }}
|
||||
GODOT_MONO: ${{ inputs.godot_mono }}
|
||||
@ -43,7 +43,7 @@ env:
|
||||
jobs:
|
||||
|
||||
godot-editor-windows:
|
||||
runs-on: windows-latest
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -59,13 +59,13 @@ jobs:
|
||||
./spine-godot/build/build-v4.sh $GODOT_MONO
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-windows', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/**/*
|
||||
|
||||
godot-editor-linux:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -83,7 +83,7 @@ jobs:
|
||||
./spine-godot/build/build-v4.sh $GODOT_MONO
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-linux', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/**/*
|
||||
@ -109,7 +109,7 @@ jobs:
|
||||
popd
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/godot-editor-macos.zip
|
||||
@ -133,7 +133,7 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh ios
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/ios.zip
|
||||
@ -155,13 +155,13 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh macos $GODOT_MONO
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/macos.zip
|
||||
|
||||
godot-template-linux:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -178,13 +178,13 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh linux $GODOT_MONO
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/linux_debug.x86_64
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/linux_release.x86_64
|
||||
@ -206,19 +206,19 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh windows $GODOT_MONO
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/windows_debug_x86_64.exe
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/windows_release_x86_64.exe
|
||||
|
||||
godot-template-android:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ inputs.godot_mono == false }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@ -232,9 +232,10 @@ jobs:
|
||||
sudo cp -f spine-godot/build/sources.lst /etc/apt/sources.list
|
||||
sudo apt-get update
|
||||
|
||||
- name: Set up Java 11
|
||||
uses: actions/setup-java@v1
|
||||
- name: Set up Java 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
|
||||
- name: Setup python and scons
|
||||
@ -247,25 +248,25 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh android
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/android_debug.apk
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/android_release.apk
|
||||
|
||||
- name: Upload artifacts source
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-source', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/android_source.zip
|
||||
|
||||
godot-template-web:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ inputs.godot_mono == false }}
|
||||
|
||||
steps:
|
||||
@ -291,49 +292,49 @@ jobs:
|
||||
./spine-godot/build/build-templates-v4.sh web
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_debug.zip
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_release.zip
|
||||
|
||||
- name: Upload artifacts no threads debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_nothreads_debug.zip
|
||||
|
||||
- name: Upload artifacts no threads release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_nothreads_release.zip
|
||||
|
||||
- name: Upload artifacts dlink debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_dlink_debug.zip
|
||||
|
||||
- name: Upload artifacts dlink release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_dlink_release.zip
|
||||
|
||||
- name: Upload artifacts dlink nothreads debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_dlink_nothreads_debug.zip
|
||||
|
||||
- name: Upload artifacts dlink nothreads release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
|
||||
path: spine-godot/godot/bin/web_dlink_nothreads_release.zip
|
||||
@ -459,22 +460,25 @@ jobs:
|
||||
aws s3 cp godot-editor-macos.zip s3://spine-godot/$BRANCH/$GODOT_TAG/
|
||||
|
||||
echo "$GODOT_VERSION" > version.txt
|
||||
# Extract the major and minor version from GODOT_VERSION
|
||||
GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/')
|
||||
|
||||
# Check if the version is >= 4.3
|
||||
echo "Major.Minor version: $GODOT_MAJOR_MINOR"
|
||||
|
||||
if [[ $(echo "$GODOT_MAJOR_MINOR >= 4.3" | bc) -eq 1 ]]; then
|
||||
mv web_release.zip web_nothreads_release.zip
|
||||
mv web_debug.zip web_nothreads_debug.zip
|
||||
WEB_RELEASE_FILE="web_nothreads_release.zip"
|
||||
WEB_DEBUG_FILE="web_nothreads_debug.zip"
|
||||
echo "Version >= 4.3. Adding all web_xxx.zip files to template zip."
|
||||
WEB_FILES=(web_debug.zip web_release.zip web_nothreads_debug.zip web_nothreads_release.zip web_dlink_debug.zip web_dlink_nothreads_debug.zip web_dlink_release.zip web_dlink_nothreads_release.zip)
|
||||
else
|
||||
WEB_RELEASE_FILE="web_release.zip"
|
||||
WEB_DEBUG_FILE="web_debug.zip"
|
||||
echo "Version < 4.3. Adding only web_debug.zip and web_release.zip."
|
||||
WEB_FILES=(web_debug.zip web_release.zip)
|
||||
fi
|
||||
|
||||
ls -lah
|
||||
zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip ios.zip macos.zip windows_debug_x86_64.exe windows_release_x86_64.exe linux_debug.x86_64 linux_release.x86_64 "$WEB_DEBUG_FILE" "$WEB_RELEASE_FILE" android_release.apk android_debug.apk android_source.zip version.txt
|
||||
echo "Web files to include: ${WEB_FILES[@]}"
|
||||
|
||||
zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip ios.zip macos.zip \
|
||||
windows_debug_x86_64.exe windows_release_x86_64.exe \
|
||||
linux_debug.x86_64 linux_release.x86_64 "${WEB_FILES[@]}" \
|
||||
android_release.apk android_debug.apk android_source.zip version.txt
|
||||
|
||||
aws s3 cp spine-godot-templates-$BRANCH-$GODOT_TAG.zip s3://spine-godot/$BRANCH/$GODOT_TAG/spine-godot-templates-$BRANCH-$GODOT_TAG.tpz
|
||||
|
||||
upload-to-s3-mono:
|
||||
|
||||
40
.github/workflows/spine-godot.yml
vendored
40
.github/workflows/spine-godot.yml
vendored
@ -12,8 +12,8 @@ env:
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_EC2_METADATA_DISABLED: true
|
||||
EM_VERSION: 3.1.14
|
||||
GODOT_TAG: 3.5.3-stable
|
||||
GODOT_VERSION: 3.5.3.stable
|
||||
GODOT_TAG: 3.6-stable
|
||||
GODOT_VERSION: 3.6.stable
|
||||
|
||||
jobs:
|
||||
godot-editor-windows:
|
||||
@ -33,7 +33,7 @@ jobs:
|
||||
./spine-godot/build/build.sh release_debug
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-editor-windows.zip
|
||||
path: spine-godot/godot/bin/godot.windows.opt.tools.64.exe
|
||||
@ -57,7 +57,7 @@ jobs:
|
||||
./spine-godot/build/build.sh release_debug
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-editor-linux.zip
|
||||
path: spine-godot/godot/bin/godot.x11.opt.tools.64
|
||||
@ -82,7 +82,7 @@ jobs:
|
||||
popd
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-editor-macos.zip
|
||||
path: spine-godot/godot/bin/godot-editor-macos.zip
|
||||
@ -103,7 +103,7 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh ios
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-ios.zip
|
||||
path: spine-godot/godot/bin/iphone.zip
|
||||
@ -124,13 +124,13 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh macos
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-macos.zip
|
||||
path: spine-godot/godot/bin/osx.zip
|
||||
|
||||
godot-template-linux:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -147,13 +147,13 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh linux
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-linux-debug.zip
|
||||
path: spine-godot/godot/bin/linux_x11_64_debug
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-linux-release.zip
|
||||
path: spine-godot/godot/bin/linux_x11_64_release
|
||||
@ -175,19 +175,19 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh windows
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-windows-debug.zip
|
||||
path: spine-godot/godot/bin/windows_64_debug.exe
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-windows-release.zip
|
||||
path: spine-godot/godot/bin/windows_64_release.exe
|
||||
|
||||
godot-template-android:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -203,7 +203,7 @@ jobs:
|
||||
- name: Set up Java 11
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 11
|
||||
java-version: 17
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps-3
|
||||
@ -215,25 +215,25 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh android
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-android-debug.zip
|
||||
path: spine-godot/godot/bin/android_debug.apk
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-android-release.zip
|
||||
path: spine-godot/godot/bin/android_release.apk
|
||||
|
||||
- name: Upload artifacts source
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-android-source.zip
|
||||
path: spine-godot/godot/bin/android_source.zip
|
||||
|
||||
godot-template-web:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -257,13 +257,13 @@ jobs:
|
||||
./spine-godot/build/build-templates.sh web
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-web-debug.zip
|
||||
path: spine-godot/godot/bin/webassembly_debug.zip
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: godot-template-web-release.zip
|
||||
path: spine-godot/godot/bin/webassembly_release.zip
|
||||
|
||||
20
.gitignore
vendored
20
.gitignore
vendored
@ -145,7 +145,10 @@ spine-ts/spine-canvas/dist
|
||||
spine-ts/spine-webgl/dist
|
||||
spine-ts/spine-player/dist
|
||||
spine-ts/spine-threejs/dist
|
||||
spine-ts/spine-pixi/dist
|
||||
spine-ts/spine-phaser-v3/dist
|
||||
spine-ts/spine-phaser-v4/dist
|
||||
spine-ts/spine-pixi-v7/dist
|
||||
spine-ts/spine-pixi-v8/dist
|
||||
spine-libgdx/gradle
|
||||
spine-libgdx/gradlew
|
||||
spine-libgdx/gradlew.bat
|
||||
@ -188,7 +191,6 @@ spine-flutter/src/spine-cpp
|
||||
|
||||
spine-godot/.clang-format
|
||||
|
||||
spine-ts/spine-phaser/dist
|
||||
spine-godot/.cache
|
||||
spine-godot/build/compile_commands.json
|
||||
|
||||
@ -204,3 +206,17 @@ spine-flutter/src/spine-cpp-lite
|
||||
spine-sdl/.vs
|
||||
spine-ts/spine-canvaskit/dist
|
||||
spine-ts/output.png
|
||||
spine-godot/godot-cpp
|
||||
spine-godot/__pycache__
|
||||
*.os
|
||||
spine-godot/.sconsign.dblite
|
||||
spine-godot/example-v4-extension/.godot
|
||||
spine-godot/src
|
||||
spine-godot/compile_commands.json
|
||||
spine-godot/bin
|
||||
spine-godot/example-v4-extension/bin/macos/macos.framework/libspine_godot.macos.editor
|
||||
spine-godot/.idea
|
||||
spine-godot/build/version.txt
|
||||
spine-godot/vc140.pdb
|
||||
spine-godot/example-v4-extension/bin
|
||||
spine-godot/example-v4-extension/MoltenVK.xcframework
|
||||
|
||||
14
CHANGELOG.md
14
CHANGELOG.md
@ -123,7 +123,7 @@
|
||||
|
||||
### Unity
|
||||
|
||||
- **Officially supported Unity versions are 2017.1-2023.1**.
|
||||
- **Officially supported Unity versions are 2017.1-6000.0**.
|
||||
|
||||
- **Additions**
|
||||
|
||||
@ -164,6 +164,17 @@
|
||||
- `Universal Render Pipeline/Spine/Skeleton` shader now performs proper alpha-testing when `Depth Write` is enabled, using the existing `Shadow alpha cutoff` parameter.
|
||||
- `SkeletonRootMotion` components now provide a public `Initialize()` method which is automatically called when calling `skeletonAnimation.Initialize(true)` to update the necessary skeleton references. If a different root bone shall be used, be sure to set `skeletonRootMotion.rootMotionBoneName` before calling `skeletonAnimation.Initialize(true)`.
|
||||
- Skeleton Mecanim: Added new `Mix Mode` `Match`. When selected, Spine animation weights are calculated to best match the provided Mecanim clip weights. This mix mode is recommended on any layer using blend tree nodes.
|
||||
- URP Shaders: Added `ZWrite` variant of outline shader `Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly ZWrite`. Suitable for e.g. depth of field (DoF) effect where writing to the depth buffer is required. Note that for DoF effect, `Render Queue` needs to be set to `Alpha Test`.
|
||||
- SkeletonGraphic: Exposed `SetScaledPivotOffset` as public method outside of the editor to support programatically moving mesh offsets at runtime based on mesh bounds.
|
||||
- SkeletonMecanim: Added `Scene Preview` option to preview an Animation Clip for e.g. easier event placement. When enabled, the Animation Clip selected in the Animation window is previewed in the Scene and Game views. Lock the `SkeletonMecanim` Inspector window, open the Animation window and select the Animation Clip. Then in the Animation window scrub through the timeline to see the current animation frame previewed.
|
||||
- `Universal Render Pipeline/Spine/Skeleton Lit` shader now supports [Adaptive Probe Volumes (APV)](https://docs.unity3d.com/6000.0/Documentation/Manual/urp/probevolumes-concept.html) introduced in Unity 6. The shader also provides a new material property `APV per Pixel` to either calculate APV lighting contribution per pixel (the default) or per vertex.
|
||||
- `Universal Render Pipeline/Spine/Sprite` shader now also supports [Adaptive Probe Volumes (APV)](https://docs.unity3d.com/6000.0/Documentation/Manual/urp/probevolumes-concept.html) introduced in Unity 6. APV lighting contribution is automatically calculated per pixel.
|
||||
- All Spine Outline shaders, including the URP outline shaders, now provide an additional parameter `Fill`. Enable it to also fill the opaque area inside the outline with the outline color. Prevents a semi-transparent gap between outline and skeleton. Defaults to `disabled` to maintain existing behaviour.
|
||||
- Added example component `RenderExistingMeshGraphic` (similar to `RenderExistingMesh`) to render a `SkeletonGraphic` mesh again with different materials. This might be required by e.g. URP and SkeletonGraphic outline shaders skipping additional render passes. To add a second outline variant of your SkeletonGraphic:
|
||||
1. Add a GameObject at the same hierarchy level as the reference SkeletonGraphic and move it before the reference SkeletonGraphic to render behind.
|
||||
2. Add a `RenderExistingMeshGraphic` component.
|
||||
3. In the `RenderExistingMeshGraphic` component Inspector at `Reference Skeleton Graphic` assign the original `SkeletonGraphic` object.
|
||||
4. At `Replacement Material` assign e.g. the included _SkeletonGraphicDefaultOutline_ material to replace all materials with this material. Alternatively, if `Multiple CanvasRenderers` is enabled at the reference SkeletonGraphic, you can add entries to the `Replacement Materials` list and at each entry assign the original SkeletonGraphic material (e.g. _SkeletonGraphicDefault_) to be replaced and the respective `Replacement Material` (e.g. _SkeletonGraphicDefaultOutline_).
|
||||
|
||||
- **Breaking changes**
|
||||
|
||||
@ -344,6 +355,7 @@
|
||||
- `VertexEffect` has been removed.
|
||||
|
||||
### Cocos2d-x
|
||||
- Renamed `SkeletonRenderer` to `SkeletonRendererCocos2dX` to avoid name clash with spine-cpp class.
|
||||
|
||||
### SFML
|
||||
|
||||
|
||||
@ -6,29 +6,48 @@ import PackageDescription
|
||||
let package = Package(
|
||||
name: "spine-ios",
|
||||
platforms: [
|
||||
.iOS(.v13)
|
||||
.iOS(.v13),
|
||||
.tvOS(.v13),
|
||||
.macCatalyst(.v13),
|
||||
.visionOS(.v1),
|
||||
.macOS(.v10_15),
|
||||
.watchOS(.v6),
|
||||
],
|
||||
products: [
|
||||
// Products define the executables and libraries a package produces, making them visible to other packages.
|
||||
.library(
|
||||
name: "Spine",
|
||||
targets: ["Spine"]
|
||||
targets: ["SpineModule"]
|
||||
)
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "SpineModule",
|
||||
dependencies: [
|
||||
.byName(
|
||||
name: "Spine",
|
||||
condition: .when(platforms: [
|
||||
.iOS,
|
||||
])
|
||||
),
|
||||
"SpineCppLite",
|
||||
"SpineShadersStructs",
|
||||
],
|
||||
path: "spine-ios/Sources/SpineModule"
|
||||
),
|
||||
.target(
|
||||
name: "Spine",
|
||||
dependencies: [
|
||||
"SpineCppLite", "SpineShadersStructs"
|
||||
],
|
||||
path: "spine-ios/Sources/Spine",
|
||||
swiftSettings: [
|
||||
.interoperabilityMode(.Cxx)
|
||||
]
|
||||
path: "spine-ios/Sources/Spine"
|
||||
),
|
||||
.target(
|
||||
name: "SpineCppLite",
|
||||
path: "spine-ios/Sources/SpineCppLite"
|
||||
path: "spine-ios/Sources/SpineCppLite",
|
||||
linkerSettings: [
|
||||
.linkedLibrary("c++"),
|
||||
]
|
||||
),
|
||||
.systemLibrary(
|
||||
name: "SpineShadersStructs",
|
||||
|
||||
@ -14,11 +14,16 @@ Spine runtimes for iOS.
|
||||
s.license = { :file => 'LICENSE' }
|
||||
|
||||
s.source = { :git => 'https://github.com/esotericsoftware/spine-runtimes.git', :branch => '4.2' }
|
||||
s.source_files = 'spine-ios/Sources/Spine/**/*.{swift,metal}'
|
||||
s.source_files = 'spine-ios/Sources/Spine/**/*.{swift}'
|
||||
s.platform = :ios, '13.0'
|
||||
|
||||
s.xcconfig = {
|
||||
'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/SpineCppLite/spine-cpp/spine-cpp/include" "$(PODS_ROOT)/SpineCppLite/spine-cpp/spine-cpp-lite"'
|
||||
'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/SpineCppLite/spine-cpp/spine-cpp/include" "$(PODS_ROOT)/SpineCppLite/spine-cpp/spine-cpp-lite"',
|
||||
'MTL_HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/SpineShadersStructs"'
|
||||
}
|
||||
|
||||
s.resource_bundles = {
|
||||
'SpineBundle' => ['spine-ios/Sources/Spine/**/*.{metal}']
|
||||
}
|
||||
|
||||
s.swift_version = '5.0'
|
||||
|
||||
@ -275,6 +275,13 @@ cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-sdl/data/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-sdl/data/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-sdl/data/"
|
||||
|
||||
echo "spine-glfw"
|
||||
rm -f "$ROOT/spine-glfw/data/"*
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-glfw/data/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-glfw/data/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-glfw/data/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-glfw/data/"
|
||||
|
||||
echo "spine-sfml-c"
|
||||
rm "$ROOT/spine-sfml/c/data/"*
|
||||
cp -f ../coin/export/coin-pro.json "$ROOT/spine-sfml/c/data/"
|
||||
@ -498,6 +505,11 @@ rm "$ROOT/spine-ts/spine-threejs/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.json "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-player/example/assets/"*
|
||||
@ -511,91 +523,182 @@ cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-player/example/a
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-phaser/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
rm "$ROOT/spine-ts/spine-phaser-v3/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/spine-phaser/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-pixi/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
rm "$ROOT/spine-ts/spine-phaser-v4/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-pixi/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-pixi-v7/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-pixi-v8/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../dragon/export/dragon-ess.json "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon.atlas "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon*.png "$ROOT/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
echo "spine-monogame"
|
||||
rm "$ROOT/spine-monogame/spine-monogame-example/data/"*
|
||||
|
||||
@ -1,4 +1,9 @@
|
||||
option(SPINE_SANITIZE "Build with sanitization" OFF)
|
||||
option(SPINE_SET_COMPILER_FLAGS "Set compiler flags" ON)
|
||||
|
||||
if (NOT SPINE_SET_COMPILER_FLAGS)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
message("MSCV detected")
|
||||
@ -11,4 +16,4 @@ else()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize=undefined")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=undefined")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -9,7 +9,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.esotericsoftware.spine"
|
||||
minSdk = 24
|
||||
minSdk = 23
|
||||
targetSdk = 34
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
|
||||
@ -9,7 +9,7 @@ android {
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
minSdk = 23
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
@ -40,7 +40,7 @@ dependencies {
|
||||
androidTestImplementation(libs.androidx.espresso.core)
|
||||
}
|
||||
|
||||
val libraryVersion = "4.2.7-SNAPSHOT";
|
||||
val libraryVersion = "4.2.10-SNAPSHOT";
|
||||
|
||||
tasks.register<Jar>("sourceJar") {
|
||||
archiveClassifier.set("sources")
|
||||
|
||||
@ -49,6 +49,7 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
|
||||
/** Is responsible to transform the {@link Skeleton} with its current pose to {@link SkeletonRenderer.RenderCommand} commands and
|
||||
* render them to a {@link Canvas}. */
|
||||
@ -111,6 +112,7 @@ public class SkeletonRenderer {
|
||||
short[] indices = null;
|
||||
Attachment attachment = slot.getAttachment();
|
||||
if (attachment == null) {
|
||||
clipper.clipEnd(slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -246,8 +248,19 @@ public class SkeletonRenderer {
|
||||
for (int i = 0; i < commands.size; i++) {
|
||||
RenderCommand command = commands.get(i);
|
||||
|
||||
canvas.drawVertices(Canvas.VertexMode.TRIANGLES, command.vertices.size, command.vertices.items, 0, command.uvs.items, 0,
|
||||
command.colors.items, 0, command.indices.items, 0, command.indices.size, command.texture.getPaint(command.blendMode));
|
||||
if (Build.VERSION.SDK_INT >= 29) {
|
||||
canvas.drawVertices(Canvas.VertexMode.TRIANGLES, command.vertices.size, command.vertices.items, 0, command.uvs.items,
|
||||
0, command.colors.items, 0, command.indices.items, 0, command.indices.size,
|
||||
command.texture.getPaint(command.blendMode));
|
||||
} else {
|
||||
// See https://github.com/EsotericSoftware/spine-runtimes/issues/2638
|
||||
int[] colors = command.colors.items;
|
||||
int[] colorsCopy = new int[command.vertices.size];
|
||||
System.arraycopy(colors, 0, colorsCopy, 0, command.colors.size);
|
||||
|
||||
canvas.drawVertices(Canvas.VertexMode.TRIANGLES, command.vertices.size, command.vertices.items, 0, command.uvs.items,
|
||||
0, colorsCopy, 0, command.indices.items, 0, command.indices.size, command.texture.getPaint(command.blendMode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -40,6 +40,7 @@ import com.esotericsoftware.spine.Skeleton;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.AttributeSet;
|
||||
@ -180,6 +181,8 @@ public class SpineView extends View implements Choreographer.FrameCallback {
|
||||
private Alignment alignment = Alignment.CENTER;
|
||||
private ContentMode contentMode = ContentMode.FIT;
|
||||
|
||||
private boolean isAttached = false;
|
||||
|
||||
/** Constructs a new {@link SpineView}.
|
||||
*
|
||||
* After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController}
|
||||
@ -187,6 +190,10 @@ public class SpineView extends View implements Choreographer.FrameCallback {
|
||||
public SpineView (Context context, SpineController controller) {
|
||||
super(context);
|
||||
this.controller = controller;
|
||||
// See https://github.com/EsotericSoftware/spine-runtimes/issues/2638
|
||||
if (Build.VERSION.SDK_INT < 29) {
|
||||
this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
|
||||
}
|
||||
}
|
||||
|
||||
/** Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using
|
||||
@ -203,6 +210,18 @@ public class SpineView extends View implements Choreographer.FrameCallback {
|
||||
// Set properties by view id
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow () {
|
||||
super.onAttachedToWindow();
|
||||
isAttached = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow () {
|
||||
super.onDetachedFromWindow();
|
||||
isAttached = false;
|
||||
}
|
||||
|
||||
/** Constructs a new {@link SpineView} from files in your app assets. The {@code atlasFileName} specifies the `.atlas` file to
|
||||
* be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or
|
||||
* `.skel` file containing the skeleton data.
|
||||
@ -402,10 +421,9 @@ public class SpineView extends View implements Choreographer.FrameCallback {
|
||||
controller.setCoordinateTransform(x + offsetX / scaleX, y + offsetY / scaleY, scaleX, scaleY);
|
||||
}
|
||||
|
||||
// Choreographer.FrameCallback
|
||||
|
||||
@Override
|
||||
public void doFrame (long frameTimeNanos) {
|
||||
if (!isAttached) return;
|
||||
if (lastTime != 0) delta = (frameTimeNanos - lastTime) / 1e9f;
|
||||
lastTime = frameTimeNanos;
|
||||
invalidate();
|
||||
|
||||
@ -1937,6 +1937,15 @@ void _spSequenceTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float
|
||||
}
|
||||
}
|
||||
|
||||
if (self->attachment->type == SP_ATTACHMENT_REGION) sequence = ((spRegionAttachment *) self->attachment)->sequence;
|
||||
if (self->attachment->type == SP_ATTACHMENT_MESH) sequence = ((spMeshAttachment *) self->attachment)->sequence;
|
||||
if (!sequence) return;
|
||||
|
||||
if (direction == SP_MIX_DIRECTION_OUT) {
|
||||
if (blend == SP_MIX_BLEND_SETUP) slot->sequenceIndex = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
frames = self->super.frames->items;
|
||||
if (time < frames[0]) { /* Time is before first frame. */
|
||||
if (blend == SP_MIX_BLEND_SETUP || blend == SP_MIX_BLEND_FIRST) slot->sequenceIndex = -1;
|
||||
@ -1948,9 +1957,6 @@ void _spSequenceTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float
|
||||
modeAndIndex = (int) frames[i + MODE];
|
||||
delay = frames[i + DELAY];
|
||||
|
||||
if (self->attachment->type == SP_ATTACHMENT_REGION) sequence = ((spRegionAttachment *) self->attachment)->sequence;
|
||||
if (self->attachment->type == SP_ATTACHMENT_MESH) sequence = ((spMeshAttachment *) self->attachment)->sequence;
|
||||
if (!sequence) return;
|
||||
index = modeAndIndex >> 4;
|
||||
count = sequence->regions->size;
|
||||
mode = modeAndIndex & 0xf;
|
||||
|
||||
@ -350,12 +350,12 @@ int /*boolean*/ _spAnimationState_updateMixingFrom(spAnimationState *self, spTra
|
||||
from->animationLast = from->nextAnimationLast;
|
||||
from->trackLast = from->nextTrackLast;
|
||||
|
||||
/* Require mixTime > 0 to ensure the mixing from entry was applied at least once. */
|
||||
if (to->mixTime > 0 && to->mixTime >= to->mixDuration) {
|
||||
/* Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). */
|
||||
// The from entry was applied at least once and the mix is complete.
|
||||
if (to->nextTrackLast != -1 && to->mixTime >= to->mixDuration) {
|
||||
// Mixing is complete for all entries before the from entry or the mix is instantaneous.
|
||||
if (from->totalAlpha == 0 || to->mixDuration == 0) {
|
||||
to->mixingFrom = from->mixingFrom;
|
||||
if (from->mixingFrom != 0) from->mixingFrom->mixingTo = to;
|
||||
if (from->mixingFrom) from->mixingFrom->mixingTo = to;
|
||||
to->interruptAlpha = from->interruptAlpha;
|
||||
_spEventQueue_end(internal->queue, from);
|
||||
}
|
||||
@ -852,10 +852,11 @@ spAnimationState_addAnimation(spAnimationState *self, int trackIndex, spAnimatio
|
||||
if (!last) {
|
||||
_spAnimationState_setCurrent(self, trackIndex, entry, 1);
|
||||
_spEventQueue_drain(internal->queue);
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last->next = entry;
|
||||
entry->previous = last;
|
||||
if (delay <= 0) delay += spTrackEntry_getTrackComplete(last) - entry->mixDuration;
|
||||
if (delay <= 0) delay = MAX(delay + spTrackEntry_getTrackComplete(last) - entry->mixDuration, 0);
|
||||
}
|
||||
|
||||
entry->delay = delay;
|
||||
@ -872,7 +873,7 @@ spTrackEntry *spAnimationState_setEmptyAnimation(spAnimationState *self, int tra
|
||||
spTrackEntry *
|
||||
spAnimationState_addEmptyAnimation(spAnimationState *self, int trackIndex, float mixDuration, float delay) {
|
||||
spTrackEntry *entry = spAnimationState_addAnimation(self, trackIndex, SP_EMPTY_ANIMATION, 0, delay);
|
||||
if (delay <= 0) entry->delay += entry->mixDuration - mixDuration;
|
||||
if (delay <= 0) entry->delay = MAX(entry->delay + entry->mixDuration - mixDuration, 0);
|
||||
entry->mixDuration = mixDuration;
|
||||
entry->trackEnd = mixDuration;
|
||||
return entry;
|
||||
@ -1061,7 +1062,12 @@ float spTrackEntry_getTrackComplete(spTrackEntry *entry) {
|
||||
|
||||
void spTrackEntry_setMixDuration(spTrackEntry *entry, float mixDuration, float delay) {
|
||||
entry->mixDuration = mixDuration;
|
||||
if (entry->previous && delay <= 0) delay += spTrackEntry_getTrackComplete(entry) - mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (entry->previous)
|
||||
delay = MAX(delay + spTrackEntry_getTrackComplete(entry->previous) - mixDuration, 0);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
entry->delay = delay;
|
||||
}
|
||||
|
||||
|
||||
@ -166,7 +166,7 @@ void spBone_updateWorldTransformWith(spBone *self, float x, float y, float rotat
|
||||
zc *= s;
|
||||
s = SQRT(za * za + zc * zc);
|
||||
if (self->inherit == SP_INHERIT_NOSCALE &&
|
||||
(pa * pd - pb * pc < 0) != (sx < 0 != sy < 0))
|
||||
(pa * pd - pb * pc < 0) != ((sx < 0) != (sy < 0)))
|
||||
s = -s;
|
||||
rotation = PI / 2 + ATAN2(zc, za);
|
||||
float zb = COS(rotation) * s;
|
||||
@ -281,7 +281,7 @@ void spBone_updateAppliedTransform(spBone *self) {
|
||||
pc *= s;
|
||||
s = SQRT(pa * pa + pc * pc);
|
||||
if (self->inherit == SP_INHERIT_NOSCALE &&
|
||||
pid < 0 != (self->skeleton->scaleX < 0 != (self->skeleton->scaleY * yDownScale) < 0))
|
||||
(pid < 0) != ((self->skeleton->scaleX < 0) != ((self->skeleton->scaleY * yDownScale) < 0)))
|
||||
s = -s;
|
||||
r = PI / 2 + ATAN2(pc, pa);
|
||||
pb = COS(r) * s;
|
||||
@ -341,7 +341,7 @@ void spBone_localToWorld(spBone *self, float localX, float localY, float *worldX
|
||||
}
|
||||
|
||||
void spBone_parentToWorld(spBone *self, float localX, float localY, float *worldX, float *worldY) {
|
||||
if (self->parent != NULL) {
|
||||
if (self->parent == NULL) {
|
||||
*worldX = localX;
|
||||
*worldY = localY;
|
||||
} else {
|
||||
|
||||
@ -208,11 +208,11 @@ void spDebug_printTimeline(spTimeline *timeline) {
|
||||
case SP_TIMELINE_SEQUENCE: {
|
||||
spSequenceTimeline *t = (spSequenceTimeline *) timeline;
|
||||
_spDebug_printTimelineBase(&t->super);
|
||||
}
|
||||
}// fallthrough
|
||||
case SP_TIMELINE_INHERIT: {
|
||||
spInheritTimeline *t = (spInheritTimeline *) timeline;
|
||||
_spDebug_printTimelineBase(&t->super);
|
||||
}
|
||||
}// fallthrough
|
||||
default: {
|
||||
_spDebug_printTimelineBase(timeline);
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ void spIkConstraint_apply1(spBone *bone, float targetX, float targetY, int /*boo
|
||||
pb = -sc * s * bone->skeleton->scaleX;
|
||||
pd = sa * s * bone->skeleton->scaleY;
|
||||
rotationIK += ATAN2(sc, sa) * RAD_DEG;
|
||||
}
|
||||
}// fallthrough
|
||||
default: {
|
||||
float x = targetX - p->worldX, y = targetY - p->worldY;
|
||||
float d = pa * pd - pb * pc;
|
||||
|
||||
@ -140,7 +140,7 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) {
|
||||
}
|
||||
if (a >= t) {
|
||||
float d = POW(self->damping, 60 * t);
|
||||
float m = self->massInverse * t, e = self->strength, w = self->wind * f, g = self->gravity * f * (spBone_isYDown() ? -1 : 1);
|
||||
float m = self->massInverse * t, e = self->strength, w = self->wind * f * self->skeleton->scaleX, g = -(self->gravity) * f * self->skeleton->scaleY;
|
||||
do {
|
||||
if (x) {
|
||||
self->xVelocity += (w - self->xOffset * e) * m;
|
||||
|
||||
@ -1178,11 +1178,6 @@ spAttachment *spSkeletonBinary_readAttachment(spSkeletonBinary *self, _dataInput
|
||||
return NULL;
|
||||
mesh = SUB_CAST(spMeshAttachment, attachment);
|
||||
mesh->path = (char *) path;
|
||||
if (mesh->path) {
|
||||
char *tmp = NULL;
|
||||
MALLOC_STR(tmp, mesh->path);
|
||||
mesh->path = tmp;
|
||||
}
|
||||
spColor_setFromColor(&mesh->color, &color);
|
||||
mesh->sequence = sequence;
|
||||
mesh->width = width;
|
||||
@ -1341,9 +1336,9 @@ spSkeletonData *spSkeletonBinary_readSkeletonData(spSkeletonBinary *self, const
|
||||
} else {
|
||||
if (!string_starts_with(skeletonData->version, SPINE_VERSION_STRING)) {
|
||||
FREE(input);
|
||||
spSkeletonData_dispose(skeletonData);
|
||||
char errorMsg[255];
|
||||
snprintf(errorMsg, 255, "Skeleton version %s does not match runtime version %s", skeletonData->version, SPINE_VERSION_STRING);
|
||||
spSkeletonData_dispose(skeletonData);
|
||||
_spSkeletonBinary_setError(self, errorMsg, NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -391,7 +391,7 @@ static spAnimation *_spSkeletonJson_readAnimation(spSkeletonJson *self, Json *ro
|
||||
|
||||
for (frame = 0, bezier = 0;; ++frame) {
|
||||
float time2;
|
||||
spRGBA2Timeline_setFrame(timeline, frame, time, color.r, color.g, color.b, color.a, color2.g,
|
||||
spRGBA2Timeline_setFrame(timeline, frame, time, color.r, color.g, color.b, color.a, color2.r,
|
||||
color2.g, color2.b);
|
||||
nextMap = keyMap->next;
|
||||
if (!nextMap) {
|
||||
|
||||
@ -62,7 +62,7 @@ bool SkeletonRendererSeparatorExample::init() {
|
||||
// Spineboy's front, doesn't manage any skeleton, animation or GPU resources, but simply
|
||||
// renders the back slots of Spineboy. The skeleton, animatio state and GPU resources
|
||||
// are shared with the front node!
|
||||
frontNode = SkeletonRenderer::createWithSkeleton(backNode->getSkeleton());
|
||||
frontNode = SkeletonRendererCocos2dX::createWithSkeleton(backNode->getSkeleton());
|
||||
frontNode->setSlotsRange(frontNode->findSlot("neck")->getData().getIndex(), -1);
|
||||
frontNode->setPosition(Vec2(_contentSize.width / 2, 20));
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ public:
|
||||
|
||||
private:
|
||||
spine::SkeletonAnimation *backNode;
|
||||
spine::SkeletonRenderer *frontNode;
|
||||
spine::SkeletonRendererCocos2dX *frontNode;
|
||||
cocos2d::DrawNode *betweenNode;
|
||||
};
|
||||
|
||||
|
||||
@ -2,44 +2,44 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PROJECT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon-57.png</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.esotericsoftware.spine</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PROJECT_NAME}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIAppFonts</key>
|
||||
<array/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<true/>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
</array>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2019. All rights reserved.</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PROJECT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon-57.png</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PROJECT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2019. All rights reserved.</string>
|
||||
<key>UIAppFonts</key>
|
||||
<array/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<true/>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@ -121,7 +121,7 @@ namespace spine {
|
||||
}
|
||||
|
||||
SkeletonAnimation::SkeletonAnimation()
|
||||
: SkeletonRenderer() {
|
||||
: SkeletonRendererCocos2dX() {
|
||||
}
|
||||
|
||||
SkeletonAnimation::~SkeletonAnimation() {
|
||||
|
||||
@ -48,7 +48,7 @@ namespace spine {
|
||||
|
||||
/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be
|
||||
* played later. */
|
||||
class SkeletonAnimation : public SkeletonRenderer {
|
||||
class SkeletonAnimation : public SkeletonRendererCocos2dX {
|
||||
public:
|
||||
CREATE_FUNC(SkeletonAnimation);
|
||||
static SkeletonAnimation *createWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
@ -125,7 +125,7 @@ namespace spine {
|
||||
UpdateWorldTransformsListener _postUpdateListener;
|
||||
|
||||
private:
|
||||
typedef SkeletonRenderer super;
|
||||
typedef SkeletonRendererCocos2dX super;
|
||||
};
|
||||
|
||||
}// namespace spine
|
||||
|
||||
@ -62,31 +62,31 @@ namespace spine {
|
||||
#define VLA_FREE(arr)
|
||||
#endif
|
||||
|
||||
SkeletonRenderer *SkeletonRenderer::createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData) {
|
||||
SkeletonRenderer *node = new SkeletonRenderer(skeleton, ownsSkeleton, ownsSkeletonData);
|
||||
SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData) {
|
||||
SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeleton, ownsSkeleton, ownsSkeletonData);
|
||||
node->autorelease();
|
||||
return node;
|
||||
}
|
||||
|
||||
SkeletonRenderer *SkeletonRenderer::createWithData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
SkeletonRenderer *node = new SkeletonRenderer(skeletonData, ownsSkeletonData);
|
||||
SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonData, ownsSkeletonData);
|
||||
node->autorelease();
|
||||
return node;
|
||||
}
|
||||
|
||||
SkeletonRenderer *SkeletonRenderer::createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
SkeletonRenderer *node = new SkeletonRenderer(skeletonDataFile, atlas, scale);
|
||||
SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonDataFile, atlas, scale);
|
||||
node->autorelease();
|
||||
return node;
|
||||
}
|
||||
|
||||
SkeletonRenderer *SkeletonRenderer::createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
SkeletonRenderer *node = new SkeletonRenderer(skeletonDataFile, atlasFile, scale);
|
||||
SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonDataFile, atlasFile, scale);
|
||||
node->autorelease();
|
||||
return node;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initialize() {
|
||||
void SkeletonRendererCocos2dX::initialize() {
|
||||
_clipper = new (__FILE__, __LINE__) SkeletonClipping();
|
||||
|
||||
_blendFunc = BlendFunc::ALPHA_PREMULTIPLIED;
|
||||
@ -98,7 +98,7 @@ namespace spine {
|
||||
_skeleton->updateWorldTransform(Physics_Update);
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setupGLProgramState(bool twoColorTintEnabled) {
|
||||
void SkeletonRendererCocos2dX::setupGLProgramState(bool twoColorTintEnabled) {
|
||||
#if COCOS2D_VERSION < 0x00040000
|
||||
if (twoColorTintEnabled) {
|
||||
setGLProgramState(SkeletonTwoColorBatch::getInstance()->getTwoColorTintProgramState());
|
||||
@ -109,36 +109,36 @@ namespace spine {
|
||||
#endif
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setSkeletonData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
void SkeletonRendererCocos2dX::setSkeletonData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
_skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData);
|
||||
_ownsSkeletonData = ownsSkeletonData;
|
||||
}
|
||||
|
||||
SkeletonRenderer::SkeletonRenderer()
|
||||
SkeletonRendererCocos2dX::SkeletonRendererCocos2dX()
|
||||
: _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits<int>::max()) {
|
||||
}
|
||||
|
||||
SkeletonRenderer::SkeletonRenderer(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas)
|
||||
SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas)
|
||||
: _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits<int>::max()) {
|
||||
initWithSkeleton(skeleton, ownsSkeleton, ownsSkeletonData, ownsAtlas);
|
||||
}
|
||||
|
||||
SkeletonRenderer::SkeletonRenderer(SkeletonData *skeletonData, bool ownsSkeletonData)
|
||||
SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(SkeletonData *skeletonData, bool ownsSkeletonData)
|
||||
: _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits<int>::max()) {
|
||||
initWithData(skeletonData, ownsSkeletonData);
|
||||
}
|
||||
|
||||
SkeletonRenderer::SkeletonRenderer(const std::string &skeletonDataFile, Atlas *atlas, float scale)
|
||||
SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(const std::string &skeletonDataFile, Atlas *atlas, float scale)
|
||||
: _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits<int>::max()) {
|
||||
initWithJsonFile(skeletonDataFile, atlas, scale);
|
||||
}
|
||||
|
||||
SkeletonRenderer::SkeletonRenderer(const std::string &skeletonDataFile, const std::string &atlasFile, float scale)
|
||||
SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(const std::string &skeletonDataFile, const std::string &atlasFile, float scale)
|
||||
: _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits<int>::max()) {
|
||||
initWithJsonFile(skeletonDataFile, atlasFile, scale);
|
||||
}
|
||||
|
||||
SkeletonRenderer::~SkeletonRenderer() {
|
||||
SkeletonRendererCocos2dX::~SkeletonRendererCocos2dX() {
|
||||
if (_ownsSkeletonData) delete _skeleton->getData();
|
||||
if (_ownsSkeleton) delete _skeleton;
|
||||
if (_ownsAtlas && _atlas) delete _atlas;
|
||||
@ -146,7 +146,7 @@ namespace spine {
|
||||
delete _clipper;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas) {
|
||||
void SkeletonRendererCocos2dX::initWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas) {
|
||||
_skeleton = skeleton;
|
||||
_ownsSkeleton = ownsSkeleton;
|
||||
_ownsSkeletonData = ownsSkeletonData;
|
||||
@ -154,13 +154,13 @@ namespace spine {
|
||||
initialize();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
void SkeletonRendererCocos2dX::initWithData(SkeletonData *skeletonData, bool ownsSkeletonData) {
|
||||
_ownsSkeleton = true;
|
||||
setSkeletonData(skeletonData, ownsSkeletonData);
|
||||
initialize();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithJsonFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
void SkeletonRendererCocos2dX::initWithJsonFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
_atlas = atlas;
|
||||
_attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas);
|
||||
|
||||
@ -175,7 +175,7 @@ namespace spine {
|
||||
initialize();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithJsonFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
void SkeletonRendererCocos2dX::initWithJsonFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
_atlas = new (__FILE__, __LINE__) Atlas(atlasFile.c_str(), &textureLoader, true);
|
||||
CCASSERT(_atlas, "Error reading atlas file.");
|
||||
|
||||
@ -193,7 +193,7 @@ namespace spine {
|
||||
initialize();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithBinaryFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
void SkeletonRendererCocos2dX::initWithBinaryFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) {
|
||||
_atlas = atlas;
|
||||
_attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas);
|
||||
|
||||
@ -207,7 +207,7 @@ namespace spine {
|
||||
initialize();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::initWithBinaryFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
void SkeletonRendererCocos2dX::initWithBinaryFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) {
|
||||
_atlas = new (__FILE__, __LINE__) Atlas(atlasFile.c_str(), &textureLoader, true);
|
||||
CCASSERT(_atlas, "Error reading atlas file.");
|
||||
|
||||
@ -225,11 +225,11 @@ namespace spine {
|
||||
}
|
||||
|
||||
|
||||
void SkeletonRenderer::update(float deltaTime) {
|
||||
void SkeletonRendererCocos2dX::update(float deltaTime) {
|
||||
Node::update(deltaTime);
|
||||
}
|
||||
|
||||
void SkeletonRenderer::draw(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) {
|
||||
void SkeletonRendererCocos2dX::draw(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) {
|
||||
// Early exit if the skeleton is invisible.
|
||||
if (getDisplayedOpacity() == 0 || _skeleton->getColor().a == 0) {
|
||||
return;
|
||||
@ -519,7 +519,7 @@ namespace spine {
|
||||
if (!sibling) {
|
||||
lastTwoColorTrianglesCommand->setForceFlush(true);
|
||||
} else {
|
||||
SkeletonRenderer *siblingSkeleton = dynamic_cast<SkeletonRenderer *>(sibling);
|
||||
SkeletonRendererCocos2dX *siblingSkeleton = dynamic_cast<SkeletonRendererCocos2dX *>(sibling);
|
||||
if (!siblingSkeleton || // flush is next sibling isn't a SkeletonRenderer
|
||||
!siblingSkeleton->isTwoColorTint() || // flush if next sibling isn't two color tinted
|
||||
!siblingSkeleton->isVisible() || // flush if next sibling is two color tinted but not visible
|
||||
@ -538,7 +538,7 @@ namespace spine {
|
||||
}
|
||||
|
||||
|
||||
void SkeletonRenderer::drawDebug(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) {
|
||||
void SkeletonRendererCocos2dX::drawDebug(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) {
|
||||
|
||||
#if !defined(USE_MATRIX_STACK_PROJECTION_ONLY)
|
||||
Director *director = Director::getInstance();
|
||||
@ -658,7 +658,7 @@ namespace spine {
|
||||
#endif
|
||||
}
|
||||
|
||||
cocos2d::Rect SkeletonRenderer::getBoundingBox() const {
|
||||
cocos2d::Rect SkeletonRendererCocos2dX::getBoundingBox() const {
|
||||
const int coordCount = computeTotalCoordCount(*_skeleton, _startSlotIndex, _endSlotIndex);
|
||||
if (coordCount == 0) return {0, 0, 0, 0};
|
||||
VLA(float, worldCoords, coordCount);
|
||||
@ -670,57 +670,57 @@ namespace spine {
|
||||
|
||||
// --- Convenience methods for Skeleton_* functions.
|
||||
|
||||
void SkeletonRenderer::updateWorldTransform(Physics physics) {
|
||||
void SkeletonRendererCocos2dX::updateWorldTransform(Physics physics) {
|
||||
_skeleton->updateWorldTransform(physics);
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setToSetupPose() {
|
||||
void SkeletonRendererCocos2dX::setToSetupPose() {
|
||||
_skeleton->setToSetupPose();
|
||||
}
|
||||
void SkeletonRenderer::setBonesToSetupPose() {
|
||||
void SkeletonRendererCocos2dX::setBonesToSetupPose() {
|
||||
_skeleton->setBonesToSetupPose();
|
||||
}
|
||||
void SkeletonRenderer::setSlotsToSetupPose() {
|
||||
void SkeletonRendererCocos2dX::setSlotsToSetupPose() {
|
||||
_skeleton->setSlotsToSetupPose();
|
||||
}
|
||||
|
||||
Bone *SkeletonRenderer::findBone(const std::string &boneName) const {
|
||||
Bone *SkeletonRendererCocos2dX::findBone(const std::string &boneName) const {
|
||||
return _skeleton->findBone(boneName.c_str());
|
||||
}
|
||||
|
||||
Slot *SkeletonRenderer::findSlot(const std::string &slotName) const {
|
||||
Slot *SkeletonRendererCocos2dX::findSlot(const std::string &slotName) const {
|
||||
return _skeleton->findSlot(slotName.c_str());
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setSkin(const std::string &skinName) {
|
||||
void SkeletonRendererCocos2dX::setSkin(const std::string &skinName) {
|
||||
_skeleton->setSkin(skinName.empty() ? 0 : skinName.c_str());
|
||||
}
|
||||
void SkeletonRenderer::setSkin(const char *skinName) {
|
||||
void SkeletonRendererCocos2dX::setSkin(const char *skinName) {
|
||||
_skeleton->setSkin(skinName);
|
||||
}
|
||||
|
||||
Attachment *SkeletonRenderer::getAttachment(const std::string &slotName, const std::string &attachmentName) const {
|
||||
Attachment *SkeletonRendererCocos2dX::getAttachment(const std::string &slotName, const std::string &attachmentName) const {
|
||||
return _skeleton->getAttachment(slotName.c_str(), attachmentName.c_str());
|
||||
}
|
||||
bool SkeletonRenderer::setAttachment(const std::string &slotName, const std::string &attachmentName) {
|
||||
bool SkeletonRendererCocos2dX::setAttachment(const std::string &slotName, const std::string &attachmentName) {
|
||||
bool result = _skeleton->getAttachment(slotName.c_str(), attachmentName.empty() ? 0 : attachmentName.c_str()) ? true : false;
|
||||
_skeleton->setAttachment(slotName.c_str(), attachmentName.empty() ? 0 : attachmentName.c_str());
|
||||
return result;
|
||||
}
|
||||
bool SkeletonRenderer::setAttachment(const std::string &slotName, const char *attachmentName) {
|
||||
bool SkeletonRendererCocos2dX::setAttachment(const std::string &slotName, const char *attachmentName) {
|
||||
bool result = _skeleton->getAttachment(slotName.c_str(), attachmentName) ? true : false;
|
||||
_skeleton->setAttachment(slotName.c_str(), attachmentName);
|
||||
return result;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setTwoColorTint(bool enabled) {
|
||||
void SkeletonRendererCocos2dX::setTwoColorTint(bool enabled) {
|
||||
#if COCOS2D_VERSION >= 0x00040000
|
||||
_twoColorTint = enabled;
|
||||
#endif
|
||||
setupGLProgramState(enabled);
|
||||
}
|
||||
|
||||
bool SkeletonRenderer::isTwoColorTint() {
|
||||
bool SkeletonRendererCocos2dX::isTwoColorTint() {
|
||||
#if COCOS2D_VERSION < 0x00040000
|
||||
return getGLProgramState() == SkeletonTwoColorBatch::getInstance()->getTwoColorTintProgramState();
|
||||
#else
|
||||
@ -728,52 +728,52 @@ namespace spine {
|
||||
#endif
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setSlotsRange(int startSlotIndex, int endSlotIndex) {
|
||||
void SkeletonRendererCocos2dX::setSlotsRange(int startSlotIndex, int endSlotIndex) {
|
||||
_startSlotIndex = startSlotIndex == -1 ? 0 : startSlotIndex;
|
||||
_endSlotIndex = endSlotIndex == -1 ? std::numeric_limits<int>::max() : endSlotIndex;
|
||||
}
|
||||
|
||||
Skeleton *SkeletonRenderer::getSkeleton() const {
|
||||
Skeleton *SkeletonRendererCocos2dX::getSkeleton() const {
|
||||
return _skeleton;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setTimeScale(float scale) {
|
||||
void SkeletonRendererCocos2dX::setTimeScale(float scale) {
|
||||
_timeScale = scale;
|
||||
}
|
||||
float SkeletonRenderer::getTimeScale() const {
|
||||
float SkeletonRendererCocos2dX::getTimeScale() const {
|
||||
return _timeScale;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setDebugSlotsEnabled(bool enabled) {
|
||||
void SkeletonRendererCocos2dX::setDebugSlotsEnabled(bool enabled) {
|
||||
_debugSlots = enabled;
|
||||
}
|
||||
bool SkeletonRenderer::getDebugSlotsEnabled() const {
|
||||
bool SkeletonRendererCocos2dX::getDebugSlotsEnabled() const {
|
||||
return _debugSlots;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setDebugBonesEnabled(bool enabled) {
|
||||
void SkeletonRendererCocos2dX::setDebugBonesEnabled(bool enabled) {
|
||||
_debugBones = enabled;
|
||||
}
|
||||
bool SkeletonRenderer::getDebugBonesEnabled() const {
|
||||
bool SkeletonRendererCocos2dX::getDebugBonesEnabled() const {
|
||||
return _debugBones;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setDebugMeshesEnabled(bool enabled) {
|
||||
void SkeletonRendererCocos2dX::setDebugMeshesEnabled(bool enabled) {
|
||||
_debugMeshes = enabled;
|
||||
}
|
||||
bool SkeletonRenderer::getDebugMeshesEnabled() const {
|
||||
bool SkeletonRendererCocos2dX::getDebugMeshesEnabled() const {
|
||||
return _debugMeshes;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setDebugBoundingRectEnabled(bool enabled) {
|
||||
void SkeletonRendererCocos2dX::setDebugBoundingRectEnabled(bool enabled) {
|
||||
_debugBoundingRect = enabled;
|
||||
}
|
||||
|
||||
bool SkeletonRenderer::getDebugBoundingRectEnabled() const {
|
||||
bool SkeletonRendererCocos2dX::getDebugBoundingRectEnabled() const {
|
||||
return _debugBoundingRect;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::onEnter() {
|
||||
void SkeletonRendererCocos2dX::onEnter() {
|
||||
#if CC_ENABLE_SCRIPT_BINDING && COCOS2D_VERSION < 0x00040000
|
||||
if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnEnter)) return;
|
||||
#endif
|
||||
@ -781,7 +781,7 @@ namespace spine {
|
||||
scheduleUpdate();
|
||||
}
|
||||
|
||||
void SkeletonRenderer::onExit() {
|
||||
void SkeletonRendererCocos2dX::onExit() {
|
||||
#if CC_ENABLE_SCRIPT_BINDING && COCOS2D_VERSION < 0x00040000
|
||||
if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnExit)) return;
|
||||
#endif
|
||||
@ -791,19 +791,19 @@ namespace spine {
|
||||
|
||||
// --- CCBlendProtocol
|
||||
|
||||
const BlendFunc &SkeletonRenderer::getBlendFunc() const {
|
||||
const BlendFunc &SkeletonRendererCocos2dX::getBlendFunc() const {
|
||||
return _blendFunc;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setBlendFunc(const BlendFunc &blendFunc) {
|
||||
void SkeletonRendererCocos2dX::setBlendFunc(const BlendFunc &blendFunc) {
|
||||
_blendFunc = blendFunc;
|
||||
}
|
||||
|
||||
void SkeletonRenderer::setOpacityModifyRGB(bool value) {
|
||||
void SkeletonRendererCocos2dX::setOpacityModifyRGB(bool value) {
|
||||
_premultipliedAlpha = value;
|
||||
}
|
||||
|
||||
bool SkeletonRenderer::isOpacityModifyRGB() const {
|
||||
bool SkeletonRendererCocos2dX::isOpacityModifyRGB() const {
|
||||
return _premultipliedAlpha;
|
||||
}
|
||||
|
||||
@ -38,13 +38,13 @@ namespace spine {
|
||||
class AttachmentVertices;
|
||||
|
||||
/* Draws a skeleton. */
|
||||
class SkeletonRenderer : public cocos2d::Node, public cocos2d::BlendProtocol {
|
||||
class SkeletonRendererCocos2dX : public cocos2d::Node, public cocos2d::BlendProtocol {
|
||||
public:
|
||||
CREATE_FUNC(SkeletonRenderer);
|
||||
static SkeletonRenderer *createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false);
|
||||
static SkeletonRenderer *createWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
static SkeletonRenderer *createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1);
|
||||
static SkeletonRenderer *createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1);
|
||||
CREATE_FUNC(SkeletonRendererCocos2dX);
|
||||
static SkeletonRendererCocos2dX *createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false);
|
||||
static SkeletonRendererCocos2dX *createWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
static SkeletonRendererCocos2dX *createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1);
|
||||
static SkeletonRendererCocos2dX *createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1);
|
||||
|
||||
void update(float deltaTime) override;
|
||||
void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t transformFlags) override;
|
||||
@ -111,13 +111,13 @@ namespace spine {
|
||||
void setOpacityModifyRGB(bool value) override;
|
||||
bool isOpacityModifyRGB() const override;
|
||||
|
||||
CC_CONSTRUCTOR_ACCESS : SkeletonRenderer();
|
||||
SkeletonRenderer(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false, bool ownsAtlas = false);
|
||||
SkeletonRenderer(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
SkeletonRenderer(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1);
|
||||
SkeletonRenderer(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1);
|
||||
CC_CONSTRUCTOR_ACCESS : SkeletonRendererCocos2dX();
|
||||
SkeletonRendererCocos2dX(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false, bool ownsAtlas = false);
|
||||
SkeletonRendererCocos2dX(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
SkeletonRendererCocos2dX(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1);
|
||||
SkeletonRendererCocos2dX(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1);
|
||||
|
||||
virtual ~SkeletonRenderer();
|
||||
virtual ~SkeletonRendererCocos2dX();
|
||||
|
||||
void initWithSkeleton(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false, bool ownsAtlas = false);
|
||||
void initWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false);
|
||||
@ -147,7 +147,7 @@ namespace spine {
|
||||
bool _debugBones;
|
||||
bool _debugMeshes;
|
||||
bool _debugBoundingRect;
|
||||
SkeletonClipping *_clipper;
|
||||
SkeletonClipping *_clipper;
|
||||
cocos2d::Rect _boundingRect;
|
||||
|
||||
int _startSlotIndex;
|
||||
@ -33,7 +33,7 @@
|
||||
#include "cocos2d.h"
|
||||
#include <spine/spine.h>
|
||||
|
||||
#include <spine/SkeletonRenderer.h>
|
||||
#include <spine/SkeletonRendererCocos2dX.h>
|
||||
|
||||
#if COCOS2D_VERSION < 0x00040000
|
||||
#include <spine/v3/SkeletonBatch.h>
|
||||
|
||||
@ -49,7 +49,8 @@ class MyTextureLoader : public spine::TextureLoader
|
||||
```
|
||||
|
||||
## Runtimes extending spine-cpp
|
||||
|
||||
- [spine-glfw](../spine-glfw)
|
||||
- [spine-sdl](../spine-sdl)
|
||||
- [spine-sfml](../spine-sfml/cpp)
|
||||
- [spine-cocos2dx](../spine-cocos2dx)
|
||||
- [spine-ue](../spine-ue)
|
||||
|
||||
@ -239,8 +239,6 @@ class SwiftFunctionBodyWriter:
|
||||
|
||||
if swift_return_type_is_array:
|
||||
body += self.write_array_call(num_function_name, function_call)
|
||||
body += inset + inset
|
||||
body += "}"
|
||||
else:
|
||||
if not self.spine_function.return_type == "void":
|
||||
body += "return "
|
||||
@ -305,24 +303,46 @@ class SwiftFunctionBodyWriter:
|
||||
function_call += " != 0"
|
||||
|
||||
return function_call
|
||||
|
||||
def write_array_call(self, num_function_name, function_call):
|
||||
array_call = f"let num = Int({num_function_name}({self.spine_object.var_name}))"
|
||||
|
||||
def write_array_spine_class(self, num_function_name, function_call):
|
||||
array_call = f"let ptr = {function_call}"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += f"let ptr = {function_call}"
|
||||
array_call += "guard let validPtr = ptr else { return [] }"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "return (0..<num).compactMap {"
|
||||
array_call += f"let num = Int({num_function_name}({self.spine_object.var_name}))"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "let buffer = UnsafeBufferPointer(start: validPtr, count: num)"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "return buffer.compactMap {"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset + inset
|
||||
|
||||
if self.spine_function.isReturningSpineClass():
|
||||
array_call += "ptr?[$0].flatMap { .init($0) }"
|
||||
else:
|
||||
array_call += "ptr?[$0]"
|
||||
|
||||
array_call += "$0.flatMap { .init($0) }"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "}"
|
||||
return array_call
|
||||
|
||||
def write_array_call(self, num_function_name, function_call):
|
||||
if self.spine_function.isReturningSpineClass():
|
||||
return self.write_array_spine_class(num_function_name, function_call)
|
||||
array_call = f"let ptr = {function_call}"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "guard let validPtr = ptr else { return [] }"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += f"let num = Int({num_function_name}({self.spine_object.var_name}))"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
|
||||
array_call += "let buffer = UnsafeBufferPointer(start: validPtr, count: num)"
|
||||
array_call += "\n"
|
||||
array_call += inset + inset
|
||||
array_call += "return Array(buffer)"
|
||||
return array_call
|
||||
|
||||
def write_dispose_call(self):
|
||||
@ -419,6 +439,7 @@ class SwiftFunctionWriter:
|
||||
if spine_params and spine_params[0].type == self.spine_object.name:
|
||||
spine_params_without_ivar = spine_params[1:]
|
||||
else:
|
||||
function_string = function_string.replace("public func ", "public static func ")
|
||||
spine_params_without_ivar = spine_params
|
||||
|
||||
swift_params = [
|
||||
@ -481,6 +502,39 @@ class SwiftObjectWriter:
|
||||
object_string += "\n"
|
||||
object_string += "\n"
|
||||
|
||||
object_string += inset
|
||||
object_string += "public override func isEqual(_ object: Any?) -> Bool"
|
||||
object_string += " {"
|
||||
object_string += "\n"
|
||||
object_string += inset + inset
|
||||
object_string += f"guard let other = object as? {class_name} else {{ return false }}"
|
||||
object_string += "\n"
|
||||
object_string += inset + inset
|
||||
object_string += f"return self.{ivar_name} == other.{ivar_name}"
|
||||
object_string += "\n"
|
||||
object_string += inset
|
||||
object_string += "}"
|
||||
object_string += "\n"
|
||||
object_string += "\n"
|
||||
|
||||
object_string += inset
|
||||
object_string += "public override var hash: Int"
|
||||
object_string += " {"
|
||||
object_string += "\n"
|
||||
object_string += inset + inset
|
||||
object_string += "var hasher = Hasher()"
|
||||
object_string += "\n"
|
||||
object_string += inset + inset
|
||||
object_string += f"hasher.combine(self.{ivar_name})"
|
||||
object_string += "\n"
|
||||
object_string += inset + inset
|
||||
object_string += "return hasher.finalize()"
|
||||
object_string += "\n"
|
||||
object_string += inset
|
||||
object_string += "}"
|
||||
object_string += "\n"
|
||||
object_string += "\n"
|
||||
|
||||
filtered_spine_functions = [spine_function for spine_function in self.spine_object.functions if not "_get_num_" in spine_function.name]
|
||||
|
||||
spine_functions_by_name = {}
|
||||
|
||||
@ -206,6 +206,44 @@ spine_atlas spine_atlas_load(const utf8 *atlasData) {
|
||||
return (spine_atlas) result;
|
||||
}
|
||||
|
||||
class CallbackTextureLoad : public TextureLoader {
|
||||
spine_texture_loader_load_func loadCb;
|
||||
spine_texture_loader_unload_func unloadCb;
|
||||
|
||||
public:
|
||||
CallbackTextureLoad() : loadCb(nullptr), unloadCb(nullptr) {}
|
||||
|
||||
void setCallbacks(spine_texture_loader_load_func load, spine_texture_loader_unload_func unload) {
|
||||
loadCb = load;
|
||||
unloadCb = unload;
|
||||
}
|
||||
|
||||
void load(AtlasPage &page, const String &path) {
|
||||
page.texture = this->loadCb(path.buffer());
|
||||
}
|
||||
|
||||
void unload(void *texture) {
|
||||
this->unloadCb(texture);
|
||||
}
|
||||
};
|
||||
|
||||
CallbackTextureLoad callbackLoader;
|
||||
|
||||
spine_atlas spine_atlas_load_callback(const utf8 *atlasData, const utf8 *atlasDir, spine_texture_loader_load_func load, spine_texture_loader_unload_func unload) {
|
||||
if (!atlasData) return nullptr;
|
||||
int32_t length = (int32_t) strlen(atlasData);
|
||||
callbackLoader.setCallbacks(load, unload);
|
||||
auto atlas = new (__FILE__, __LINE__) Atlas(atlasData, length, (const char *) atlasDir, &callbackLoader, true);
|
||||
_spine_atlas *result = SpineExtension::calloc<_spine_atlas>(1, __FILE__, __LINE__);
|
||||
result->atlas = atlas;
|
||||
result->numImagePaths = (int32_t) atlas->getPages().size();
|
||||
result->imagePaths = SpineExtension::calloc<utf8 *>(result->numImagePaths, __FILE__, __LINE__);
|
||||
for (int i = 0; i < result->numImagePaths; i++) {
|
||||
result->imagePaths[i] = (utf8 *) strdup(atlas->getPages()[i]->texturePath.buffer());
|
||||
}
|
||||
return (spine_atlas) result;
|
||||
}
|
||||
|
||||
int32_t spine_atlas_get_num_image_paths(spine_atlas atlas) {
|
||||
if (!atlas) return 0;
|
||||
return ((_spine_atlas *) atlas)->numImagePaths;
|
||||
@ -2424,6 +2462,16 @@ spine_attachment spine_attachment_copy(spine_attachment attachment) {
|
||||
return (spine_attachment) _attachment->copy();
|
||||
}
|
||||
|
||||
spine_bounding_box_attachment spine_attachment_cast_to_bounding_box_attachment(spine_attachment attachment) {
|
||||
if (attachment == nullptr) return nullptr;
|
||||
Attachment *_attachment = (Attachment *) attachment;
|
||||
if (_attachment->getRTTI().isExactly(BoundingBoxAttachment::rtti)) {
|
||||
BoundingBoxAttachment *boundingBox = static_cast<BoundingBoxAttachment *>(_attachment);
|
||||
return (spine_bounding_box_attachment) boundingBox;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void spine_attachment_dispose(spine_attachment attachment) {
|
||||
if (attachment == nullptr) return;
|
||||
Attachment *_attachment = (Attachment *) attachment;
|
||||
@ -2959,7 +3007,10 @@ spine_skin_entries spine_skin_get_entries(spine_skin skin) {
|
||||
_spine_skin_entries *entries = SpineExtension::getInstance()->calloc<_spine_skin_entries>(1, __FILE__, __LINE__);
|
||||
{
|
||||
Skin::AttachmentMap::Entries mapEntries = _skin->getAttachments();
|
||||
while (mapEntries.hasNext()) entries->numEntries++;
|
||||
while (mapEntries.hasNext()) {
|
||||
entries->numEntries++;
|
||||
mapEntries.next();
|
||||
}
|
||||
}
|
||||
{
|
||||
entries->entries = SpineExtension::getInstance()->calloc<_spine_skin_entry>(entries->numEntries, __FILE__, __LINE__);
|
||||
@ -4681,3 +4732,112 @@ void spine_texture_region_set_original_height(spine_texture_region textureRegion
|
||||
TextureRegion *_region = (TextureRegion *) textureRegion;
|
||||
_region->originalHeight = originalHeight;
|
||||
}
|
||||
|
||||
spine_skeleton_bounds spine_skeleton_bounds_create() {
|
||||
return (spine_skeleton_bounds) new (__FILE__, __LINE__) SkeletonBounds();
|
||||
}
|
||||
|
||||
void spine_skeleton_bounds_dispose(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return;
|
||||
SkeletonBounds *_bounds = (SkeletonBounds *) bounds;
|
||||
delete _bounds;
|
||||
}
|
||||
|
||||
void spine_skeleton_bounds_update(spine_skeleton_bounds bounds, spine_skeleton skeleton, spine_bool updateAabb) {
|
||||
if (bounds == nullptr) return;
|
||||
if (skeleton == nullptr) return;
|
||||
|
||||
SkeletonBounds *_bounds = (SkeletonBounds *) bounds;
|
||||
Skeleton *_skeleton = (Skeleton *) skeleton;
|
||||
_bounds->update(*_skeleton, updateAabb != 0);
|
||||
}
|
||||
|
||||
spine_bool spine_skeleton_bounds_aabb_contains_point(spine_skeleton_bounds bounds, float x, float y) {
|
||||
if (bounds == nullptr) return false;
|
||||
return ((SkeletonBounds *) bounds)->aabbcontainsPoint(x, y);
|
||||
}
|
||||
|
||||
spine_bool spine_skeleton_bounds_aabb_intersects_segment(spine_skeleton_bounds bounds, float x1, float y1, float x2, float y2) {
|
||||
if (bounds == nullptr) return false;
|
||||
return ((SkeletonBounds *) bounds)->aabbintersectsSegment(x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
spine_bool spine_skeleton_bounds_aabb_intersects_skeleton(spine_skeleton_bounds bounds, spine_skeleton_bounds otherBounds) {
|
||||
if (bounds == nullptr) return false;
|
||||
if (otherBounds == nullptr) return false;
|
||||
return ((SkeletonBounds *) bounds)->aabbIntersectsSkeleton(*((SkeletonBounds *) bounds));
|
||||
}
|
||||
|
||||
spine_bool spine_skeleton_bounds_contains_point(spine_skeleton_bounds bounds, spine_polygon polygon, float x, float y) {
|
||||
if (bounds == nullptr) return false;
|
||||
if (polygon == nullptr) return false;
|
||||
return ((SkeletonBounds *) bounds)->containsPoint((Polygon *) polygon, x, y);
|
||||
}
|
||||
|
||||
spine_bounding_box_attachment spine_skeleton_bounds_contains_point_attachment(spine_skeleton_bounds bounds, float x, float y) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
return (spine_bounding_box_attachment) ((SkeletonBounds *) bounds)->containsPoint(x, y);
|
||||
}
|
||||
|
||||
spine_bounding_box_attachment spine_skeleton_bounds_intersects_segment_attachment(spine_skeleton_bounds bounds, float x1, float y1, float x2, float y2) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
return (spine_bounding_box_attachment) ((SkeletonBounds *) bounds)->intersectsSegment(x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
spine_bool spine_skeleton_bounds_intersects_segment(spine_skeleton_bounds bounds, spine_polygon polygon, float x1, float y1, float x2, float y2) {
|
||||
if (bounds == nullptr) return false;
|
||||
if (polygon == nullptr) return false;
|
||||
return ((SkeletonBounds *) bounds)->intersectsSegment((Polygon *) polygon, x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
spine_polygon spine_skeleton_bounds_get_polygon(spine_skeleton_bounds bounds, spine_bounding_box_attachment attachment) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
if (attachment == nullptr) return nullptr;
|
||||
return (spine_polygon) ((SkeletonBounds *) bounds)->getPolygon((BoundingBoxAttachment *) attachment);
|
||||
}
|
||||
|
||||
spine_bounding_box_attachment spine_skeleton_bounds_get_bounding_box(spine_skeleton_bounds bounds, spine_polygon polygon) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
if (polygon == nullptr) return nullptr;
|
||||
return (spine_bounding_box_attachment) ((SkeletonBounds *) bounds)->getBoundingBox((Polygon *) polygon);
|
||||
}
|
||||
|
||||
int32_t spine_skeleton_bounds_get_num_polygons(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return 0;
|
||||
return (int32_t) ((SkeletonBounds *) bounds)->getPolygons().size();
|
||||
}
|
||||
|
||||
spine_polygon *spine_skeleton_bounds_get_polygons(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
return (spine_polygon *) ((SkeletonBounds *) bounds)->getPolygons().buffer();
|
||||
}
|
||||
|
||||
int32_t spine_skeleton_bounds_get_num_bounding_boxes(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return 0;
|
||||
return (int32_t) ((SkeletonBounds *) bounds)->getBoundingBoxes().size();
|
||||
}
|
||||
|
||||
spine_bounding_box_attachment *spine_skeleton_bounds_get_bounding_boxes(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return nullptr;
|
||||
return (spine_bounding_box_attachment *) ((SkeletonBounds *) bounds)->getBoundingBoxes().buffer();
|
||||
}
|
||||
|
||||
float spine_skeleton_bounds_get_width(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return 0;
|
||||
return ((SkeletonBounds *) bounds)->getWidth();
|
||||
}
|
||||
|
||||
float spine_skeleton_bounds_get_height(spine_skeleton_bounds bounds) {
|
||||
if (bounds == nullptr) return 0;
|
||||
return ((SkeletonBounds *) bounds)->getHeight();
|
||||
}
|
||||
|
||||
int32_t spine_polygon_get_num_vertices(spine_polygon polygon) {
|
||||
if (polygon == nullptr) return 0;
|
||||
return ((Polygon *) polygon)->_vertices.size();
|
||||
}
|
||||
|
||||
float *spine_polygon_get_vertices(spine_polygon polygon) {
|
||||
if (polygon == nullptr) return 0;
|
||||
return ((Polygon *) polygon)->_vertices.buffer();
|
||||
}
|
||||
|
||||
@ -104,6 +104,8 @@ SPINE_OPAQUE_TYPE(spine_vector)
|
||||
SPINE_OPAQUE_TYPE(spine_skeleton_drawable)
|
||||
SPINE_OPAQUE_TYPE(spine_skin_entry)
|
||||
SPINE_OPAQUE_TYPE(spine_skin_entries)
|
||||
SPINE_OPAQUE_TYPE(spine_skeleton_bounds)
|
||||
SPINE_OPAQUE_TYPE(spine_polygon)
|
||||
|
||||
// @end: opaque_types
|
||||
|
||||
@ -187,6 +189,10 @@ typedef enum spine_physics {
|
||||
|
||||
typedef int32_t spine_bool;
|
||||
|
||||
typedef void* (*spine_texture_loader_load_func)(const char *path);
|
||||
|
||||
typedef void (*spine_texture_loader_unload_func)(void *texture);
|
||||
|
||||
// @start: function_declarations
|
||||
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_major_version();
|
||||
@ -208,6 +214,8 @@ SPINE_CPP_LITE_EXPORT float spine_vector_get_x(spine_vector vector);
|
||||
SPINE_CPP_LITE_EXPORT float spine_vector_get_y(spine_vector vector);
|
||||
|
||||
SPINE_CPP_LITE_EXPORT spine_atlas spine_atlas_load(const utf8 *atlasData);
|
||||
// @ignore
|
||||
SPINE_CPP_LITE_EXPORT spine_atlas spine_atlas_load_callback(const utf8 *atlasData, const utf8 *atlasDir, spine_texture_loader_load_func load, spine_texture_loader_unload_func unload);
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_atlas_get_num_image_paths(spine_atlas atlas);
|
||||
SPINE_CPP_LITE_EXPORT utf8 *spine_atlas_get_image_path(spine_atlas atlas, int32_t index);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_atlas_is_pma(spine_atlas atlas);
|
||||
@ -263,7 +271,7 @@ SPINE_CPP_LITE_EXPORT void spine_skeleton_data_set_width(spine_skeleton_data dat
|
||||
SPINE_CPP_LITE_EXPORT float spine_skeleton_data_get_height(spine_skeleton_data data);
|
||||
SPINE_CPP_LITE_EXPORT void spine_skeleton_data_set_height(spine_skeleton_data data, float height);
|
||||
SPINE_CPP_LITE_EXPORT const utf8 *spine_skeleton_data_get_version(spine_skeleton_data data);
|
||||
// OMITTED setVersion()
|
||||
// OMITTED setVersion()
|
||||
// @ignore
|
||||
SPINE_CPP_LITE_EXPORT const utf8 *spine_skeleton_data_get_hash(spine_skeleton_data data);
|
||||
// OMITTED setHash()
|
||||
@ -628,6 +636,8 @@ SPINE_CPP_LITE_EXPORT const utf8 *spine_attachment_get_name(spine_attachment att
|
||||
SPINE_CPP_LITE_EXPORT spine_attachment_type spine_attachment_get_type(spine_attachment attachment);
|
||||
// @ignore
|
||||
SPINE_CPP_LITE_EXPORT spine_attachment spine_attachment_copy(spine_attachment attachment);
|
||||
// @optional
|
||||
SPINE_CPP_LITE_EXPORT spine_bounding_box_attachment spine_attachment_cast_to_bounding_box_attachment(spine_attachment attachment);
|
||||
SPINE_CPP_LITE_EXPORT void spine_attachment_dispose(spine_attachment attachment);
|
||||
|
||||
SPINE_CPP_LITE_EXPORT spine_vector spine_point_attachment_compute_world_position(spine_point_attachment attachment, spine_bone bone);
|
||||
@ -1047,6 +1057,29 @@ SPINE_CPP_LITE_EXPORT void spine_texture_region_set_original_width(spine_texture
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_texture_region_get_original_height(spine_texture_region textureRegion);
|
||||
SPINE_CPP_LITE_EXPORT void spine_texture_region_set_original_height(spine_texture_region textureRegion, int32_t originalHeight);
|
||||
|
||||
// @ignore
|
||||
SPINE_CPP_LITE_EXPORT spine_skeleton_bounds spine_skeleton_bounds_create();
|
||||
SPINE_CPP_LITE_EXPORT void spine_skeleton_bounds_dispose(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT void spine_skeleton_bounds_update(spine_skeleton_bounds bounds, spine_skeleton skeleton, spine_bool updateAabb);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_skeleton_bounds_aabb_contains_point(spine_skeleton_bounds bounds, float x, float y);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_skeleton_bounds_aabb_intersects_segment(spine_skeleton_bounds bounds, float x1, float y1, float x2, float y2);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_skeleton_bounds_aabb_intersects_skeleton(spine_skeleton_bounds bounds, spine_skeleton_bounds otherBounds);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_skeleton_bounds_contains_point(spine_skeleton_bounds bounds, spine_polygon polygon, float x, float y);
|
||||
SPINE_CPP_LITE_EXPORT spine_bounding_box_attachment spine_skeleton_bounds_contains_point_attachment(spine_skeleton_bounds bounds, float x, float y);
|
||||
SPINE_CPP_LITE_EXPORT spine_bounding_box_attachment spine_skeleton_bounds_intersects_segment_attachment(spine_skeleton_bounds bounds, float x1, float y1, float x2, float y2);
|
||||
SPINE_CPP_LITE_EXPORT spine_bool spine_skeleton_bounds_intersects_segment(spine_skeleton_bounds bounds, spine_polygon polygon, float x1, float y1, float x2, float y2);
|
||||
SPINE_CPP_LITE_EXPORT spine_polygon spine_skeleton_bounds_get_polygon(spine_skeleton_bounds bounds, spine_bounding_box_attachment attachment);
|
||||
SPINE_CPP_LITE_EXPORT spine_bounding_box_attachment spine_skeleton_bounds_get_bounding_box(spine_skeleton_bounds bounds, spine_polygon polygon);
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_skeleton_bounds_get_num_polygons(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT spine_polygon *spine_skeleton_bounds_get_polygons(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_skeleton_bounds_get_num_bounding_boxes(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT spine_bounding_box_attachment *spine_skeleton_bounds_get_bounding_boxes(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT float spine_skeleton_bounds_get_width(spine_skeleton_bounds bounds);
|
||||
SPINE_CPP_LITE_EXPORT float spine_skeleton_bounds_get_height(spine_skeleton_bounds bounds);
|
||||
|
||||
SPINE_CPP_LITE_EXPORT int32_t spine_polygon_get_num_vertices(spine_polygon polygon);
|
||||
SPINE_CPP_LITE_EXPORT float *spine_polygon_get_vertices(spine_polygon polygon);
|
||||
|
||||
// @end: function_declarations
|
||||
|
||||
#endif
|
||||
|
||||
@ -77,7 +77,10 @@ namespace spine {
|
||||
}
|
||||
|
||||
void compress() {
|
||||
if (blocks.size() == 1) return;
|
||||
if (blocks.size() == 1) {
|
||||
blocks[0].allocated = 0;
|
||||
return;
|
||||
}
|
||||
int totalSize = 0;
|
||||
for (int i = 0, n = (int)blocks.size(); i < n; i++) {
|
||||
totalSize += blocks[i].size;
|
||||
|
||||
@ -61,7 +61,7 @@ namespace spine {
|
||||
static const int ENTRIES = 4;
|
||||
static const int ROTATE = 1;
|
||||
static const int X = 2;
|
||||
static const int Y = 2;
|
||||
static const int Y = 3;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -65,7 +65,7 @@ namespace spine {
|
||||
bool aabbintersectsSegment(float x1, float y1, float x2, float y2);
|
||||
|
||||
/// Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds.
|
||||
bool aabbIntersectsSkeleton(SkeletonBounds bounds);
|
||||
bool aabbIntersectsSkeleton(SkeletonBounds &bounds);
|
||||
|
||||
/// Returns true if the polygon contains the point.
|
||||
bool containsPoint(Polygon *polygon, float x, float y);
|
||||
|
||||
@ -179,7 +179,7 @@ namespace spine {
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool startsWith(const String &needle) {
|
||||
bool startsWith(const String &needle) const {
|
||||
if (needle.length() > length()) return false;
|
||||
for (int i = 0; i < (int)needle.length(); i++) {
|
||||
if (buffer()[i] != needle.buffer()[i]) return false;
|
||||
@ -187,7 +187,7 @@ namespace spine {
|
||||
return true;
|
||||
}
|
||||
|
||||
int lastIndexOf(const char c) {
|
||||
int lastIndexOf(const char c) const {
|
||||
for (int i = (int)length() - 1; i >= 0; i--) {
|
||||
if (buffer()[i] == c) return i;
|
||||
}
|
||||
|
||||
@ -39,6 +39,9 @@ namespace spine {
|
||||
template<typename T>
|
||||
class SP_API Vector : public SpineObject {
|
||||
public:
|
||||
using size_type = size_t;
|
||||
using value_type = T;
|
||||
|
||||
Vector() : _size(0), _capacity(0), _buffer(NULL) {
|
||||
}
|
||||
|
||||
@ -77,7 +80,11 @@ namespace spine {
|
||||
size_t oldSize = _size;
|
||||
_size = newSize;
|
||||
if (_capacity < newSize) {
|
||||
_capacity = (int) (_size * 1.75f);
|
||||
if (_capacity == 0) {
|
||||
_capacity = _size;
|
||||
} else {
|
||||
_capacity = (int) (_size * 1.75f);
|
||||
}
|
||||
if (_capacity < 8) _capacity = 8;
|
||||
_buffer = spine::SpineExtension::realloc<T>(_buffer, _capacity, __FILE__, __LINE__);
|
||||
}
|
||||
@ -85,6 +92,10 @@ namespace spine {
|
||||
for (size_t i = oldSize; i < _size; i++) {
|
||||
construct(_buffer + i, defaultValue);
|
||||
}
|
||||
} else {
|
||||
for (size_t i = _size; i < oldSize; i++) {
|
||||
destroy(_buffer + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -110,14 +121,14 @@ namespace spine {
|
||||
}
|
||||
}
|
||||
|
||||
inline void addAll(Vector<T> &inValue) {
|
||||
inline void addAll(const Vector<T> &inValue) {
|
||||
ensureCapacity(this->size() + inValue.size());
|
||||
for (size_t i = 0; i < inValue.size(); i++) {
|
||||
add(inValue[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void clearAndAddAll(Vector<T> &inValue) {
|
||||
inline void clearAndAddAll(const Vector<T> &inValue) {
|
||||
this->clear();
|
||||
this->addAll(inValue);
|
||||
}
|
||||
@ -164,6 +175,12 @@ namespace spine {
|
||||
return _buffer[inIndex];
|
||||
}
|
||||
|
||||
inline const T &operator[](size_t inIndex) const {
|
||||
assert(inIndex < _size);
|
||||
|
||||
return _buffer[inIndex];
|
||||
}
|
||||
|
||||
inline friend bool operator==(Vector<T> &lhs, Vector<T> &rhs) {
|
||||
if (lhs.size() != rhs.size()) {
|
||||
return false;
|
||||
@ -182,6 +199,13 @@ namespace spine {
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
Vector &operator=(const Vector &inVector) {
|
||||
if (this != &inVector) {
|
||||
clearAndAddAll(inVector);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline T *buffer() {
|
||||
return _buffer;
|
||||
}
|
||||
@ -215,7 +239,6 @@ namespace spine {
|
||||
buffer->~T();
|
||||
}
|
||||
|
||||
// Vector &operator=(const Vector &inVector) {};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -164,7 +164,12 @@ void TrackEntry::setMixDuration(float inValue) { _mixDuration = inValue; }
|
||||
|
||||
void TrackEntry::setMixDuration(float mixDuration, float delay) {
|
||||
_mixDuration = mixDuration;
|
||||
if (_previous && delay <= 0) delay += _previous->getTrackComplete() - mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (_previous != nullptr)
|
||||
delay = MathUtil::max(delay + _previous->getTrackComplete() - mixDuration, 0.0f);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
this->_delay = delay;
|
||||
}
|
||||
|
||||
@ -606,10 +611,11 @@ TrackEntry *AnimationState::addAnimation(size_t trackIndex, Animation *animation
|
||||
if (last == NULL) {
|
||||
setCurrent(trackIndex, entry, true);
|
||||
_queue->drain();
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last->_next = entry;
|
||||
entry->_previous = last;
|
||||
if (delay <= 0) delay += last->getTrackComplete() - entry->_mixDuration;
|
||||
if (delay <= 0) delay = MathUtil::max(delay + last->getTrackComplete() - entry->_mixDuration, 0.0f);
|
||||
}
|
||||
|
||||
entry->_delay = delay;
|
||||
@ -625,7 +631,7 @@ TrackEntry *AnimationState::setEmptyAnimation(size_t trackIndex, float mixDurati
|
||||
|
||||
TrackEntry *AnimationState::addEmptyAnimation(size_t trackIndex, float mixDuration, float delay) {
|
||||
TrackEntry *entry = addAnimation(trackIndex, AnimationState::getEmptyAnimation(), false, delay);
|
||||
if (delay <= 0) entry->_delay += entry->_mixDuration - mixDuration;
|
||||
if (delay <= 0) entry->_delay = MathUtil::max(entry->_delay + entry->_mixDuration - mixDuration, 0.0f);
|
||||
entry->_mixDuration = mixDuration;
|
||||
entry->_trackEnd = mixDuration;
|
||||
return entry;
|
||||
@ -794,12 +800,12 @@ bool AnimationState::updateMixingFrom(TrackEntry *to, float delta) {
|
||||
from->_animationLast = from->_nextAnimationLast;
|
||||
from->_trackLast = from->_nextTrackLast;
|
||||
|
||||
// Require mixTime > 0 to ensure the mixing from entry was applied at least once.
|
||||
if (to->_mixTime > 0 && to->_mixTime >= to->_mixDuration) {
|
||||
// Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame).
|
||||
// The from entry was applied at least once and the mix is complete.
|
||||
if (to->_nextTrackLast != -1 && to->_mixTime >= to->_mixDuration) {
|
||||
// Mixing is complete for all entries before the from entry or the mix is instantaneous.
|
||||
if (from->_totalAlpha == 0 || to->_mixDuration == 0) {
|
||||
to->_mixingFrom = from->_mixingFrom;
|
||||
if (from->_mixingFrom != NULL) from->_mixingFrom->_mixingTo = to;
|
||||
if (from->_mixingFrom) from->_mixingFrom->_mixingTo = to;
|
||||
to->_interruptAlpha = from->_interruptAlpha;
|
||||
_queue->end(from);
|
||||
}
|
||||
|
||||
@ -77,5 +77,5 @@ void InheritTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vect
|
||||
return;
|
||||
}
|
||||
int idx = Animation::search(_frames, time, ENTRIES) + INHERIT;
|
||||
bone->_inherit = (Inherit) _frames[idx];
|
||||
bone->_inherit = static_cast<Inherit>(_frames[idx]);
|
||||
}
|
||||
|
||||
@ -352,7 +352,7 @@ void PhysicsConstraint::update(Physics physics) {
|
||||
}
|
||||
if (a >= t) {
|
||||
float d = MathUtil::pow(_damping, 60 * t);
|
||||
float m = _massInverse * t, e = _strength, w = _wind * f, g = _gravity * f * (Bone::yDown ? -1 : 1);
|
||||
float m = _massInverse * t, e = _strength, w = _wind * f * _skeleton.getScaleX(), g = _gravity * f * _skeleton.getScaleY();
|
||||
do {
|
||||
if (x) {
|
||||
_xVelocity += (w - _xOffset * e) * m;
|
||||
|
||||
@ -95,6 +95,7 @@ void PhysicsConstraintResetTimeline::apply(Skeleton &skeleton, float lastTime, f
|
||||
else {
|
||||
Vector<PhysicsConstraint *> &physicsConstraints = skeleton.getPhysicsConstraints();
|
||||
for (size_t i = 0; i < physicsConstraints.size(); i++) {
|
||||
constraint = physicsConstraints[i];
|
||||
if (constraint->_active) constraint->reset();
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,6 +74,15 @@ void SequenceTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vec
|
||||
if (slotAttachment != _attachment) {
|
||||
if (slotAttachment == NULL || !slotAttachment->getRTTI().instanceOf(VertexAttachment::rtti) || ((VertexAttachment *) slotAttachment)->getTimelineAttachment() != _attachment) return;
|
||||
}
|
||||
Sequence *sequence = NULL;
|
||||
if (_attachment->getRTTI().instanceOf(RegionAttachment::rtti)) sequence = ((RegionAttachment *) _attachment)->getSequence();
|
||||
if (_attachment->getRTTI().instanceOf(MeshAttachment::rtti)) sequence = ((MeshAttachment *) _attachment)->getSequence();
|
||||
if (!sequence) return;
|
||||
|
||||
if (direction == MixDirection_Out) {
|
||||
if (blend == MixBlend_Setup) slot->setSequenceIndex(-1);
|
||||
return;
|
||||
}
|
||||
|
||||
Vector<float> &frames = this->_frames;
|
||||
if (time < frames[0]) {// Time is before first frame.
|
||||
@ -86,10 +95,6 @@ void SequenceTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vec
|
||||
int modeAndIndex = (int) frames[i + MODE];
|
||||
float delay = frames[i + DELAY];
|
||||
|
||||
Sequence *sequence = NULL;
|
||||
if (_attachment->getRTTI().instanceOf(RegionAttachment::rtti)) sequence = ((RegionAttachment *) _attachment)->getSequence();
|
||||
if (_attachment->getRTTI().instanceOf(MeshAttachment::rtti)) sequence = ((MeshAttachment *) _attachment)->getSequence();
|
||||
if (!sequence) return;
|
||||
int index = modeAndIndex >> 4, count = (int) sequence->getRegions().size();
|
||||
int mode = modeAndIndex & 0xf;
|
||||
if (mode != SequenceMode::hold) {
|
||||
|
||||
@ -507,6 +507,7 @@ void Skeleton::getBounds(float &outX, float &outY, float &outWidth,
|
||||
} else if (attachment != NULL &&
|
||||
attachment->getRTTI().instanceOf(ClippingAttachment::rtti) && clipper != NULL) {
|
||||
clipper->clipStart(*slot, static_cast<ClippingAttachment *>(attachment));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (verticesLength > 0) {
|
||||
|
||||
@ -608,8 +608,8 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return NULL;
|
||||
}
|
||||
readVertices(input, box->getVertices(), box->getBones(), (flags & 16) != 0);
|
||||
box->setWorldVerticesLength(box->getVertices().size());
|
||||
int verticesLength = readVertices(input, box->getVertices(), box->getBones(), (flags & 16) != 0);
|
||||
box->setWorldVerticesLength(verticesLength);
|
||||
if (nonessential) {
|
||||
readColor(input, box->getColor());
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ bool SkeletonBounds::aabbintersectsSegment(float x1, float y1, float x2, float y
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SkeletonBounds::aabbIntersectsSkeleton(SkeletonBounds bounds) {
|
||||
bool SkeletonBounds::aabbIntersectsSkeleton(SkeletonBounds &bounds) {
|
||||
return _minX < bounds._maxX && _maxX > bounds._minX && _minY < bounds._maxY && _maxY > bounds._minY;
|
||||
}
|
||||
|
||||
|
||||
@ -1175,6 +1175,7 @@ Animation *SkeletonJson::readAnimation(Json *root, SkeletonData *skeletonData) {
|
||||
timeline->setFrame(frame, time, inherit);
|
||||
nextMap = keyMap->_next;
|
||||
if (!nextMap) break;
|
||||
keyMap = nextMap;
|
||||
}
|
||||
timelines.add(timeline);
|
||||
} else {
|
||||
@ -1277,7 +1278,7 @@ Animation *SkeletonJson::readAnimation(Json *root, SkeletonData *skeletonData) {
|
||||
mixY = mixY2;
|
||||
mixScaleX = mixScaleX2;
|
||||
mixScaleY = mixScaleY2;
|
||||
mixScaleX = mixScaleX2;
|
||||
mixShearY = mixShearY2;
|
||||
keyMap = nextMap;
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spine</RootNamespace>
|
||||
<AssemblyName>spine-csharp</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
|
||||
@ -63,16 +63,21 @@
|
||||
<Compile Include="src\Attachments\AttachmentType.cs" />
|
||||
<Compile Include="src\Attachments\BoundingBoxAttachment.cs" />
|
||||
<Compile Include="src\Attachments\ClippingAttachment.cs" />
|
||||
<Compile Include="src\Attachments\IHasTextureRegion.cs" />
|
||||
<Compile Include="src\Attachments\MeshAttachment.cs" />
|
||||
<Compile Include="src\Attachments\PathAttachment.cs" />
|
||||
<Compile Include="src\Attachments\PointAttachment.cs" />
|
||||
<Compile Include="src\Attachments\RegionAttachment.cs" />
|
||||
<Compile Include="src\Attachments\Sequence.cs" />
|
||||
<Compile Include="src\Attachments\VertexAttachment.cs" />
|
||||
<Compile Include="src\BlendMode.cs" />
|
||||
<Compile Include="src\Bone.cs" />
|
||||
<Compile Include="src\BoneData.cs" />
|
||||
<Compile Include="src\ConstraintData.cs" />
|
||||
<Compile Include="src\PhysicsConstraint.cs" />
|
||||
<Compile Include="src\PhysicsConstraintData.cs" />
|
||||
<Compile Include="src\SkeletonLoader.cs" />
|
||||
<Compile Include="src\TextureRegion.cs" />
|
||||
<Compile Include="src\Triangulator.cs" />
|
||||
<Compile Include="src\Event.cs" />
|
||||
<Compile Include="src\EventData.cs" />
|
||||
@ -96,7 +101,6 @@
|
||||
<Compile Include="src\TransformConstraint.cs" />
|
||||
<Compile Include="src\TransformConstraintData.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!--
|
||||
To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
||||
@ -2782,6 +2782,11 @@ namespace Spine {
|
||||
Sequence sequence = ((IHasTextureRegion)slotAttachment).Sequence;
|
||||
if (sequence == null) return;
|
||||
|
||||
if (direction == MixDirection.Out) {
|
||||
if (blend == MixBlend.Setup) slot.SequenceIndex = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
float[] frames = this.frames;
|
||||
if (time < frames[0]) {
|
||||
if (blend == MixBlend.Setup || blend == MixBlend.First) slot.SequenceIndex = -1;
|
||||
|
||||
@ -204,9 +204,9 @@ namespace Spine {
|
||||
from.animationLast = from.nextAnimationLast;
|
||||
from.trackLast = from.nextTrackLast;
|
||||
|
||||
// Require mixTime > 0 to ensure the mixing from entry was applied at least once.
|
||||
if (to.mixTime > 0 && to.mixTime >= to.mixDuration) {
|
||||
// Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame).
|
||||
// The from entry was applied at least once and the mix is complete.
|
||||
if (to.nextTrackLast != -1 && to.mixTime >= to.mixDuration) {
|
||||
// Mixing is complete for all entries before the from entry or the mix is instantaneous.
|
||||
if (from.totalAlpha == 0 || to.mixDuration == 0) {
|
||||
to.mixingFrom = from.mixingFrom;
|
||||
if (from.mixingFrom != null) from.mixingFrom.mixingTo = to;
|
||||
@ -750,10 +750,11 @@ namespace Spine {
|
||||
if (last == null) {
|
||||
SetCurrent(trackIndex, entry, true);
|
||||
queue.Drain();
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last.next = entry;
|
||||
entry.previous = last;
|
||||
if (delay <= 0) delay += last.TrackComplete - entry.mixDuration;
|
||||
if (delay <= 0) delay = Math.Max(delay + last.TrackComplete - entry.mixDuration, 0);
|
||||
}
|
||||
|
||||
entry.delay = delay;
|
||||
@ -799,7 +800,7 @@ namespace Spine {
|
||||
/// </returns>
|
||||
public TrackEntry AddEmptyAnimation (int trackIndex, float mixDuration, float delay) {
|
||||
TrackEntry entry = AddAnimation(trackIndex, AnimationState.EmptyAnimation, false, delay);
|
||||
if (delay <= 0) entry.delay += entry.mixDuration - mixDuration;
|
||||
if (delay <= 0) entry.delay = Math.Max(entry.delay + entry.mixDuration - mixDuration, 0);
|
||||
entry.mixDuration = mixDuration;
|
||||
entry.trackEnd = mixDuration;
|
||||
return entry;
|
||||
@ -1049,17 +1050,24 @@ namespace Spine {
|
||||
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// Seconds to postpone playing the animation. When this track entry is the current track entry, <c>Delay</c>
|
||||
/// postpones incrementing the <see cref="TrackEntry.TrackTime"/>. When this track entry is queued, <c>Delay</c> is the time from
|
||||
/// the start of the previous animation to when this track entry will become the current track entry (ie when the previous
|
||||
/// track entry <see cref="TrackEntry.TrackTime"/> >= this track entry's <c>Delay</c>).</para>
|
||||
/// Seconds to postpone playing the animation. Must be >= 0. When this track entry is the current track entry,
|
||||
/// <c>Delay</c> postpones incrementing the <see cref="TrackEntry.TrackTime"/>. When this track entry is queued,
|
||||
/// <c>Delay</c> is the time from the start of the previous animation to when this track entry will become the current
|
||||
/// track entry (ie when the previous track entry <see cref="TrackEntry.TrackTime"/> >= this track entry's
|
||||
/// <c>Delay</c>).</para>
|
||||
/// <para>
|
||||
/// <see cref="TrackEntry.TimeScale"/> affects the delay.</para>
|
||||
/// <para>
|
||||
/// When using <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <c>delay</c> <= 0, the delay
|
||||
/// is set using the mix duration from the <see cref="AnimationStateData"/>. If <see cref="mixDuration"/> is set afterward, the delay
|
||||
/// may need to be adjusted.</para></summary>
|
||||
public float Delay { get { return delay; } set { delay = value; } }
|
||||
/// When passing <c>delay</c> <= 0 <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"/>, this
|
||||
/// <c>delay</c> is set using a mix duration from the <see cref="AnimationStateData"/>. To change the <see cref="mixDuration"/>
|
||||
/// afterward, use <see cref="SetMixDuration(float, float)"/> so this <c>delay</c> is adjusted.</para></summary>
|
||||
public float Delay {
|
||||
get { return delay; }
|
||||
set {
|
||||
if (delay < 0) throw new ArgumentException("delay must be >= 0.", "delay");
|
||||
delay = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Current time in seconds this track entry has been the current track entry. The track time determines
|
||||
@ -1261,7 +1269,12 @@ namespace Spine {
|
||||
/// entry is looping, its next loop completion is used instead of its duration.</param>
|
||||
public void SetMixDuration (float mixDuration, float delay) {
|
||||
this.mixDuration = mixDuration;
|
||||
if (previous != null && delay <= 0) delay += previous.TrackComplete - mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (previous != null)
|
||||
delay = Math.Max(delay + previous.TrackComplete - mixDuration, 0);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
this.delay = delay;
|
||||
}
|
||||
|
||||
|
||||
@ -175,7 +175,7 @@ namespace Spine {
|
||||
}
|
||||
if (a >= t) {
|
||||
d = (float)Math.Pow(damping, 60 * t);
|
||||
float m = massInverse * t, e = strength, w = wind * f, g = (Bone.yDown ? -gravity : gravity) * f;
|
||||
float m = massInverse * t, e = strength, w = wind * f * skeleton.ScaleX, g = gravity * f * skeleton.ScaleY;
|
||||
do {
|
||||
if (x) {
|
||||
xVelocity += (w - xOffset * e) * m;
|
||||
|
||||
@ -1287,7 +1287,7 @@ namespace Spine {
|
||||
}
|
||||
}
|
||||
}
|
||||
return optimizePositive ? result : ((result >> 1) ^ -(result & 1));
|
||||
return optimizePositive ? result : ((int)((uint)result >> 1) ^ -(result & 1));
|
||||
}
|
||||
|
||||
public string ReadString () {
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"name": "com.esotericsoftware.spine.spine-csharp",
|
||||
"displayName": "spine-csharp Runtime",
|
||||
"description": "This plugin provides the spine-csharp core runtime.",
|
||||
"version": "4.2.31",
|
||||
"version": "4.3.2",
|
||||
"unity": "2018.3",
|
||||
"author": {
|
||||
"name": "Esoteric Software",
|
||||
|
||||
@ -1,3 +1,13 @@
|
||||
# 4.2.35
|
||||
- Port of commit f1e0f0f: Fixed animation not being mixed out in some cases.
|
||||
|
||||
# 4.2.34
|
||||
- Support latest emscripten SDK (4.0.6+) via update of web_ffi
|
||||
|
||||
# 4.2.33
|
||||
- Merge fixes in spine-cpp(-lite)
|
||||
- Prepare for upcoming Dart/Flutter releases, see https://github.com/EsotericSoftware/spine-runtimes/pull/2690
|
||||
|
||||
# 4.2.32
|
||||
- Fix spine-flutter spec checksum in `Podfile.lock`, keeping version control cleaner. See https://github.com/EsotericSoftware/spine-runtimes/pull/2609
|
||||
|
||||
|
||||
@ -12,7 +12,8 @@ em++ \
|
||||
-Isrc/spine-cpp/include \
|
||||
-O2 --closure 1 -fno-rtti -fno-exceptions \
|
||||
-s STRICT=1 \
|
||||
-s LLD_REPORT_UNDEFINED \
|
||||
-s EXPORTED_RUNTIME_METHODS=wasmExports \
|
||||
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
||||
-s MODULARIZE=1 \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s ALLOW_TABLE_GROWTH \
|
||||
|
||||
@ -169,7 +169,7 @@ packages:
|
||||
path: ".."
|
||||
relative: true
|
||||
source: path
|
||||
version: "4.2.29"
|
||||
version: "4.2.34"
|
||||
string_scanner:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -206,10 +206,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_ffi_fork
|
||||
sha256: "7466228b7fc6a29ee1b5f6ab7ee2473847367a70fb523eb1a7c1d7a6a9841589"
|
||||
sha256: "557b3008bb3c8547ee63eac6e53c0ebebb443da9d7558b3f1b98e1ed59989a11"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.4"
|
||||
version: "0.7.5"
|
||||
sdks:
|
||||
dart: ">=3.3.0-0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
@ -1,309 +1,146 @@
|
||||
const module = {};
|
||||
|
||||
var libspine_flutter = (() => {
|
||||
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
|
||||
if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;
|
||||
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
|
||||
if (typeof __filename != 'undefined') _scriptName = _scriptName || __filename;
|
||||
return (
|
||||
function(libspine_flutter) {
|
||||
libspine_flutter = libspine_flutter || {};
|
||||
async function(moduleArg = {}) {
|
||||
var moduleRtn;
|
||||
|
||||
var a=moduleArg,b,h,k=new Promise((c,d)=>{b=c;h=d}),aa="object"==typeof window,l="undefined"!=typeof WorkerGlobalScope,m="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&"renderer"!=process.type,p={...a},q="",r,t;
|
||||
if(m){var fs=require("fs");require("path");q=__dirname+"/";t=c=>{c=u(c)?new URL(c):c;return fs.readFileSync(c)};r=async c=>{c=u(c)?new URL(c):c;return fs.readFileSync(c,void 0)};process.argv.slice(2)}else if(aa||l)l?q=self.location.href:"undefined"!=typeof document&&document.currentScript&&(q=document.currentScript.src),_scriptName&&(q=_scriptName),q.startsWith("blob:")?q="":q=q.slice(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1),l&&(t=c=>{var d=new XMLHttpRequest;d.open("GET",c,!1);d.responseType=
|
||||
"arraybuffer";d.send(null);return new Uint8Array(d.response)}),r=async c=>{if(u(c))return new Promise((e,g)=>{var f=new XMLHttpRequest;f.open("GET",c,!0);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?e(f.response):g(f.status)};f.onerror=g;f.send(null)});var d=await fetch(c,{credentials:"same-origin"});if(d.ok)return d.arrayBuffer();throw Error(d.status+" : "+d.url);};var ba=console.log.bind(console),v=console.error.bind(console);Object.assign(a,p);p=null;
|
||||
var w,x=!1,z,A,B,C,D,E,F,G,u=c=>c.startsWith("file://");function H(){var c=w.buffer;a.HEAP8=z=new Int8Array(c);a.HEAP16=B=new Int16Array(c);a.HEAPU8=A=new Uint8Array(c);a.HEAPU16=new Uint16Array(c);a.HEAP32=C=new Int32Array(c);a.HEAPU32=D=new Uint32Array(c);a.HEAPF32=E=new Float32Array(c);a.HEAPF64=G=new Float64Array(c);a.HEAP64=F=new BigInt64Array(c);a.HEAPU64=new BigUint64Array(c)}var I=0,J=null;
|
||||
function L(c){c="Aborted("+c+")";v(c);x=!0;c=new WebAssembly.RuntimeError(c+". Build with -sASSERTIONS for more info.");h(c);throw c;}var M;async function ca(c){try{var d=await r(c);return new Uint8Array(d)}catch{}if(t)c=t(c);else throw"both async and sync fetching of the wasm failed";return c}async function da(c,d){try{var e=await ca(c);return await WebAssembly.instantiate(e,d)}catch(g){v(`failed to asynchronously prepare wasm: ${g}`),L(g)}}
|
||||
async function ea(c){var d=M;if("function"==typeof WebAssembly.instantiateStreaming&&!u(d)&&!m)try{var e=fetch(d,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(e,c)}catch(g){v(`wasm streaming compile failed: ${g}`),v("falling back to ArrayBuffer instantiation")}return da(d,c)}class fa{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`;this.status=c}}a.ExitStatus=fa;a.callRuntimeCallbacks=c=>{for(;0<c.length;)c.shift()(a)};
|
||||
a.getValue=function(c,d="i8"){d.endsWith("*")&&(d="*");switch(d){case "i1":return z[c];case "i8":return z[c];case "i16":return B[c>>1];case "i32":return C[c>>2];case "i64":return F[c>>3];case "float":return E[c>>2];case "double":return G[c>>3];case "*":return D[c>>2];default:L(`invalid type for getValue: ${d}`)}};
|
||||
a.setValue=function(c,d,e="i8"){e.endsWith("*")&&(e="*");switch(e){case "i1":z[c]=d;break;case "i8":z[c]=d;break;case "i16":B[c>>1]=d;break;case "i32":C[c>>2]=d;break;case "i64":F[c>>3]=BigInt(d);break;case "float":E[c>>2]=d;break;case "double":G[c>>3]=d;break;case "*":D[c>>2]=d;break;default:L(`invalid type for setValue: ${e}`)}};a.stackRestore=c=>ha(c);a.stackSave=()=>ia();var N="undefined"!=typeof TextDecoder?new TextDecoder:void 0;a.UTF8Decoder=N;
|
||||
var O=(c,d=0,e=NaN)=>{var g=d+e;for(e=d;c[e]&&!(e>=g);)++e;if(16<e-d&&c.buffer&&N)return N.decode(c.subarray(d,e));for(g="";d<e;){var f=c[d++];if(f&128){var n=c[d++]&63;if(192==(f&224))g+=String.fromCharCode((f&31)<<6|n);else{var y=c[d++]&63;f=224==(f&240)?(f&15)<<12|n<<6|y:(f&7)<<18|n<<12|y<<6|c[d++]&63;65536>f?g+=String.fromCharCode(f):(f-=65536,g+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else g+=String.fromCharCode(f)}return g};a.UTF8ArrayToString=O;a.UTF8ToString=(c,d)=>c?O(A,c,d):"";
|
||||
var P=(c,d,e,g)=>L(`Assertion failed: ${c?O(A,c,void 0):""}, at: `+[d?d?O(A,d,void 0):"":"unknown filename",e,g?g?O(A,g,void 0):"":"unknown function"]);a.___assert_fail=P;var Q=()=>L("");a.__abort_js=Q;a.getHeapMax=()=>2147483648;a.alignMemory=(c,d)=>Math.ceil(c/d)*d;var R=c=>{c=(c-w.buffer.byteLength+65535)/65536|0;try{return w.grow(c),H(),1}catch(d){}};a.growMemory=R;
|
||||
var S=c=>{var d=A.length;c>>>=0;if(2147483648<c)return!1;for(var e=1;4>=e;e*=2){var g=d*(1+.2/e);g=Math.min(g,c+100663296);if(R(Math.min(2147483648,65536*Math.ceil(Math.max(c,g)/65536))))return!0}return!1};a._emscripten_resize_heap=S;var T=[null,[],[]];a.printCharBuffers=T;var U=(c,d)=>{var e=T[c];0===d||10===d?((1===c?ba:v)(O(e)),e.length=0):e.push(d)};a.printChar=U;a.flush_NO_FILESYSTEM=()=>{T[1].length&&U(1,10);T[2].length&&U(2,10)};a.SYSCALLS={h:void 0,g(c){return c?O(A,c,void 0):""}};
|
||||
var V=(c,d,e,g)=>{for(var f=0,n=0;n<e;n++){var y=D[d>>2],W=D[d+4>>2];d+=8;for(var K=0;K<W;K++)U(c,A[y+K]);f+=W}D[g>>2]=f;return 0};a._fd_write=V;a.ptrToString=c=>"0x"+(c>>>0).toString(16).padStart(8,"0");
|
||||
var X={__assert_fail:P,_abort_js:Q,emscripten_resize_heap:S,fd_write:V},Y=await (async function(){I++;var c={env:X,wasi_snapshot_preview1:X};M??=q+"libspine_flutter.wasm";try{return Y=(await ea(c)).instance.exports,a.wasmExports=Y,w=Y.memory,H(),I--,0==I&&J&&(c=J,J=null,c()),Y}catch(d){return h(d),Promise.reject(d)}}());a._spine_enable_debug_extension=Y.spine_enable_debug_extension;a._spine_major_version=Y.spine_major_version;a._spine_minor_version=Y.spine_minor_version;
|
||||
a._spine_report_leaks=Y.spine_report_leaks;a._spine_color_get_r=Y.spine_color_get_r;a._spine_color_get_g=Y.spine_color_get_g;a._spine_color_get_b=Y.spine_color_get_b;a._spine_color_get_a=Y.spine_color_get_a;a._spine_bounds_get_x=Y.spine_bounds_get_x;a._spine_bounds_get_y=Y.spine_bounds_get_y;a._spine_bounds_get_width=Y.spine_bounds_get_width;a._spine_bounds_get_height=Y.spine_bounds_get_height;a._spine_vector_get_x=Y.spine_vector_get_x;a._spine_vector_get_y=Y.spine_vector_get_y;
|
||||
a._spine_atlas_load=Y.spine_atlas_load;a._spine_atlas_load_callback=Y.spine_atlas_load_callback;a._spine_atlas_get_num_image_paths=Y.spine_atlas_get_num_image_paths;a._spine_atlas_is_pma=Y.spine_atlas_is_pma;a._spine_atlas_get_image_path=Y.spine_atlas_get_image_path;a._spine_atlas_get_error=Y.spine_atlas_get_error;a._spine_atlas_dispose=Y.spine_atlas_dispose;a._free=Y.free;a._spine_skeleton_data_load_json=Y.spine_skeleton_data_load_json;a._spine_skeleton_data_load_binary=Y.spine_skeleton_data_load_binary;
|
||||
a._spine_skeleton_data_result_get_error=Y.spine_skeleton_data_result_get_error;a._spine_skeleton_data_result_get_data=Y.spine_skeleton_data_result_get_data;a._spine_skeleton_data_result_dispose=Y.spine_skeleton_data_result_dispose;a._spine_skeleton_data_find_bone=Y.spine_skeleton_data_find_bone;a._spine_skeleton_data_find_slot=Y.spine_skeleton_data_find_slot;a._spine_skeleton_data_find_skin=Y.spine_skeleton_data_find_skin;a._spine_skeleton_data_find_event=Y.spine_skeleton_data_find_event;
|
||||
a._spine_skeleton_data_find_animation=Y.spine_skeleton_data_find_animation;a._spine_skeleton_data_find_ik_constraint=Y.spine_skeleton_data_find_ik_constraint;a._spine_skeleton_data_find_transform_constraint=Y.spine_skeleton_data_find_transform_constraint;a._spine_skeleton_data_find_path_constraint=Y.spine_skeleton_data_find_path_constraint;a._spine_skeleton_data_find_physics_constraint=Y.spine_skeleton_data_find_physics_constraint;a._spine_skeleton_data_get_name=Y.spine_skeleton_data_get_name;
|
||||
a._spine_skeleton_data_get_num_bones=Y.spine_skeleton_data_get_num_bones;a._spine_skeleton_data_get_bones=Y.spine_skeleton_data_get_bones;a._spine_skeleton_data_get_num_slots=Y.spine_skeleton_data_get_num_slots;a._spine_skeleton_data_get_slots=Y.spine_skeleton_data_get_slots;a._spine_skeleton_data_get_num_skins=Y.spine_skeleton_data_get_num_skins;a._spine_skeleton_data_get_skins=Y.spine_skeleton_data_get_skins;a._spine_skeleton_data_get_default_skin=Y.spine_skeleton_data_get_default_skin;
|
||||
a._spine_skeleton_data_set_default_skin=Y.spine_skeleton_data_set_default_skin;a._spine_skeleton_data_get_num_events=Y.spine_skeleton_data_get_num_events;a._spine_skeleton_data_get_events=Y.spine_skeleton_data_get_events;a._spine_skeleton_data_get_num_animations=Y.spine_skeleton_data_get_num_animations;a._spine_skeleton_data_get_animations=Y.spine_skeleton_data_get_animations;a._spine_skeleton_data_get_num_ik_constraints=Y.spine_skeleton_data_get_num_ik_constraints;
|
||||
a._spine_skeleton_data_get_ik_constraints=Y.spine_skeleton_data_get_ik_constraints;a._spine_skeleton_data_get_num_transform_constraints=Y.spine_skeleton_data_get_num_transform_constraints;a._spine_skeleton_data_get_transform_constraints=Y.spine_skeleton_data_get_transform_constraints;a._spine_skeleton_data_get_num_path_constraints=Y.spine_skeleton_data_get_num_path_constraints;a._spine_skeleton_data_get_path_constraints=Y.spine_skeleton_data_get_path_constraints;
|
||||
a._spine_skeleton_data_get_num_physics_constraints=Y.spine_skeleton_data_get_num_physics_constraints;a._spine_skeleton_data_get_physics_constraints=Y.spine_skeleton_data_get_physics_constraints;a._spine_skeleton_data_get_x=Y.spine_skeleton_data_get_x;a._spine_skeleton_data_set_x=Y.spine_skeleton_data_set_x;a._spine_skeleton_data_get_y=Y.spine_skeleton_data_get_y;a._spine_skeleton_data_set_y=Y.spine_skeleton_data_set_y;a._spine_skeleton_data_get_width=Y.spine_skeleton_data_get_width;
|
||||
a._spine_skeleton_data_set_width=Y.spine_skeleton_data_set_width;a._spine_skeleton_data_get_height=Y.spine_skeleton_data_get_height;a._spine_skeleton_data_set_height=Y.spine_skeleton_data_set_height;a._spine_skeleton_data_get_version=Y.spine_skeleton_data_get_version;a._spine_skeleton_data_get_hash=Y.spine_skeleton_data_get_hash;a._spine_skeleton_data_get_images_path=Y.spine_skeleton_data_get_images_path;a._spine_skeleton_data_get_audio_path=Y.spine_skeleton_data_get_audio_path;
|
||||
a._spine_skeleton_data_get_fps=Y.spine_skeleton_data_get_fps;a._spine_skeleton_data_get_reference_scale=Y.spine_skeleton_data_get_reference_scale;a._spine_skeleton_data_dispose=Y.spine_skeleton_data_dispose;a._spine_skeleton_drawable_create=Y.spine_skeleton_drawable_create;a._spine_skeleton_drawable_dispose=Y.spine_skeleton_drawable_dispose;a._spine_skeleton_drawable_render=Y.spine_skeleton_drawable_render;a._spine_skeleton_drawable_get_skeleton=Y.spine_skeleton_drawable_get_skeleton;
|
||||
a._spine_skeleton_drawable_get_animation_state=Y.spine_skeleton_drawable_get_animation_state;a._spine_skeleton_drawable_get_animation_state_data=Y.spine_skeleton_drawable_get_animation_state_data;a._spine_skeleton_drawable_get_animation_state_events=Y.spine_skeleton_drawable_get_animation_state_events;a._spine_render_command_get_positions=Y.spine_render_command_get_positions;a._spine_render_command_get_uvs=Y.spine_render_command_get_uvs;a._spine_render_command_get_colors=Y.spine_render_command_get_colors;
|
||||
a._spine_render_command_get_dark_colors=Y.spine_render_command_get_dark_colors;a._spine_render_command_get_num_vertices=Y.spine_render_command_get_num_vertices;a._spine_render_command_get_indices=Y.spine_render_command_get_indices;a._spine_render_command_get_num_indices=Y.spine_render_command_get_num_indices;a._spine_render_command_get_atlas_page=Y.spine_render_command_get_atlas_page;a._spine_render_command_get_blend_mode=Y.spine_render_command_get_blend_mode;a._spine_render_command_get_next=Y.spine_render_command_get_next;
|
||||
a._spine_animation_get_name=Y.spine_animation_get_name;a._spine_animation_get_duration=Y.spine_animation_get_duration;a._spine_animation_state_data_get_skeleton_data=Y.spine_animation_state_data_get_skeleton_data;a._spine_animation_state_data_get_default_mix=Y.spine_animation_state_data_get_default_mix;a._spine_animation_state_data_set_default_mix=Y.spine_animation_state_data_set_default_mix;a._spine_animation_state_data_set_mix=Y.spine_animation_state_data_set_mix;
|
||||
a._spine_animation_state_data_get_mix=Y.spine_animation_state_data_get_mix;a._spine_animation_state_data_set_mix_by_name=Y.spine_animation_state_data_set_mix_by_name;a._spine_animation_state_data_get_mix_by_name=Y.spine_animation_state_data_get_mix_by_name;a._spine_animation_state_data_clear=Y.spine_animation_state_data_clear;a._spine_animation_state_update=Y.spine_animation_state_update;a._spine_animation_state_dispose_track_entry=Y.spine_animation_state_dispose_track_entry;
|
||||
a._spine_animation_state_apply=Y.spine_animation_state_apply;a._spine_animation_state_clear_tracks=Y.spine_animation_state_clear_tracks;a._spine_animation_state_get_num_tracks=Y.spine_animation_state_get_num_tracks;a._spine_animation_state_clear_track=Y.spine_animation_state_clear_track;a._spine_animation_state_set_animation_by_name=Y.spine_animation_state_set_animation_by_name;a._spine_animation_state_set_animation=Y.spine_animation_state_set_animation;
|
||||
a._spine_animation_state_add_animation_by_name=Y.spine_animation_state_add_animation_by_name;a._spine_animation_state_add_animation=Y.spine_animation_state_add_animation;a._spine_animation_state_set_empty_animation=Y.spine_animation_state_set_empty_animation;a._spine_animation_state_add_empty_animation=Y.spine_animation_state_add_empty_animation;a._spine_animation_state_set_empty_animations=Y.spine_animation_state_set_empty_animations;a._spine_animation_state_get_current=Y.spine_animation_state_get_current;
|
||||
a._spine_animation_state_get_data=Y.spine_animation_state_get_data;a._spine_animation_state_get_time_scale=Y.spine_animation_state_get_time_scale;a._spine_animation_state_set_time_scale=Y.spine_animation_state_set_time_scale;a._spine_animation_state_events_get_num_events=Y.spine_animation_state_events_get_num_events;a._spine_animation_state_events_get_event_type=Y.spine_animation_state_events_get_event_type;a._spine_animation_state_events_get_track_entry=Y.spine_animation_state_events_get_track_entry;
|
||||
a._spine_animation_state_events_get_event=Y.spine_animation_state_events_get_event;a._spine_animation_state_events_reset=Y.spine_animation_state_events_reset;a._spine_track_entry_get_track_index=Y.spine_track_entry_get_track_index;a._spine_track_entry_get_animation=Y.spine_track_entry_get_animation;a._spine_track_entry_get_previous=Y.spine_track_entry_get_previous;a._spine_track_entry_get_loop=Y.spine_track_entry_get_loop;a._spine_track_entry_set_loop=Y.spine_track_entry_set_loop;
|
||||
a._spine_track_entry_get_hold_previous=Y.spine_track_entry_get_hold_previous;a._spine_track_entry_set_hold_previous=Y.spine_track_entry_set_hold_previous;a._spine_track_entry_get_reverse=Y.spine_track_entry_get_reverse;a._spine_track_entry_set_reverse=Y.spine_track_entry_set_reverse;a._spine_track_entry_get_shortest_rotation=Y.spine_track_entry_get_shortest_rotation;a._spine_track_entry_set_shortest_rotation=Y.spine_track_entry_set_shortest_rotation;a._spine_track_entry_get_delay=Y.spine_track_entry_get_delay;
|
||||
a._spine_track_entry_set_delay=Y.spine_track_entry_set_delay;a._spine_track_entry_get_track_time=Y.spine_track_entry_get_track_time;a._spine_track_entry_set_track_time=Y.spine_track_entry_set_track_time;a._spine_track_entry_get_track_end=Y.spine_track_entry_get_track_end;a._spine_track_entry_set_track_end=Y.spine_track_entry_set_track_end;a._spine_track_entry_get_animation_start=Y.spine_track_entry_get_animation_start;a._spine_track_entry_set_animation_start=Y.spine_track_entry_set_animation_start;
|
||||
a._spine_track_entry_get_animation_end=Y.spine_track_entry_get_animation_end;a._spine_track_entry_set_animation_end=Y.spine_track_entry_set_animation_end;a._spine_track_entry_get_animation_last=Y.spine_track_entry_get_animation_last;a._spine_track_entry_set_animation_last=Y.spine_track_entry_set_animation_last;a._spine_track_entry_get_animation_time=Y.spine_track_entry_get_animation_time;a._spine_track_entry_get_time_scale=Y.spine_track_entry_get_time_scale;a._spine_track_entry_set_time_scale=Y.spine_track_entry_set_time_scale;
|
||||
a._spine_track_entry_get_alpha=Y.spine_track_entry_get_alpha;a._spine_track_entry_set_alpha=Y.spine_track_entry_set_alpha;a._spine_track_entry_get_event_threshold=Y.spine_track_entry_get_event_threshold;a._spine_track_entry_set_event_threshold=Y.spine_track_entry_set_event_threshold;a._spine_track_entry_get_alpha_attachment_threshold=Y.spine_track_entry_get_alpha_attachment_threshold;a._spine_track_entry_set_alpha_attachment_threshold=Y.spine_track_entry_set_alpha_attachment_threshold;
|
||||
a._spine_track_entry_get_mix_attachment_threshold=Y.spine_track_entry_get_mix_attachment_threshold;a._spine_track_entry_set_mix_attachment_threshold=Y.spine_track_entry_set_mix_attachment_threshold;a._spine_track_entry_get_mix_draw_order_threshold=Y.spine_track_entry_get_mix_draw_order_threshold;a._spine_track_entry_set_mix_draw_order_threshold=Y.spine_track_entry_set_mix_draw_order_threshold;a._spine_track_entry_get_next=Y.spine_track_entry_get_next;a._spine_track_entry_is_complete=Y.spine_track_entry_is_complete;
|
||||
a._spine_track_entry_get_mix_time=Y.spine_track_entry_get_mix_time;a._spine_track_entry_set_mix_time=Y.spine_track_entry_set_mix_time;a._spine_track_entry_get_mix_duration=Y.spine_track_entry_get_mix_duration;a._spine_track_entry_set_mix_duration=Y.spine_track_entry_set_mix_duration;a._spine_track_entry_get_mix_blend=Y.spine_track_entry_get_mix_blend;a._spine_track_entry_set_mix_blend=Y.spine_track_entry_set_mix_blend;a._spine_track_entry_get_mixing_from=Y.spine_track_entry_get_mixing_from;
|
||||
a._spine_track_entry_get_mixing_to=Y.spine_track_entry_get_mixing_to;a._spine_track_entry_reset_rotation_directions=Y.spine_track_entry_reset_rotation_directions;a._spine_track_entry_get_track_complete=Y.spine_track_entry_get_track_complete;a._spine_track_entry_was_applied=Y.spine_track_entry_was_applied;a._spine_track_entry_is_next_ready=Y.spine_track_entry_is_next_ready;a._spine_skeleton_update_cache=Y.spine_skeleton_update_cache;a._spine_skeleton_update_world_transform=Y.spine_skeleton_update_world_transform;
|
||||
a._spine_skeleton_update_world_transform_bone=Y.spine_skeleton_update_world_transform_bone;a._spine_skeleton_set_to_setup_pose=Y.spine_skeleton_set_to_setup_pose;a._spine_skeleton_set_bones_to_setup_pose=Y.spine_skeleton_set_bones_to_setup_pose;a._spine_skeleton_set_slots_to_setup_pose=Y.spine_skeleton_set_slots_to_setup_pose;a._spine_skeleton_find_bone=Y.spine_skeleton_find_bone;a._spine_skeleton_find_slot=Y.spine_skeleton_find_slot;a._spine_skeleton_set_skin_by_name=Y.spine_skeleton_set_skin_by_name;
|
||||
a._spine_skeleton_set_skin=Y.spine_skeleton_set_skin;a._spine_skeleton_get_attachment_by_name=Y.spine_skeleton_get_attachment_by_name;a._spine_skeleton_get_attachment=Y.spine_skeleton_get_attachment;a._spine_skeleton_set_attachment=Y.spine_skeleton_set_attachment;a._spine_skeleton_find_ik_constraint=Y.spine_skeleton_find_ik_constraint;a._spine_skeleton_find_transform_constraint=Y.spine_skeleton_find_transform_constraint;a._spine_skeleton_find_path_constraint=Y.spine_skeleton_find_path_constraint;
|
||||
a._spine_skeleton_find_physics_constraint=Y.spine_skeleton_find_physics_constraint;a._spine_skeleton_get_bounds=Y.spine_skeleton_get_bounds;a._spine_skeleton_get_root_bone=Y.spine_skeleton_get_root_bone;a._spine_skeleton_get_data=Y.spine_skeleton_get_data;a._spine_skeleton_get_num_bones=Y.spine_skeleton_get_num_bones;a._spine_skeleton_get_bones=Y.spine_skeleton_get_bones;a._spine_skeleton_get_num_slots=Y.spine_skeleton_get_num_slots;a._spine_skeleton_get_slots=Y.spine_skeleton_get_slots;
|
||||
a._spine_skeleton_get_num_draw_order=Y.spine_skeleton_get_num_draw_order;a._spine_skeleton_get_draw_order=Y.spine_skeleton_get_draw_order;a._spine_skeleton_get_num_ik_constraints=Y.spine_skeleton_get_num_ik_constraints;a._spine_skeleton_get_ik_constraints=Y.spine_skeleton_get_ik_constraints;a._spine_skeleton_get_num_transform_constraints=Y.spine_skeleton_get_num_transform_constraints;a._spine_skeleton_get_transform_constraints=Y.spine_skeleton_get_transform_constraints;
|
||||
a._spine_skeleton_get_num_path_constraints=Y.spine_skeleton_get_num_path_constraints;a._spine_skeleton_get_path_constraints=Y.spine_skeleton_get_path_constraints;a._spine_skeleton_get_num_physics_constraints=Y.spine_skeleton_get_num_physics_constraints;a._spine_skeleton_get_physics_constraints=Y.spine_skeleton_get_physics_constraints;a._spine_skeleton_get_skin=Y.spine_skeleton_get_skin;a._spine_skeleton_get_color=Y.spine_skeleton_get_color;a._spine_skeleton_set_color=Y.spine_skeleton_set_color;
|
||||
a._spine_skeleton_set_position=Y.spine_skeleton_set_position;a._spine_skeleton_get_x=Y.spine_skeleton_get_x;a._spine_skeleton_set_x=Y.spine_skeleton_set_x;a._spine_skeleton_get_y=Y.spine_skeleton_get_y;a._spine_skeleton_set_y=Y.spine_skeleton_set_y;a._spine_skeleton_set_scale=Y.spine_skeleton_set_scale;a._spine_skeleton_get_scale_x=Y.spine_skeleton_get_scale_x;a._spine_skeleton_set_scale_x=Y.spine_skeleton_set_scale_x;a._spine_skeleton_get_scale_y=Y.spine_skeleton_get_scale_y;
|
||||
a._spine_skeleton_set_scale_y=Y.spine_skeleton_set_scale_y;a._spine_skeleton_get_time=Y.spine_skeleton_get_time;a._spine_skeleton_set_time=Y.spine_skeleton_set_time;a._spine_skeleton_update=Y.spine_skeleton_update;a._spine_event_data_get_name=Y.spine_event_data_get_name;a._spine_event_data_get_int_value=Y.spine_event_data_get_int_value;a._spine_event_data_set_int_value=Y.spine_event_data_set_int_value;a._spine_event_data_get_float_value=Y.spine_event_data_get_float_value;
|
||||
a._spine_event_data_set_float_value=Y.spine_event_data_set_float_value;a._spine_event_data_get_string_value=Y.spine_event_data_get_string_value;a._spine_event_data_set_string_value=Y.spine_event_data_set_string_value;a._spine_event_data_get_audio_path=Y.spine_event_data_get_audio_path;a._spine_event_data_get_volume=Y.spine_event_data_get_volume;a._spine_event_data_set_volume=Y.spine_event_data_set_volume;a._spine_event_data_get_balance=Y.spine_event_data_get_balance;
|
||||
a._spine_event_data_set_balance=Y.spine_event_data_set_balance;a._spine_event_get_data=Y.spine_event_get_data;a._spine_event_get_time=Y.spine_event_get_time;a._spine_event_get_int_value=Y.spine_event_get_int_value;a._spine_event_set_int_value=Y.spine_event_set_int_value;a._spine_event_get_float_value=Y.spine_event_get_float_value;a._spine_event_set_float_value=Y.spine_event_set_float_value;a._spine_event_get_string_value=Y.spine_event_get_string_value;a._spine_event_set_string_value=Y.spine_event_set_string_value;
|
||||
a._spine_event_get_volume=Y.spine_event_get_volume;a._spine_event_set_volume=Y.spine_event_set_volume;a._spine_event_get_balance=Y.spine_event_get_balance;a._spine_event_set_balance=Y.spine_event_set_balance;a._spine_slot_data_get_index=Y.spine_slot_data_get_index;a._spine_slot_data_get_name=Y.spine_slot_data_get_name;a._spine_slot_data_get_bone_data=Y.spine_slot_data_get_bone_data;a._spine_slot_data_get_color=Y.spine_slot_data_get_color;a._spine_slot_data_set_color=Y.spine_slot_data_set_color;
|
||||
a._spine_slot_data_get_dark_color=Y.spine_slot_data_get_dark_color;a._spine_slot_data_set_dark_color=Y.spine_slot_data_set_dark_color;a._spine_slot_data_get_has_dark_color=Y.spine_slot_data_get_has_dark_color;a._spine_slot_data_set_has_dark_color=Y.spine_slot_data_set_has_dark_color;a._spine_slot_data_get_attachment_name=Y.spine_slot_data_get_attachment_name;a._spine_slot_data_set_attachment_name=Y.spine_slot_data_set_attachment_name;a._spine_slot_data_get_blend_mode=Y.spine_slot_data_get_blend_mode;
|
||||
a._spine_slot_data_set_blend_mode=Y.spine_slot_data_set_blend_mode;a._spine_slot_data_is_visible=Y.spine_slot_data_is_visible;a._spine_slot_data_set_visible=Y.spine_slot_data_set_visible;a._spine_slot_set_to_setup_pose=Y.spine_slot_set_to_setup_pose;a._spine_slot_get_data=Y.spine_slot_get_data;a._spine_slot_get_bone=Y.spine_slot_get_bone;a._spine_slot_get_skeleton=Y.spine_slot_get_skeleton;a._spine_slot_get_color=Y.spine_slot_get_color;a._spine_slot_set_color=Y.spine_slot_set_color;
|
||||
a._spine_slot_get_dark_color=Y.spine_slot_get_dark_color;a._spine_slot_set_dark_color=Y.spine_slot_set_dark_color;a._spine_slot_has_dark_color=Y.spine_slot_has_dark_color;a._spine_slot_get_attachment=Y.spine_slot_get_attachment;a._spine_slot_set_attachment=Y.spine_slot_set_attachment;a._spine_slot_get_sequence_index=Y.spine_slot_get_sequence_index;a._spine_slot_set_sequence_index=Y.spine_slot_set_sequence_index;a._spine_bone_data_get_index=Y.spine_bone_data_get_index;a._spine_bone_data_get_name=Y.spine_bone_data_get_name;
|
||||
a._spine_bone_data_get_parent=Y.spine_bone_data_get_parent;a._spine_bone_data_get_length=Y.spine_bone_data_get_length;a._spine_bone_data_set_length=Y.spine_bone_data_set_length;a._spine_bone_data_get_x=Y.spine_bone_data_get_x;a._spine_bone_data_set_x=Y.spine_bone_data_set_x;a._spine_bone_data_get_y=Y.spine_bone_data_get_y;a._spine_bone_data_set_y=Y.spine_bone_data_set_y;a._spine_bone_data_get_rotation=Y.spine_bone_data_get_rotation;a._spine_bone_data_set_rotation=Y.spine_bone_data_set_rotation;
|
||||
a._spine_bone_data_get_scale_x=Y.spine_bone_data_get_scale_x;a._spine_bone_data_set_scale_x=Y.spine_bone_data_set_scale_x;a._spine_bone_data_get_scale_y=Y.spine_bone_data_get_scale_y;a._spine_bone_data_set_scale_y=Y.spine_bone_data_set_scale_y;a._spine_bone_data_get_shear_x=Y.spine_bone_data_get_shear_x;a._spine_bone_data_set_shear_x=Y.spine_bone_data_set_shear_x;a._spine_bone_data_get_shear_y=Y.spine_bone_data_get_shear_y;a._spine_bone_data_set_shear_y=Y.spine_bone_data_set_shear_y;
|
||||
a._spine_bone_data_get_inherit=Y.spine_bone_data_get_inherit;a._spine_bone_data_set_inherit=Y.spine_bone_data_set_inherit;a._spine_bone_data_get_is_skin_required=Y.spine_bone_data_get_is_skin_required;a._spine_bone_data_set_is_skin_required=Y.spine_bone_data_set_is_skin_required;a._spine_bone_data_get_color=Y.spine_bone_data_get_color;a._spine_bone_data_set_color=Y.spine_bone_data_set_color;a._spine_bone_data_is_visible=Y.spine_bone_data_is_visible;a._spine_bone_data_set_visible=Y.spine_bone_data_set_visible;
|
||||
a._spine_bone_set_is_y_down=Y.spine_bone_set_is_y_down;a._spine_bone_get_is_y_down=Y.spine_bone_get_is_y_down;a._spine_bone_update=Y.spine_bone_update;a._spine_bone_update_world_transform=Y.spine_bone_update_world_transform;a._spine_bone_update_world_transform_with=Y.spine_bone_update_world_transform_with;a._spine_bone_update_applied_transform=Y.spine_bone_update_applied_transform;a._spine_bone_set_to_setup_pose=Y.spine_bone_set_to_setup_pose;a._spine_bone_world_to_local=Y.spine_bone_world_to_local;
|
||||
a._spine_bone_world_to_parent=Y.spine_bone_world_to_parent;a._spine_bone_local_to_world=Y.spine_bone_local_to_world;a._spine_bone_parent_to_world=Y.spine_bone_parent_to_world;a._spine_bone_world_to_local_rotation=Y.spine_bone_world_to_local_rotation;a._spine_bone_local_to_world_rotation=Y.spine_bone_local_to_world_rotation;a._spine_bone_rotate_world=Y.spine_bone_rotate_world;a._spine_bone_get_world_to_local_rotation_x=Y.spine_bone_get_world_to_local_rotation_x;
|
||||
a._spine_bone_get_world_to_local_rotation_y=Y.spine_bone_get_world_to_local_rotation_y;a._spine_bone_get_data=Y.spine_bone_get_data;a._spine_bone_get_skeleton=Y.spine_bone_get_skeleton;a._spine_bone_get_parent=Y.spine_bone_get_parent;a._spine_bone_get_num_children=Y.spine_bone_get_num_children;a._spine_bone_get_children=Y.spine_bone_get_children;a._spine_bone_get_x=Y.spine_bone_get_x;a._spine_bone_set_x=Y.spine_bone_set_x;a._spine_bone_get_y=Y.spine_bone_get_y;a._spine_bone_set_y=Y.spine_bone_set_y;
|
||||
a._spine_bone_get_rotation=Y.spine_bone_get_rotation;a._spine_bone_set_rotation=Y.spine_bone_set_rotation;a._spine_bone_get_scale_x=Y.spine_bone_get_scale_x;a._spine_bone_set_scale_x=Y.spine_bone_set_scale_x;a._spine_bone_get_scale_y=Y.spine_bone_get_scale_y;a._spine_bone_set_scale_y=Y.spine_bone_set_scale_y;a._spine_bone_get_shear_x=Y.spine_bone_get_shear_x;a._spine_bone_set_shear_x=Y.spine_bone_set_shear_x;a._spine_bone_get_shear_y=Y.spine_bone_get_shear_y;a._spine_bone_set_shear_y=Y.spine_bone_set_shear_y;
|
||||
a._spine_bone_get_applied_rotation=Y.spine_bone_get_applied_rotation;a._spine_bone_set_applied_rotation=Y.spine_bone_set_applied_rotation;a._spine_bone_get_a_x=Y.spine_bone_get_a_x;a._spine_bone_set_a_x=Y.spine_bone_set_a_x;a._spine_bone_get_a_y=Y.spine_bone_get_a_y;a._spine_bone_set_a_y=Y.spine_bone_set_a_y;a._spine_bone_get_a_scale_x=Y.spine_bone_get_a_scale_x;a._spine_bone_set_a_scale_x=Y.spine_bone_set_a_scale_x;a._spine_bone_get_a_scale_y=Y.spine_bone_get_a_scale_y;
|
||||
a._spine_bone_set_a_scale_y=Y.spine_bone_set_a_scale_y;a._spine_bone_get_a_shear_x=Y.spine_bone_get_a_shear_x;a._spine_bone_set_a_shear_x=Y.spine_bone_set_a_shear_x;a._spine_bone_get_a_shear_y=Y.spine_bone_get_a_shear_y;a._spine_bone_set_a_shear_y=Y.spine_bone_set_a_shear_y;a._spine_bone_get_a=Y.spine_bone_get_a;a._spine_bone_set_a=Y.spine_bone_set_a;a._spine_bone_get_b=Y.spine_bone_get_b;a._spine_bone_set_b=Y.spine_bone_set_b;a._spine_bone_get_c=Y.spine_bone_get_c;a._spine_bone_set_c=Y.spine_bone_set_c;
|
||||
a._spine_bone_get_d=Y.spine_bone_get_d;a._spine_bone_set_d=Y.spine_bone_set_d;a._spine_bone_get_world_x=Y.spine_bone_get_world_x;a._spine_bone_set_world_x=Y.spine_bone_set_world_x;a._spine_bone_get_world_y=Y.spine_bone_get_world_y;a._spine_bone_set_world_y=Y.spine_bone_set_world_y;a._spine_bone_get_world_rotation_x=Y.spine_bone_get_world_rotation_x;a._spine_bone_get_world_rotation_y=Y.spine_bone_get_world_rotation_y;a._spine_bone_get_world_scale_x=Y.spine_bone_get_world_scale_x;
|
||||
a._spine_bone_get_world_scale_y=Y.spine_bone_get_world_scale_y;a._spine_bone_get_is_active=Y.spine_bone_get_is_active;a._spine_bone_set_is_active=Y.spine_bone_set_is_active;a._spine_bone_get_inherit=Y.spine_bone_get_inherit;a._spine_bone_set_inherit=Y.spine_bone_set_inherit;a._spine_attachment_get_name=Y.spine_attachment_get_name;a._spine_attachment_get_type=Y.spine_attachment_get_type;a._spine_attachment_copy=Y.spine_attachment_copy;a._spine_attachment_cast_to_bounding_box_attachment=Y.spine_attachment_cast_to_bounding_box_attachment;
|
||||
a._spine_attachment_dispose=Y.spine_attachment_dispose;a._spine_point_attachment_compute_world_position=Y.spine_point_attachment_compute_world_position;a._spine_point_attachment_compute_world_rotation=Y.spine_point_attachment_compute_world_rotation;a._spine_point_attachment_get_x=Y.spine_point_attachment_get_x;a._spine_point_attachment_set_x=Y.spine_point_attachment_set_x;a._spine_point_attachment_get_y=Y.spine_point_attachment_get_y;a._spine_point_attachment_set_y=Y.spine_point_attachment_set_y;
|
||||
a._spine_point_attachment_get_rotation=Y.spine_point_attachment_get_rotation;a._spine_point_attachment_set_rotation=Y.spine_point_attachment_set_rotation;a._spine_point_attachment_get_color=Y.spine_point_attachment_get_color;a._spine_point_attachment_set_color=Y.spine_point_attachment_set_color;a._spine_region_attachment_update_region=Y.spine_region_attachment_update_region;a._spine_region_attachment_compute_world_vertices=Y.spine_region_attachment_compute_world_vertices;
|
||||
a._spine_region_attachment_get_x=Y.spine_region_attachment_get_x;a._spine_region_attachment_set_x=Y.spine_region_attachment_set_x;a._spine_region_attachment_get_y=Y.spine_region_attachment_get_y;a._spine_region_attachment_set_y=Y.spine_region_attachment_set_y;a._spine_region_attachment_get_rotation=Y.spine_region_attachment_get_rotation;a._spine_region_attachment_set_rotation=Y.spine_region_attachment_set_rotation;a._spine_region_attachment_get_scale_x=Y.spine_region_attachment_get_scale_x;
|
||||
a._spine_region_attachment_set_scale_x=Y.spine_region_attachment_set_scale_x;a._spine_region_attachment_get_scale_y=Y.spine_region_attachment_get_scale_y;a._spine_region_attachment_set_scale_y=Y.spine_region_attachment_set_scale_y;a._spine_region_attachment_get_width=Y.spine_region_attachment_get_width;a._spine_region_attachment_set_width=Y.spine_region_attachment_set_width;a._spine_region_attachment_get_height=Y.spine_region_attachment_get_height;a._spine_region_attachment_set_height=Y.spine_region_attachment_set_height;
|
||||
a._spine_region_attachment_get_color=Y.spine_region_attachment_get_color;a._spine_region_attachment_set_color=Y.spine_region_attachment_set_color;a._spine_region_attachment_get_path=Y.spine_region_attachment_get_path;a._spine_region_attachment_get_region=Y.spine_region_attachment_get_region;a._spine_region_attachment_get_sequence=Y.spine_region_attachment_get_sequence;a._spine_region_attachment_get_num_offset=Y.spine_region_attachment_get_num_offset;a._spine_region_attachment_get_offset=Y.spine_region_attachment_get_offset;
|
||||
a._spine_region_attachment_get_num_uvs=Y.spine_region_attachment_get_num_uvs;a._spine_region_attachment_get_uvs=Y.spine_region_attachment_get_uvs;a._spine_vertex_attachment_get_world_vertices_length=Y.spine_vertex_attachment_get_world_vertices_length;a._spine_vertex_attachment_compute_world_vertices=Y.spine_vertex_attachment_compute_world_vertices;a._spine_vertex_attachment_get_num_bones=Y.spine_vertex_attachment_get_num_bones;a._spine_vertex_attachment_get_bones=Y.spine_vertex_attachment_get_bones;
|
||||
a._spine_vertex_attachment_get_num_vertices=Y.spine_vertex_attachment_get_num_vertices;a._spine_vertex_attachment_get_vertices=Y.spine_vertex_attachment_get_vertices;a._spine_vertex_attachment_get_timeline_attachment=Y.spine_vertex_attachment_get_timeline_attachment;a._spine_vertex_attachment_set_timeline_attachment=Y.spine_vertex_attachment_set_timeline_attachment;a._spine_mesh_attachment_update_region=Y.spine_mesh_attachment_update_region;a._spine_mesh_attachment_get_hull_length=Y.spine_mesh_attachment_get_hull_length;
|
||||
a._spine_mesh_attachment_set_hull_length=Y.spine_mesh_attachment_set_hull_length;a._spine_mesh_attachment_get_num_region_uvs=Y.spine_mesh_attachment_get_num_region_uvs;a._spine_mesh_attachment_get_region_uvs=Y.spine_mesh_attachment_get_region_uvs;a._spine_mesh_attachment_get_num_uvs=Y.spine_mesh_attachment_get_num_uvs;a._spine_mesh_attachment_get_uvs=Y.spine_mesh_attachment_get_uvs;a._spine_mesh_attachment_get_num_triangles=Y.spine_mesh_attachment_get_num_triangles;
|
||||
a._spine_mesh_attachment_get_triangles=Y.spine_mesh_attachment_get_triangles;a._spine_mesh_attachment_get_color=Y.spine_mesh_attachment_get_color;a._spine_mesh_attachment_set_color=Y.spine_mesh_attachment_set_color;a._spine_mesh_attachment_get_path=Y.spine_mesh_attachment_get_path;a._spine_mesh_attachment_get_region=Y.spine_mesh_attachment_get_region;a._spine_mesh_attachment_get_sequence=Y.spine_mesh_attachment_get_sequence;a._spine_mesh_attachment_get_parent_mesh=Y.spine_mesh_attachment_get_parent_mesh;
|
||||
a._spine_mesh_attachment_set_parent_mesh=Y.spine_mesh_attachment_set_parent_mesh;a._spine_mesh_attachment_get_num_edges=Y.spine_mesh_attachment_get_num_edges;a._spine_mesh_attachment_get_edges=Y.spine_mesh_attachment_get_edges;a._spine_mesh_attachment_get_width=Y.spine_mesh_attachment_get_width;a._spine_mesh_attachment_set_width=Y.spine_mesh_attachment_set_width;a._spine_mesh_attachment_get_height=Y.spine_mesh_attachment_get_height;a._spine_mesh_attachment_set_height=Y.spine_mesh_attachment_set_height;
|
||||
a._spine_clipping_attachment_get_end_slot=Y.spine_clipping_attachment_get_end_slot;a._spine_clipping_attachment_set_end_slot=Y.spine_clipping_attachment_set_end_slot;a._spine_clipping_attachment_get_color=Y.spine_clipping_attachment_get_color;a._spine_clipping_attachment_set_color=Y.spine_clipping_attachment_set_color;a._spine_bounding_box_attachment_get_color=Y.spine_bounding_box_attachment_get_color;a._spine_bounding_box_attachment_set_color=Y.spine_bounding_box_attachment_set_color;
|
||||
a._spine_path_attachment_get_num_lengths=Y.spine_path_attachment_get_num_lengths;a._spine_path_attachment_get_lengths=Y.spine_path_attachment_get_lengths;a._spine_path_attachment_get_is_closed=Y.spine_path_attachment_get_is_closed;a._spine_path_attachment_set_is_closed=Y.spine_path_attachment_set_is_closed;a._spine_path_attachment_get_is_constant_speed=Y.spine_path_attachment_get_is_constant_speed;a._spine_path_attachment_set_is_constant_speed=Y.spine_path_attachment_set_is_constant_speed;
|
||||
a._spine_path_attachment_get_color=Y.spine_path_attachment_get_color;a._spine_path_attachment_set_color=Y.spine_path_attachment_set_color;a._spine_skin_set_attachment=Y.spine_skin_set_attachment;a._spine_skin_get_attachment=Y.spine_skin_get_attachment;a._spine_skin_remove_attachment=Y.spine_skin_remove_attachment;a._spine_skin_get_name=Y.spine_skin_get_name;a._spine_skin_add_skin=Y.spine_skin_add_skin;a._spine_skin_copy_skin=Y.spine_skin_copy_skin;a._spine_skin_get_entries=Y.spine_skin_get_entries;
|
||||
a._spine_skin_entries_get_num_entries=Y.spine_skin_entries_get_num_entries;a._spine_skin_entries_get_entry=Y.spine_skin_entries_get_entry;a._spine_skin_entries_dispose=Y.spine_skin_entries_dispose;a._spine_skin_entry_get_slot_index=Y.spine_skin_entry_get_slot_index;a._spine_skin_entry_get_name=Y.spine_skin_entry_get_name;a._spine_skin_entry_get_attachment=Y.spine_skin_entry_get_attachment;a._spine_skin_get_num_bones=Y.spine_skin_get_num_bones;a._spine_skin_get_bones=Y.spine_skin_get_bones;
|
||||
a._spine_skin_get_num_constraints=Y.spine_skin_get_num_constraints;a._spine_skin_get_constraints=Y.spine_skin_get_constraints;a._spine_skin_create=Y.spine_skin_create;a._spine_skin_dispose=Y.spine_skin_dispose;a._spine_constraint_data_get_type=Y.spine_constraint_data_get_type;a._spine_constraint_data_get_name=Y.spine_constraint_data_get_name;a._spine_constraint_data_get_order=Y.spine_constraint_data_get_order;a._spine_constraint_data_set_order=Y.spine_constraint_data_set_order;
|
||||
a._spine_constraint_data_get_is_skin_required=Y.spine_constraint_data_get_is_skin_required;a._spine_constraint_data_set_is_skin_required=Y.spine_constraint_data_set_is_skin_required;a._spine_ik_constraint_data_get_num_bones=Y.spine_ik_constraint_data_get_num_bones;a._spine_ik_constraint_data_get_bones=Y.spine_ik_constraint_data_get_bones;a._spine_ik_constraint_data_get_target=Y.spine_ik_constraint_data_get_target;a._spine_ik_constraint_data_set_target=Y.spine_ik_constraint_data_set_target;
|
||||
a._spine_ik_constraint_data_get_bend_direction=Y.spine_ik_constraint_data_get_bend_direction;a._spine_ik_constraint_data_set_bend_direction=Y.spine_ik_constraint_data_set_bend_direction;a._spine_ik_constraint_data_get_compress=Y.spine_ik_constraint_data_get_compress;a._spine_ik_constraint_data_set_compress=Y.spine_ik_constraint_data_set_compress;a._spine_ik_constraint_data_get_stretch=Y.spine_ik_constraint_data_get_stretch;a._spine_ik_constraint_data_set_stretch=Y.spine_ik_constraint_data_set_stretch;
|
||||
a._spine_ik_constraint_data_get_uniform=Y.spine_ik_constraint_data_get_uniform;a._spine_ik_constraint_data_set_uniform=Y.spine_ik_constraint_data_set_uniform;a._spine_ik_constraint_data_get_mix=Y.spine_ik_constraint_data_get_mix;a._spine_ik_constraint_data_set_mix=Y.spine_ik_constraint_data_set_mix;a._spine_ik_constraint_data_get_softness=Y.spine_ik_constraint_data_get_softness;a._spine_ik_constraint_data_set_softness=Y.spine_ik_constraint_data_set_softness;a._spine_ik_constraint_update=Y.spine_ik_constraint_update;
|
||||
a._spine_ik_constraint_get_order=Y.spine_ik_constraint_get_order;a._spine_ik_constraint_get_data=Y.spine_ik_constraint_get_data;a._spine_ik_constraint_get_num_bones=Y.spine_ik_constraint_get_num_bones;a._spine_ik_constraint_get_bones=Y.spine_ik_constraint_get_bones;a._spine_ik_constraint_get_target=Y.spine_ik_constraint_get_target;a._spine_ik_constraint_set_target=Y.spine_ik_constraint_set_target;a._spine_ik_constraint_get_bend_direction=Y.spine_ik_constraint_get_bend_direction;
|
||||
a._spine_ik_constraint_set_bend_direction=Y.spine_ik_constraint_set_bend_direction;a._spine_ik_constraint_get_compress=Y.spine_ik_constraint_get_compress;a._spine_ik_constraint_set_compress=Y.spine_ik_constraint_set_compress;a._spine_ik_constraint_get_stretch=Y.spine_ik_constraint_get_stretch;a._spine_ik_constraint_set_stretch=Y.spine_ik_constraint_set_stretch;a._spine_ik_constraint_get_mix=Y.spine_ik_constraint_get_mix;a._spine_ik_constraint_set_mix=Y.spine_ik_constraint_set_mix;
|
||||
a._spine_ik_constraint_get_softness=Y.spine_ik_constraint_get_softness;a._spine_ik_constraint_set_softness=Y.spine_ik_constraint_set_softness;a._spine_ik_constraint_get_is_active=Y.spine_ik_constraint_get_is_active;a._spine_ik_constraint_set_is_active=Y.spine_ik_constraint_set_is_active;a._spine_transform_constraint_data_get_num_bones=Y.spine_transform_constraint_data_get_num_bones;a._spine_transform_constraint_data_get_bones=Y.spine_transform_constraint_data_get_bones;
|
||||
a._spine_transform_constraint_data_get_target=Y.spine_transform_constraint_data_get_target;a._spine_transform_constraint_data_set_target=Y.spine_transform_constraint_data_set_target;a._spine_transform_constraint_data_get_mix_rotate=Y.spine_transform_constraint_data_get_mix_rotate;a._spine_transform_constraint_data_set_mix_rotate=Y.spine_transform_constraint_data_set_mix_rotate;a._spine_transform_constraint_data_get_mix_x=Y.spine_transform_constraint_data_get_mix_x;
|
||||
a._spine_transform_constraint_data_set_mix_x=Y.spine_transform_constraint_data_set_mix_x;a._spine_transform_constraint_data_get_mix_y=Y.spine_transform_constraint_data_get_mix_y;a._spine_transform_constraint_data_set_mix_y=Y.spine_transform_constraint_data_set_mix_y;a._spine_transform_constraint_data_get_mix_scale_x=Y.spine_transform_constraint_data_get_mix_scale_x;a._spine_transform_constraint_data_set_mix_scale_x=Y.spine_transform_constraint_data_set_mix_scale_x;
|
||||
a._spine_transform_constraint_data_get_mix_scale_y=Y.spine_transform_constraint_data_get_mix_scale_y;a._spine_transform_constraint_data_set_mix_scale_y=Y.spine_transform_constraint_data_set_mix_scale_y;a._spine_transform_constraint_data_get_mix_shear_y=Y.spine_transform_constraint_data_get_mix_shear_y;a._spine_transform_constraint_data_set_mix_shear_y=Y.spine_transform_constraint_data_set_mix_shear_y;a._spine_transform_constraint_data_get_offset_rotation=Y.spine_transform_constraint_data_get_offset_rotation;
|
||||
a._spine_transform_constraint_data_set_offset_rotation=Y.spine_transform_constraint_data_set_offset_rotation;a._spine_transform_constraint_data_get_offset_x=Y.spine_transform_constraint_data_get_offset_x;a._spine_transform_constraint_data_set_offset_x=Y.spine_transform_constraint_data_set_offset_x;a._spine_transform_constraint_data_get_offset_y=Y.spine_transform_constraint_data_get_offset_y;a._spine_transform_constraint_data_set_offset_y=Y.spine_transform_constraint_data_set_offset_y;
|
||||
a._spine_transform_constraint_data_get_offset_scale_x=Y.spine_transform_constraint_data_get_offset_scale_x;a._spine_transform_constraint_data_set_offset_scale_x=Y.spine_transform_constraint_data_set_offset_scale_x;a._spine_transform_constraint_data_get_offset_scale_y=Y.spine_transform_constraint_data_get_offset_scale_y;a._spine_transform_constraint_data_set_offset_scale_y=Y.spine_transform_constraint_data_set_offset_scale_y;a._spine_transform_constraint_data_get_offset_shear_y=Y.spine_transform_constraint_data_get_offset_shear_y;
|
||||
a._spine_transform_constraint_data_set_offset_shear_y=Y.spine_transform_constraint_data_set_offset_shear_y;a._spine_transform_constraint_data_get_is_relative=Y.spine_transform_constraint_data_get_is_relative;a._spine_transform_constraint_data_set_is_relative=Y.spine_transform_constraint_data_set_is_relative;a._spine_transform_constraint_data_get_is_local=Y.spine_transform_constraint_data_get_is_local;a._spine_transform_constraint_data_set_is_local=Y.spine_transform_constraint_data_set_is_local;
|
||||
a._spine_transform_constraint_update=Y.spine_transform_constraint_update;a._spine_transform_constraint_get_order=Y.spine_transform_constraint_get_order;a._spine_transform_constraint_get_data=Y.spine_transform_constraint_get_data;a._spine_transform_constraint_get_num_bones=Y.spine_transform_constraint_get_num_bones;a._spine_transform_constraint_get_bones=Y.spine_transform_constraint_get_bones;a._spine_transform_constraint_get_target=Y.spine_transform_constraint_get_target;
|
||||
a._spine_transform_constraint_set_target=Y.spine_transform_constraint_set_target;a._spine_transform_constraint_get_mix_rotate=Y.spine_transform_constraint_get_mix_rotate;a._spine_transform_constraint_set_mix_rotate=Y.spine_transform_constraint_set_mix_rotate;a._spine_transform_constraint_get_mix_x=Y.spine_transform_constraint_get_mix_x;a._spine_transform_constraint_set_mix_x=Y.spine_transform_constraint_set_mix_x;a._spine_transform_constraint_get_mix_y=Y.spine_transform_constraint_get_mix_y;
|
||||
a._spine_transform_constraint_set_mix_y=Y.spine_transform_constraint_set_mix_y;a._spine_transform_constraint_get_mix_scale_x=Y.spine_transform_constraint_get_mix_scale_x;a._spine_transform_constraint_set_mix_scale_x=Y.spine_transform_constraint_set_mix_scale_x;a._spine_transform_constraint_get_mix_scale_y=Y.spine_transform_constraint_get_mix_scale_y;a._spine_transform_constraint_set_mix_scale_y=Y.spine_transform_constraint_set_mix_scale_y;a._spine_transform_constraint_get_mix_shear_y=Y.spine_transform_constraint_get_mix_shear_y;
|
||||
a._spine_transform_constraint_set_mix_shear_y=Y.spine_transform_constraint_set_mix_shear_y;a._spine_transform_constraint_get_is_active=Y.spine_transform_constraint_get_is_active;a._spine_transform_constraint_set_is_active=Y.spine_transform_constraint_set_is_active;a._spine_path_constraint_data_get_num_bones=Y.spine_path_constraint_data_get_num_bones;a._spine_path_constraint_data_get_bones=Y.spine_path_constraint_data_get_bones;a._spine_path_constraint_data_get_target=Y.spine_path_constraint_data_get_target;
|
||||
a._spine_path_constraint_data_set_target=Y.spine_path_constraint_data_set_target;a._spine_path_constraint_data_get_position_mode=Y.spine_path_constraint_data_get_position_mode;a._spine_path_constraint_data_set_position_mode=Y.spine_path_constraint_data_set_position_mode;a._spine_path_constraint_data_get_spacing_mode=Y.spine_path_constraint_data_get_spacing_mode;a._spine_path_constraint_data_set_spacing_mode=Y.spine_path_constraint_data_set_spacing_mode;
|
||||
a._spine_path_constraint_data_get_rotate_mode=Y.spine_path_constraint_data_get_rotate_mode;a._spine_path_constraint_data_set_rotate_mode=Y.spine_path_constraint_data_set_rotate_mode;a._spine_path_constraint_data_get_offset_rotation=Y.spine_path_constraint_data_get_offset_rotation;a._spine_path_constraint_data_set_offset_rotation=Y.spine_path_constraint_data_set_offset_rotation;a._spine_path_constraint_data_get_position=Y.spine_path_constraint_data_get_position;
|
||||
a._spine_path_constraint_data_set_position=Y.spine_path_constraint_data_set_position;a._spine_path_constraint_data_get_spacing=Y.spine_path_constraint_data_get_spacing;a._spine_path_constraint_data_set_spacing=Y.spine_path_constraint_data_set_spacing;a._spine_path_constraint_data_get_mix_rotate=Y.spine_path_constraint_data_get_mix_rotate;a._spine_path_constraint_data_set_mix_rotate=Y.spine_path_constraint_data_set_mix_rotate;a._spine_path_constraint_data_get_mix_x=Y.spine_path_constraint_data_get_mix_x;
|
||||
a._spine_path_constraint_data_set_mix_x=Y.spine_path_constraint_data_set_mix_x;a._spine_path_constraint_data_get_mix_y=Y.spine_path_constraint_data_get_mix_y;a._spine_path_constraint_data_set_mix_y=Y.spine_path_constraint_data_set_mix_y;a._spine_path_constraint_update=Y.spine_path_constraint_update;a._spine_path_constraint_get_order=Y.spine_path_constraint_get_order;a._spine_path_constraint_get_data=Y.spine_path_constraint_get_data;a._spine_path_constraint_get_num_bones=Y.spine_path_constraint_get_num_bones;
|
||||
a._spine_path_constraint_get_bones=Y.spine_path_constraint_get_bones;a._spine_path_constraint_get_target=Y.spine_path_constraint_get_target;a._spine_path_constraint_set_target=Y.spine_path_constraint_set_target;a._spine_path_constraint_get_position=Y.spine_path_constraint_get_position;a._spine_path_constraint_set_position=Y.spine_path_constraint_set_position;a._spine_path_constraint_get_spacing=Y.spine_path_constraint_get_spacing;a._spine_path_constraint_set_spacing=Y.spine_path_constraint_set_spacing;
|
||||
a._spine_path_constraint_get_mix_rotate=Y.spine_path_constraint_get_mix_rotate;a._spine_path_constraint_set_mix_rotate=Y.spine_path_constraint_set_mix_rotate;a._spine_path_constraint_get_mix_x=Y.spine_path_constraint_get_mix_x;a._spine_path_constraint_set_mix_x=Y.spine_path_constraint_set_mix_x;a._spine_path_constraint_get_mix_y=Y.spine_path_constraint_get_mix_y;a._spine_path_constraint_set_mix_y=Y.spine_path_constraint_set_mix_y;a._spine_path_constraint_get_is_active=Y.spine_path_constraint_get_is_active;
|
||||
a._spine_path_constraint_set_is_active=Y.spine_path_constraint_set_is_active;a._spine_physics_constraint_data_set_bone=Y.spine_physics_constraint_data_set_bone;a._spine_physics_constraint_data_get_bone=Y.spine_physics_constraint_data_get_bone;a._spine_physics_constraint_data_set_x=Y.spine_physics_constraint_data_set_x;a._spine_physics_constraint_data_get_x=Y.spine_physics_constraint_data_get_x;a._spine_physics_constraint_data_set_y=Y.spine_physics_constraint_data_set_y;
|
||||
a._spine_physics_constraint_data_get_y=Y.spine_physics_constraint_data_get_y;a._spine_physics_constraint_data_set_rotate=Y.spine_physics_constraint_data_set_rotate;a._spine_physics_constraint_data_get_rotate=Y.spine_physics_constraint_data_get_rotate;a._spine_physics_constraint_data_set_scale_x=Y.spine_physics_constraint_data_set_scale_x;a._spine_physics_constraint_data_get_scale_x=Y.spine_physics_constraint_data_get_scale_x;a._spine_physics_constraint_data_set_shear_x=Y.spine_physics_constraint_data_set_shear_x;
|
||||
a._spine_physics_constraint_data_get_shear_x=Y.spine_physics_constraint_data_get_shear_x;a._spine_physics_constraint_data_set_limit=Y.spine_physics_constraint_data_set_limit;a._spine_physics_constraint_data_get_limit=Y.spine_physics_constraint_data_get_limit;a._spine_physics_constraint_data_set_step=Y.spine_physics_constraint_data_set_step;a._spine_physics_constraint_data_get_step=Y.spine_physics_constraint_data_get_step;a._spine_physics_constraint_data_set_inertia=Y.spine_physics_constraint_data_set_inertia;
|
||||
a._spine_physics_constraint_data_get_inertia=Y.spine_physics_constraint_data_get_inertia;a._spine_physics_constraint_data_set_strength=Y.spine_physics_constraint_data_set_strength;a._spine_physics_constraint_data_get_strength=Y.spine_physics_constraint_data_get_strength;a._spine_physics_constraint_data_set_damping=Y.spine_physics_constraint_data_set_damping;a._spine_physics_constraint_data_get_damping=Y.spine_physics_constraint_data_get_damping;a._spine_physics_constraint_data_set_mass_inverse=Y.spine_physics_constraint_data_set_mass_inverse;
|
||||
a._spine_physics_constraint_data_get_mass_inverse=Y.spine_physics_constraint_data_get_mass_inverse;a._spine_physics_constraint_data_set_wind=Y.spine_physics_constraint_data_set_wind;a._spine_physics_constraint_data_get_wind=Y.spine_physics_constraint_data_get_wind;a._spine_physics_constraint_data_set_gravity=Y.spine_physics_constraint_data_set_gravity;a._spine_physics_constraint_data_get_gravity=Y.spine_physics_constraint_data_get_gravity;a._spine_physics_constraint_data_set_mix=Y.spine_physics_constraint_data_set_mix;
|
||||
a._spine_physics_constraint_data_get_mix=Y.spine_physics_constraint_data_get_mix;a._spine_physics_constraint_data_set_inertia_global=Y.spine_physics_constraint_data_set_inertia_global;a._spine_physics_constraint_data_is_inertia_global=Y.spine_physics_constraint_data_is_inertia_global;a._spine_physics_constraint_data_set_strength_global=Y.spine_physics_constraint_data_set_strength_global;a._spine_physics_constraint_data_is_strength_global=Y.spine_physics_constraint_data_is_strength_global;
|
||||
a._spine_physics_constraint_data_set_damping_global=Y.spine_physics_constraint_data_set_damping_global;a._spine_physics_constraint_data_is_damping_global=Y.spine_physics_constraint_data_is_damping_global;a._spine_physics_constraint_data_set_mass_global=Y.spine_physics_constraint_data_set_mass_global;a._spine_physics_constraint_data_is_mass_global=Y.spine_physics_constraint_data_is_mass_global;a._spine_physics_constraint_data_set_wind_global=Y.spine_physics_constraint_data_set_wind_global;
|
||||
a._spine_physics_constraint_data_is_wind_global=Y.spine_physics_constraint_data_is_wind_global;a._spine_physics_constraint_data_set_gravity_global=Y.spine_physics_constraint_data_set_gravity_global;a._spine_physics_constraint_data_is_gravity_global=Y.spine_physics_constraint_data_is_gravity_global;a._spine_physics_constraint_data_set_mix_global=Y.spine_physics_constraint_data_set_mix_global;a._spine_physics_constraint_data_is_mix_global=Y.spine_physics_constraint_data_is_mix_global;
|
||||
a._spine_physics_constraint_set_bone=Y.spine_physics_constraint_set_bone;a._spine_physics_constraint_get_bone=Y.spine_physics_constraint_get_bone;a._spine_physics_constraint_set_inertia=Y.spine_physics_constraint_set_inertia;a._spine_physics_constraint_get_inertia=Y.spine_physics_constraint_get_inertia;a._spine_physics_constraint_set_strength=Y.spine_physics_constraint_set_strength;a._spine_physics_constraint_get_strength=Y.spine_physics_constraint_get_strength;
|
||||
a._spine_physics_constraint_set_damping=Y.spine_physics_constraint_set_damping;a._spine_physics_constraint_get_damping=Y.spine_physics_constraint_get_damping;a._spine_physics_constraint_set_mass_inverse=Y.spine_physics_constraint_set_mass_inverse;a._spine_physics_constraint_get_mass_inverse=Y.spine_physics_constraint_get_mass_inverse;a._spine_physics_constraint_set_wind=Y.spine_physics_constraint_set_wind;a._spine_physics_constraint_get_wind=Y.spine_physics_constraint_get_wind;
|
||||
a._spine_physics_constraint_set_gravity=Y.spine_physics_constraint_set_gravity;a._spine_physics_constraint_get_gravity=Y.spine_physics_constraint_get_gravity;a._spine_physics_constraint_set_mix=Y.spine_physics_constraint_set_mix;a._spine_physics_constraint_get_mix=Y.spine_physics_constraint_get_mix;a._spine_physics_constraint_set_reset=Y.spine_physics_constraint_set_reset;a._spine_physics_constraint_get_reset=Y.spine_physics_constraint_get_reset;a._spine_physics_constraint_set_ux=Y.spine_physics_constraint_set_ux;
|
||||
a._spine_physics_constraint_get_ux=Y.spine_physics_constraint_get_ux;a._spine_physics_constraint_set_uy=Y.spine_physics_constraint_set_uy;a._spine_physics_constraint_get_uy=Y.spine_physics_constraint_get_uy;a._spine_physics_constraint_set_cx=Y.spine_physics_constraint_set_cx;a._spine_physics_constraint_get_cx=Y.spine_physics_constraint_get_cx;a._spine_physics_constraint_set_cy=Y.spine_physics_constraint_set_cy;a._spine_physics_constraint_get_cy=Y.spine_physics_constraint_get_cy;
|
||||
a._spine_physics_constraint_set_tx=Y.spine_physics_constraint_set_tx;a._spine_physics_constraint_get_tx=Y.spine_physics_constraint_get_tx;a._spine_physics_constraint_set_ty=Y.spine_physics_constraint_set_ty;a._spine_physics_constraint_get_ty=Y.spine_physics_constraint_get_ty;a._spine_physics_constraint_set_x_offset=Y.spine_physics_constraint_set_x_offset;a._spine_physics_constraint_get_x_offset=Y.spine_physics_constraint_get_x_offset;a._spine_physics_constraint_set_x_velocity=Y.spine_physics_constraint_set_x_velocity;
|
||||
a._spine_physics_constraint_get_x_velocity=Y.spine_physics_constraint_get_x_velocity;a._spine_physics_constraint_set_y_offset=Y.spine_physics_constraint_set_y_offset;a._spine_physics_constraint_get_y_offset=Y.spine_physics_constraint_get_y_offset;a._spine_physics_constraint_set_y_velocity=Y.spine_physics_constraint_set_y_velocity;a._spine_physics_constraint_get_y_velocity=Y.spine_physics_constraint_get_y_velocity;a._spine_physics_constraint_set_rotate_offset=Y.spine_physics_constraint_set_rotate_offset;
|
||||
a._spine_physics_constraint_get_rotate_offset=Y.spine_physics_constraint_get_rotate_offset;a._spine_physics_constraint_set_rotate_velocity=Y.spine_physics_constraint_set_rotate_velocity;a._spine_physics_constraint_get_rotate_velocity=Y.spine_physics_constraint_get_rotate_velocity;a._spine_physics_constraint_set_scale_offset=Y.spine_physics_constraint_set_scale_offset;a._spine_physics_constraint_get_scale_offset=Y.spine_physics_constraint_get_scale_offset;
|
||||
a._spine_physics_constraint_set_scale_velocity=Y.spine_physics_constraint_set_scale_velocity;a._spine_physics_constraint_get_scale_velocity=Y.spine_physics_constraint_get_scale_velocity;a._spine_physics_constraint_set_active=Y.spine_physics_constraint_set_active;a._spine_physics_constraint_is_active=Y.spine_physics_constraint_is_active;a._spine_physics_constraint_set_remaining=Y.spine_physics_constraint_set_remaining;a._spine_physics_constraint_get_remaining=Y.spine_physics_constraint_get_remaining;
|
||||
a._spine_physics_constraint_set_last_time=Y.spine_physics_constraint_set_last_time;a._spine_physics_constraint_get_last_time=Y.spine_physics_constraint_get_last_time;a._spine_physics_constraint_reset_fully=Y.spine_physics_constraint_reset_fully;a._spine_physics_constraint_update=Y.spine_physics_constraint_update;a._spine_physics_constraint_translate=Y.spine_physics_constraint_translate;a._spine_physics_constraint_rotate=Y.spine_physics_constraint_rotate;a._spine_sequence_apply=Y.spine_sequence_apply;
|
||||
a._spine_sequence_get_path=Y.spine_sequence_get_path;a._spine_sequence_get_id=Y.spine_sequence_get_id;a._spine_sequence_set_id=Y.spine_sequence_set_id;a._spine_sequence_get_start=Y.spine_sequence_get_start;a._spine_sequence_set_start=Y.spine_sequence_set_start;a._spine_sequence_get_digits=Y.spine_sequence_get_digits;a._spine_sequence_set_digits=Y.spine_sequence_set_digits;a._spine_sequence_get_setup_index=Y.spine_sequence_get_setup_index;a._spine_sequence_set_setup_index=Y.spine_sequence_set_setup_index;
|
||||
a._spine_sequence_get_num_regions=Y.spine_sequence_get_num_regions;a._spine_sequence_get_regions=Y.spine_sequence_get_regions;a._spine_texture_region_get_texture=Y.spine_texture_region_get_texture;a._spine_texture_region_set_texture=Y.spine_texture_region_set_texture;a._spine_texture_region_get_u=Y.spine_texture_region_get_u;a._spine_texture_region_set_u=Y.spine_texture_region_set_u;a._spine_texture_region_get_v=Y.spine_texture_region_get_v;a._spine_texture_region_set_v=Y.spine_texture_region_set_v;
|
||||
a._spine_texture_region_get_u2=Y.spine_texture_region_get_u2;a._spine_texture_region_set_u2=Y.spine_texture_region_set_u2;a._spine_texture_region_get_v2=Y.spine_texture_region_get_v2;a._spine_texture_region_set_v2=Y.spine_texture_region_set_v2;a._spine_texture_region_get_degrees=Y.spine_texture_region_get_degrees;a._spine_texture_region_set_degrees=Y.spine_texture_region_set_degrees;a._spine_texture_region_get_offset_x=Y.spine_texture_region_get_offset_x;a._spine_texture_region_set_offset_x=Y.spine_texture_region_set_offset_x;
|
||||
a._spine_texture_region_get_offset_y=Y.spine_texture_region_get_offset_y;a._spine_texture_region_set_offset_y=Y.spine_texture_region_set_offset_y;a._spine_texture_region_get_width=Y.spine_texture_region_get_width;a._spine_texture_region_set_width=Y.spine_texture_region_set_width;a._spine_texture_region_get_height=Y.spine_texture_region_get_height;a._spine_texture_region_set_height=Y.spine_texture_region_set_height;a._spine_texture_region_get_original_width=Y.spine_texture_region_get_original_width;
|
||||
a._spine_texture_region_set_original_width=Y.spine_texture_region_set_original_width;a._spine_texture_region_get_original_height=Y.spine_texture_region_get_original_height;a._spine_texture_region_set_original_height=Y.spine_texture_region_set_original_height;a._spine_skeleton_bounds_create=Y.spine_skeleton_bounds_create;a._spine_skeleton_bounds_dispose=Y.spine_skeleton_bounds_dispose;a._spine_skeleton_bounds_update=Y.spine_skeleton_bounds_update;a._spine_skeleton_bounds_aabb_contains_point=Y.spine_skeleton_bounds_aabb_contains_point;
|
||||
a._spine_skeleton_bounds_aabb_intersects_segment=Y.spine_skeleton_bounds_aabb_intersects_segment;a._spine_skeleton_bounds_aabb_intersects_skeleton=Y.spine_skeleton_bounds_aabb_intersects_skeleton;a._spine_skeleton_bounds_contains_point=Y.spine_skeleton_bounds_contains_point;a._spine_skeleton_bounds_contains_point_attachment=Y.spine_skeleton_bounds_contains_point_attachment;a._spine_skeleton_bounds_intersects_segment_attachment=Y.spine_skeleton_bounds_intersects_segment_attachment;
|
||||
a._spine_skeleton_bounds_intersects_segment=Y.spine_skeleton_bounds_intersects_segment;a._spine_skeleton_bounds_get_polygon=Y.spine_skeleton_bounds_get_polygon;a._spine_skeleton_bounds_get_bounding_box=Y.spine_skeleton_bounds_get_bounding_box;a._spine_skeleton_bounds_get_num_polygons=Y.spine_skeleton_bounds_get_num_polygons;a._spine_skeleton_bounds_get_polygons=Y.spine_skeleton_bounds_get_polygons;a._spine_skeleton_bounds_get_num_bounding_boxes=Y.spine_skeleton_bounds_get_num_bounding_boxes;
|
||||
a._spine_skeleton_bounds_get_bounding_boxes=Y.spine_skeleton_bounds_get_bounding_boxes;a._spine_skeleton_bounds_get_width=Y.spine_skeleton_bounds_get_width;a._spine_skeleton_bounds_get_height=Y.spine_skeleton_bounds_get_height;a._spine_polygon_get_num_vertices=Y.spine_polygon_get_num_vertices;a._spine_polygon_get_vertices=Y.spine_polygon_get_vertices;a._malloc=Y.malloc;var ha=Y._emscripten_stack_restore,ia=Y.emscripten_stack_get_current;a.wasmExports=Y;
|
||||
function Z(){0<I?J=Z:0<I?J=Z:(a.calledRun=!0,x||(Y.__wasm_call_ctors(),b(a)))}Z();moduleRtn=k;
|
||||
|
||||
|
||||
var a;a||(a=typeof libspine_flutter !== 'undefined' ? libspine_flutter : {});var h,k;a.ready=new Promise(function(b,c){h=b;k=c});var l=Object.assign({},a),m="object"==typeof window,n="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,q="",r,t,u;
|
||||
if(p){q=n?require("path").dirname(q)+"/":__dirname+"/";var fs,v;"function"===typeof require&&(fs=require("fs"),v=require("path"));r=(b,c)=>{b=v.normalize(b);return fs.readFileSync(b,c?void 0:"utf8")};u=b=>{b=r(b,!0);b.buffer||(b=new Uint8Array(b));return b};t=(b,c,d)=>{b=v.normalize(b);fs.readFile(b,function(e,f){e?d(e):c(f.buffer)})};1<process.argv.length&&process.argv[1].replace(/\\/g,"/");process.argv.slice(2);process.on("uncaughtException",function(b){if(!(b instanceof w))throw b;});process.on("unhandledRejection",
|
||||
function(b){throw b;});a.inspect=function(){return"[Emscripten Module object]"}}else if(m||n)n?q=self.location.href:"undefined"!=typeof document&&document.currentScript&&(q=document.currentScript.src),_scriptDir&&(q=_scriptDir),0!==q.indexOf("blob:")?q=q.substr(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1):q="",r=b=>{var c=new XMLHttpRequest;c.open("GET",b,!1);c.send(null);return c.responseText},n&&(u=b=>{var c=new XMLHttpRequest;c.open("GET",b,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),
|
||||
t=(b,c,d)=>{var e=new XMLHttpRequest;e.open("GET",b,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)};var aa=a.print||console.log.bind(console),x=a.printErr||console.warn.bind(console);Object.assign(a,l);l=null;var y;a.wasmBinary&&(y=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;"object"!=typeof WebAssembly&&z("no native wasm support detected");
|
||||
var A,B=!1,D="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;
|
||||
function E(b,c){for(var d=c+NaN,e=c;b[e]&&!(e>=d);)++e;if(16<e-c&&b.buffer&&D)return D.decode(b.subarray(c,e));for(d="";c<e;){var f=b[c++];if(f&128){var g=b[c++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var C=b[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|C:(f&7)<<18|g<<12|C<<6|b[c++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}var F,G,H,I,J,K,L,M;
|
||||
function N(){var b=A.buffer;F=b;a.HEAP8=G=new Int8Array(b);a.HEAP16=I=new Int16Array(b);a.HEAP32=J=new Int32Array(b);a.HEAPU8=H=new Uint8Array(b);a.HEAPU16=new Uint16Array(b);a.HEAPU32=K=new Uint32Array(b);a.HEAPF32=L=new Float32Array(b);a.HEAPF64=M=new Float64Array(b)}var ba=[],ca=[],da=[];function ea(){var b=a.preRun.shift();ba.unshift(b)}var O=0,P=null,R=null;
|
||||
function z(b){if(a.onAbort)a.onAbort(b);b="Aborted("+b+")";x(b);B=!0;b=new WebAssembly.RuntimeError(b+". Build with -sASSERTIONS for more info.");k(b);throw b;}function fa(){return S.startsWith("data:application/octet-stream;base64,")}var S;S="libspine_flutter.wasm";if(!fa()){var ha=S;S=a.locateFile?a.locateFile(ha,q):q+ha}function ia(){var b=S;try{if(b==S&&y)return new Uint8Array(y);if(u)return u(b);throw"both async and sync fetching of the wasm failed";}catch(c){z(c)}}
|
||||
function ja(){if(!y&&(m||n)){if("function"==typeof fetch&&!S.startsWith("file://"))return fetch(S,{credentials:"same-origin"}).then(function(b){if(!b.ok)throw"failed to load wasm binary file at '"+S+"'";return b.arrayBuffer()}).catch(function(){return ia()});if(t)return new Promise(function(b,c){t(S,function(d){b(new Uint8Array(d))},c)})}return Promise.resolve().then(function(){return ia()})}var T,U;
|
||||
function w(b){this.name="ExitStatus";this.message="Program terminated with exit("+b+")";this.status=b}a.ExitStatus=w;function V(b){for(;0<b.length;)b.shift()(a)}a.callRuntimeCallbacks=V;a.getValue=function(b,c="i8"){c.endsWith("*")&&(c="*");switch(c){case "i1":return G[b>>0];case "i8":return G[b>>0];case "i16":return I[b>>1];case "i32":return J[b>>2];case "i64":return J[b>>2];case "float":return L[b>>2];case "double":return M[b>>3];case "*":return K[b>>2];default:z("invalid type for getValue: "+c)}return null};
|
||||
a.setValue=function(b,c,d="i8"){d.endsWith("*")&&(d="*");switch(d){case "i1":G[b>>0]=c;break;case "i8":G[b>>0]=c;break;case "i16":I[b>>1]=c;break;case "i32":J[b>>2]=c;break;case "i64":U=[c>>>0,(T=c,1<=+Math.abs(T)?0<T?(Math.min(+Math.floor(T/4294967296),4294967295)|0)>>>0:~~+Math.ceil((T-+(~~T>>>0))/4294967296)>>>0:0)];J[b>>2]=U[0];J[b+4>>2]=U[1];break;case "float":L[b>>2]=c;break;case "double":M[b>>3]=c;break;case "*":K[b>>2]=c;break;default:z("invalid type for setValue: "+d)}};
|
||||
function ka(b,c,d,e){z("Assertion failed: "+(b?E(H,b):"")+", at: "+[c?c?E(H,c):"":"unknown filename",d,e?e?E(H,e):"":"unknown function"])}a.___assert_fail=ka;function la(){z("")}a._abort=la;function ma(b,c,d){H.copyWithin(b,c,c+d)}a._emscripten_memcpy_big=ma;a.getHeapMax=function(){return 2147483648};function oa(b){try{return A.grow(b-F.byteLength+65535>>>16),N(),1}catch(c){}}a.emscripten_realloc_buffer=oa;
|
||||
function pa(b){var c=H.length;b>>>=0;if(2147483648<b)return!1;for(var d=1;4>=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,b+100663296);var f=Math;e=Math.max(b,e);if(oa(f.min.call(f,2147483648,e+(65536-e%65536)%65536)))return!0}return!1}a._emscripten_resize_heap=pa;var W=[null,[],[]];a.printCharBuffers=W;function X(b,c){var d=W[b];0===c||10===c?((1===b?aa:x)(E(d,0)),d.length=0):d.push(c)}a.printChar=X;a.flush_NO_FILESYSTEM=function(){W[1].length&&X(1,10);W[2].length&&X(2,10)};
|
||||
var Y={g:void 0,get:function(){Y.g+=4;return J[Y.g-4>>2]},h:function(b){return b?E(H,b):""}};a.SYSCALLS=Y;function qa(b,c,d,e){for(var f=0,g=0;g<d;g++){var C=K[c>>2],na=K[c+4>>2];c+=8;for(var Q=0;Q<na;Q++)X(b,H[C+Q]);f+=na}K[e>>2]=f;return 0}a._fd_write=qa;var ra={__assert_fail:ka,abort:la,emscripten_memcpy_big:ma,emscripten_resize_heap:pa,fd_write:qa};
|
||||
(function(){function b(f){a.asm=f.exports;A=a.asm.memory;N();ca.unshift(a.asm.__wasm_call_ctors);O--;a.monitorRunDependencies&&a.monitorRunDependencies(O);0==O&&(null!==P&&(clearInterval(P),P=null),R&&(f=R,R=null,f()))}function c(f){b(f.instance)}function d(f){return ja().then(function(g){return WebAssembly.instantiate(g,e)}).then(function(g){return g}).then(f,function(g){x("failed to asynchronously prepare wasm: "+g);z(g)})}var e={env:ra,wasi_snapshot_preview1:ra};O++;a.monitorRunDependencies&&a.monitorRunDependencies(O);
|
||||
if(a.instantiateWasm)try{return a.instantiateWasm(e,b)}catch(f){x("Module.instantiateWasm callback failed with error: "+f),k(f)}(function(){return y||"function"!=typeof WebAssembly.instantiateStreaming||fa()||S.startsWith("file://")||p||"function"!=typeof fetch?d(c):fetch(S,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){x("wasm streaming compile failed: "+g);x("falling back to ArrayBuffer instantiation");return d(c)})})})().catch(k);return{}})();
|
||||
a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.__wasm_call_ctors).apply(null,arguments)};a._spine_enable_debug_extension=function(){return(a._spine_enable_debug_extension=a.asm.spine_enable_debug_extension).apply(null,arguments)};a._spine_major_version=function(){return(a._spine_major_version=a.asm.spine_major_version).apply(null,arguments)};a._spine_minor_version=function(){return(a._spine_minor_version=a.asm.spine_minor_version).apply(null,arguments)};
|
||||
a._spine_report_leaks=function(){return(a._spine_report_leaks=a.asm.spine_report_leaks).apply(null,arguments)};a._spine_color_get_r=function(){return(a._spine_color_get_r=a.asm.spine_color_get_r).apply(null,arguments)};a._spine_color_get_g=function(){return(a._spine_color_get_g=a.asm.spine_color_get_g).apply(null,arguments)};a._spine_color_get_b=function(){return(a._spine_color_get_b=a.asm.spine_color_get_b).apply(null,arguments)};
|
||||
a._spine_color_get_a=function(){return(a._spine_color_get_a=a.asm.spine_color_get_a).apply(null,arguments)};a._spine_bounds_get_x=function(){return(a._spine_bounds_get_x=a.asm.spine_bounds_get_x).apply(null,arguments)};a._spine_bounds_get_y=function(){return(a._spine_bounds_get_y=a.asm.spine_bounds_get_y).apply(null,arguments)};a._spine_bounds_get_width=function(){return(a._spine_bounds_get_width=a.asm.spine_bounds_get_width).apply(null,arguments)};
|
||||
a._spine_bounds_get_height=function(){return(a._spine_bounds_get_height=a.asm.spine_bounds_get_height).apply(null,arguments)};a._spine_vector_get_x=function(){return(a._spine_vector_get_x=a.asm.spine_vector_get_x).apply(null,arguments)};a._spine_vector_get_y=function(){return(a._spine_vector_get_y=a.asm.spine_vector_get_y).apply(null,arguments)};a._spine_atlas_load=function(){return(a._spine_atlas_load=a.asm.spine_atlas_load).apply(null,arguments)};
|
||||
a._spine_atlas_get_num_image_paths=function(){return(a._spine_atlas_get_num_image_paths=a.asm.spine_atlas_get_num_image_paths).apply(null,arguments)};a._spine_atlas_is_pma=function(){return(a._spine_atlas_is_pma=a.asm.spine_atlas_is_pma).apply(null,arguments)};a._spine_atlas_get_image_path=function(){return(a._spine_atlas_get_image_path=a.asm.spine_atlas_get_image_path).apply(null,arguments)};
|
||||
a._spine_atlas_get_error=function(){return(a._spine_atlas_get_error=a.asm.spine_atlas_get_error).apply(null,arguments)};a._spine_atlas_dispose=function(){return(a._spine_atlas_dispose=a.asm.spine_atlas_dispose).apply(null,arguments)};a._free=function(){return(a._free=a.asm.free).apply(null,arguments)};a._spine_skeleton_data_load_json=function(){return(a._spine_skeleton_data_load_json=a.asm.spine_skeleton_data_load_json).apply(null,arguments)};
|
||||
a._spine_skeleton_data_load_binary=function(){return(a._spine_skeleton_data_load_binary=a.asm.spine_skeleton_data_load_binary).apply(null,arguments)};a._spine_skeleton_data_result_get_error=function(){return(a._spine_skeleton_data_result_get_error=a.asm.spine_skeleton_data_result_get_error).apply(null,arguments)};a._spine_skeleton_data_result_get_data=function(){return(a._spine_skeleton_data_result_get_data=a.asm.spine_skeleton_data_result_get_data).apply(null,arguments)};
|
||||
a._spine_skeleton_data_result_dispose=function(){return(a._spine_skeleton_data_result_dispose=a.asm.spine_skeleton_data_result_dispose).apply(null,arguments)};a._spine_skeleton_data_find_bone=function(){return(a._spine_skeleton_data_find_bone=a.asm.spine_skeleton_data_find_bone).apply(null,arguments)};a._spine_skeleton_data_find_slot=function(){return(a._spine_skeleton_data_find_slot=a.asm.spine_skeleton_data_find_slot).apply(null,arguments)};
|
||||
a._spine_skeleton_data_find_skin=function(){return(a._spine_skeleton_data_find_skin=a.asm.spine_skeleton_data_find_skin).apply(null,arguments)};a._spine_skeleton_data_find_event=function(){return(a._spine_skeleton_data_find_event=a.asm.spine_skeleton_data_find_event).apply(null,arguments)};a._spine_skeleton_data_find_animation=function(){return(a._spine_skeleton_data_find_animation=a.asm.spine_skeleton_data_find_animation).apply(null,arguments)};
|
||||
a._spine_skeleton_data_find_ik_constraint=function(){return(a._spine_skeleton_data_find_ik_constraint=a.asm.spine_skeleton_data_find_ik_constraint).apply(null,arguments)};a._spine_skeleton_data_find_transform_constraint=function(){return(a._spine_skeleton_data_find_transform_constraint=a.asm.spine_skeleton_data_find_transform_constraint).apply(null,arguments)};
|
||||
a._spine_skeleton_data_find_path_constraint=function(){return(a._spine_skeleton_data_find_path_constraint=a.asm.spine_skeleton_data_find_path_constraint).apply(null,arguments)};a._spine_skeleton_data_find_physics_constraint=function(){return(a._spine_skeleton_data_find_physics_constraint=a.asm.spine_skeleton_data_find_physics_constraint).apply(null,arguments)};a._spine_skeleton_data_get_name=function(){return(a._spine_skeleton_data_get_name=a.asm.spine_skeleton_data_get_name).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_num_bones=function(){return(a._spine_skeleton_data_get_num_bones=a.asm.spine_skeleton_data_get_num_bones).apply(null,arguments)};a._spine_skeleton_data_get_bones=function(){return(a._spine_skeleton_data_get_bones=a.asm.spine_skeleton_data_get_bones).apply(null,arguments)};a._spine_skeleton_data_get_num_slots=function(){return(a._spine_skeleton_data_get_num_slots=a.asm.spine_skeleton_data_get_num_slots).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_slots=function(){return(a._spine_skeleton_data_get_slots=a.asm.spine_skeleton_data_get_slots).apply(null,arguments)};a._spine_skeleton_data_get_num_skins=function(){return(a._spine_skeleton_data_get_num_skins=a.asm.spine_skeleton_data_get_num_skins).apply(null,arguments)};a._spine_skeleton_data_get_skins=function(){return(a._spine_skeleton_data_get_skins=a.asm.spine_skeleton_data_get_skins).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_default_skin=function(){return(a._spine_skeleton_data_get_default_skin=a.asm.spine_skeleton_data_get_default_skin).apply(null,arguments)};a._spine_skeleton_data_set_default_skin=function(){return(a._spine_skeleton_data_set_default_skin=a.asm.spine_skeleton_data_set_default_skin).apply(null,arguments)};a._spine_skeleton_data_get_num_events=function(){return(a._spine_skeleton_data_get_num_events=a.asm.spine_skeleton_data_get_num_events).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_events=function(){return(a._spine_skeleton_data_get_events=a.asm.spine_skeleton_data_get_events).apply(null,arguments)};a._spine_skeleton_data_get_num_animations=function(){return(a._spine_skeleton_data_get_num_animations=a.asm.spine_skeleton_data_get_num_animations).apply(null,arguments)};a._spine_skeleton_data_get_animations=function(){return(a._spine_skeleton_data_get_animations=a.asm.spine_skeleton_data_get_animations).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_num_ik_constraints=function(){return(a._spine_skeleton_data_get_num_ik_constraints=a.asm.spine_skeleton_data_get_num_ik_constraints).apply(null,arguments)};a._spine_skeleton_data_get_ik_constraints=function(){return(a._spine_skeleton_data_get_ik_constraints=a.asm.spine_skeleton_data_get_ik_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_num_transform_constraints=function(){return(a._spine_skeleton_data_get_num_transform_constraints=a.asm.spine_skeleton_data_get_num_transform_constraints).apply(null,arguments)};a._spine_skeleton_data_get_transform_constraints=function(){return(a._spine_skeleton_data_get_transform_constraints=a.asm.spine_skeleton_data_get_transform_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_num_path_constraints=function(){return(a._spine_skeleton_data_get_num_path_constraints=a.asm.spine_skeleton_data_get_num_path_constraints).apply(null,arguments)};a._spine_skeleton_data_get_path_constraints=function(){return(a._spine_skeleton_data_get_path_constraints=a.asm.spine_skeleton_data_get_path_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_num_physics_constraints=function(){return(a._spine_skeleton_data_get_num_physics_constraints=a.asm.spine_skeleton_data_get_num_physics_constraints).apply(null,arguments)};a._spine_skeleton_data_get_physics_constraints=function(){return(a._spine_skeleton_data_get_physics_constraints=a.asm.spine_skeleton_data_get_physics_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_x=function(){return(a._spine_skeleton_data_get_x=a.asm.spine_skeleton_data_get_x).apply(null,arguments)};a._spine_skeleton_data_set_x=function(){return(a._spine_skeleton_data_set_x=a.asm.spine_skeleton_data_set_x).apply(null,arguments)};a._spine_skeleton_data_get_y=function(){return(a._spine_skeleton_data_get_y=a.asm.spine_skeleton_data_get_y).apply(null,arguments)};
|
||||
a._spine_skeleton_data_set_y=function(){return(a._spine_skeleton_data_set_y=a.asm.spine_skeleton_data_set_y).apply(null,arguments)};a._spine_skeleton_data_get_width=function(){return(a._spine_skeleton_data_get_width=a.asm.spine_skeleton_data_get_width).apply(null,arguments)};a._spine_skeleton_data_set_width=function(){return(a._spine_skeleton_data_set_width=a.asm.spine_skeleton_data_set_width).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_height=function(){return(a._spine_skeleton_data_get_height=a.asm.spine_skeleton_data_get_height).apply(null,arguments)};a._spine_skeleton_data_set_height=function(){return(a._spine_skeleton_data_set_height=a.asm.spine_skeleton_data_set_height).apply(null,arguments)};a._spine_skeleton_data_get_version=function(){return(a._spine_skeleton_data_get_version=a.asm.spine_skeleton_data_get_version).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_hash=function(){return(a._spine_skeleton_data_get_hash=a.asm.spine_skeleton_data_get_hash).apply(null,arguments)};a._spine_skeleton_data_get_images_path=function(){return(a._spine_skeleton_data_get_images_path=a.asm.spine_skeleton_data_get_images_path).apply(null,arguments)};a._spine_skeleton_data_get_audio_path=function(){return(a._spine_skeleton_data_get_audio_path=a.asm.spine_skeleton_data_get_audio_path).apply(null,arguments)};
|
||||
a._spine_skeleton_data_get_fps=function(){return(a._spine_skeleton_data_get_fps=a.asm.spine_skeleton_data_get_fps).apply(null,arguments)};a._spine_skeleton_data_get_reference_scale=function(){return(a._spine_skeleton_data_get_reference_scale=a.asm.spine_skeleton_data_get_reference_scale).apply(null,arguments)};a._spine_skeleton_data_dispose=function(){return(a._spine_skeleton_data_dispose=a.asm.spine_skeleton_data_dispose).apply(null,arguments)};
|
||||
a._spine_skeleton_drawable_create=function(){return(a._spine_skeleton_drawable_create=a.asm.spine_skeleton_drawable_create).apply(null,arguments)};a._spine_skeleton_drawable_dispose=function(){return(a._spine_skeleton_drawable_dispose=a.asm.spine_skeleton_drawable_dispose).apply(null,arguments)};a._spine_skeleton_drawable_render=function(){return(a._spine_skeleton_drawable_render=a.asm.spine_skeleton_drawable_render).apply(null,arguments)};
|
||||
a._spine_skeleton_drawable_get_skeleton=function(){return(a._spine_skeleton_drawable_get_skeleton=a.asm.spine_skeleton_drawable_get_skeleton).apply(null,arguments)};a._spine_skeleton_drawable_get_animation_state=function(){return(a._spine_skeleton_drawable_get_animation_state=a.asm.spine_skeleton_drawable_get_animation_state).apply(null,arguments)};
|
||||
a._spine_skeleton_drawable_get_animation_state_data=function(){return(a._spine_skeleton_drawable_get_animation_state_data=a.asm.spine_skeleton_drawable_get_animation_state_data).apply(null,arguments)};a._spine_skeleton_drawable_get_animation_state_events=function(){return(a._spine_skeleton_drawable_get_animation_state_events=a.asm.spine_skeleton_drawable_get_animation_state_events).apply(null,arguments)};
|
||||
a._spine_render_command_get_positions=function(){return(a._spine_render_command_get_positions=a.asm.spine_render_command_get_positions).apply(null,arguments)};a._spine_render_command_get_uvs=function(){return(a._spine_render_command_get_uvs=a.asm.spine_render_command_get_uvs).apply(null,arguments)};a._spine_render_command_get_colors=function(){return(a._spine_render_command_get_colors=a.asm.spine_render_command_get_colors).apply(null,arguments)};
|
||||
a._spine_render_command_get_dark_colors=function(){return(a._spine_render_command_get_dark_colors=a.asm.spine_render_command_get_dark_colors).apply(null,arguments)};a._spine_render_command_get_num_vertices=function(){return(a._spine_render_command_get_num_vertices=a.asm.spine_render_command_get_num_vertices).apply(null,arguments)};a._spine_render_command_get_indices=function(){return(a._spine_render_command_get_indices=a.asm.spine_render_command_get_indices).apply(null,arguments)};
|
||||
a._spine_render_command_get_num_indices=function(){return(a._spine_render_command_get_num_indices=a.asm.spine_render_command_get_num_indices).apply(null,arguments)};a._spine_render_command_get_atlas_page=function(){return(a._spine_render_command_get_atlas_page=a.asm.spine_render_command_get_atlas_page).apply(null,arguments)};a._spine_render_command_get_blend_mode=function(){return(a._spine_render_command_get_blend_mode=a.asm.spine_render_command_get_blend_mode).apply(null,arguments)};
|
||||
a._spine_render_command_get_next=function(){return(a._spine_render_command_get_next=a.asm.spine_render_command_get_next).apply(null,arguments)};a._spine_animation_get_name=function(){return(a._spine_animation_get_name=a.asm.spine_animation_get_name).apply(null,arguments)};a._spine_animation_get_duration=function(){return(a._spine_animation_get_duration=a.asm.spine_animation_get_duration).apply(null,arguments)};
|
||||
a._spine_animation_state_data_get_skeleton_data=function(){return(a._spine_animation_state_data_get_skeleton_data=a.asm.spine_animation_state_data_get_skeleton_data).apply(null,arguments)};a._spine_animation_state_data_get_default_mix=function(){return(a._spine_animation_state_data_get_default_mix=a.asm.spine_animation_state_data_get_default_mix).apply(null,arguments)};
|
||||
a._spine_animation_state_data_set_default_mix=function(){return(a._spine_animation_state_data_set_default_mix=a.asm.spine_animation_state_data_set_default_mix).apply(null,arguments)};a._spine_animation_state_data_set_mix=function(){return(a._spine_animation_state_data_set_mix=a.asm.spine_animation_state_data_set_mix).apply(null,arguments)};a._spine_animation_state_data_get_mix=function(){return(a._spine_animation_state_data_get_mix=a.asm.spine_animation_state_data_get_mix).apply(null,arguments)};
|
||||
a._spine_animation_state_data_set_mix_by_name=function(){return(a._spine_animation_state_data_set_mix_by_name=a.asm.spine_animation_state_data_set_mix_by_name).apply(null,arguments)};a._spine_animation_state_data_get_mix_by_name=function(){return(a._spine_animation_state_data_get_mix_by_name=a.asm.spine_animation_state_data_get_mix_by_name).apply(null,arguments)};
|
||||
a._spine_animation_state_data_clear=function(){return(a._spine_animation_state_data_clear=a.asm.spine_animation_state_data_clear).apply(null,arguments)};a._spine_animation_state_update=function(){return(a._spine_animation_state_update=a.asm.spine_animation_state_update).apply(null,arguments)};a._spine_animation_state_dispose_track_entry=function(){return(a._spine_animation_state_dispose_track_entry=a.asm.spine_animation_state_dispose_track_entry).apply(null,arguments)};
|
||||
a._spine_animation_state_apply=function(){return(a._spine_animation_state_apply=a.asm.spine_animation_state_apply).apply(null,arguments)};a._spine_animation_state_clear_tracks=function(){return(a._spine_animation_state_clear_tracks=a.asm.spine_animation_state_clear_tracks).apply(null,arguments)};a._spine_animation_state_get_num_tracks=function(){return(a._spine_animation_state_get_num_tracks=a.asm.spine_animation_state_get_num_tracks).apply(null,arguments)};
|
||||
a._spine_animation_state_clear_track=function(){return(a._spine_animation_state_clear_track=a.asm.spine_animation_state_clear_track).apply(null,arguments)};a._spine_animation_state_set_animation_by_name=function(){return(a._spine_animation_state_set_animation_by_name=a.asm.spine_animation_state_set_animation_by_name).apply(null,arguments)};a._spine_animation_state_set_animation=function(){return(a._spine_animation_state_set_animation=a.asm.spine_animation_state_set_animation).apply(null,arguments)};
|
||||
a._spine_animation_state_add_animation_by_name=function(){return(a._spine_animation_state_add_animation_by_name=a.asm.spine_animation_state_add_animation_by_name).apply(null,arguments)};a._spine_animation_state_add_animation=function(){return(a._spine_animation_state_add_animation=a.asm.spine_animation_state_add_animation).apply(null,arguments)};
|
||||
a._spine_animation_state_set_empty_animation=function(){return(a._spine_animation_state_set_empty_animation=a.asm.spine_animation_state_set_empty_animation).apply(null,arguments)};a._spine_animation_state_add_empty_animation=function(){return(a._spine_animation_state_add_empty_animation=a.asm.spine_animation_state_add_empty_animation).apply(null,arguments)};
|
||||
a._spine_animation_state_set_empty_animations=function(){return(a._spine_animation_state_set_empty_animations=a.asm.spine_animation_state_set_empty_animations).apply(null,arguments)};a._spine_animation_state_get_current=function(){return(a._spine_animation_state_get_current=a.asm.spine_animation_state_get_current).apply(null,arguments)};a._spine_animation_state_get_data=function(){return(a._spine_animation_state_get_data=a.asm.spine_animation_state_get_data).apply(null,arguments)};
|
||||
a._spine_animation_state_get_time_scale=function(){return(a._spine_animation_state_get_time_scale=a.asm.spine_animation_state_get_time_scale).apply(null,arguments)};a._spine_animation_state_set_time_scale=function(){return(a._spine_animation_state_set_time_scale=a.asm.spine_animation_state_set_time_scale).apply(null,arguments)};
|
||||
a._spine_animation_state_events_get_num_events=function(){return(a._spine_animation_state_events_get_num_events=a.asm.spine_animation_state_events_get_num_events).apply(null,arguments)};a._spine_animation_state_events_get_event_type=function(){return(a._spine_animation_state_events_get_event_type=a.asm.spine_animation_state_events_get_event_type).apply(null,arguments)};
|
||||
a._spine_animation_state_events_get_track_entry=function(){return(a._spine_animation_state_events_get_track_entry=a.asm.spine_animation_state_events_get_track_entry).apply(null,arguments)};a._spine_animation_state_events_get_event=function(){return(a._spine_animation_state_events_get_event=a.asm.spine_animation_state_events_get_event).apply(null,arguments)};
|
||||
a._spine_animation_state_events_reset=function(){return(a._spine_animation_state_events_reset=a.asm.spine_animation_state_events_reset).apply(null,arguments)};a._spine_track_entry_get_track_index=function(){return(a._spine_track_entry_get_track_index=a.asm.spine_track_entry_get_track_index).apply(null,arguments)};a._spine_track_entry_get_animation=function(){return(a._spine_track_entry_get_animation=a.asm.spine_track_entry_get_animation).apply(null,arguments)};
|
||||
a._spine_track_entry_get_previous=function(){return(a._spine_track_entry_get_previous=a.asm.spine_track_entry_get_previous).apply(null,arguments)};a._spine_track_entry_get_loop=function(){return(a._spine_track_entry_get_loop=a.asm.spine_track_entry_get_loop).apply(null,arguments)};a._spine_track_entry_set_loop=function(){return(a._spine_track_entry_set_loop=a.asm.spine_track_entry_set_loop).apply(null,arguments)};
|
||||
a._spine_track_entry_get_hold_previous=function(){return(a._spine_track_entry_get_hold_previous=a.asm.spine_track_entry_get_hold_previous).apply(null,arguments)};a._spine_track_entry_set_hold_previous=function(){return(a._spine_track_entry_set_hold_previous=a.asm.spine_track_entry_set_hold_previous).apply(null,arguments)};a._spine_track_entry_get_reverse=function(){return(a._spine_track_entry_get_reverse=a.asm.spine_track_entry_get_reverse).apply(null,arguments)};
|
||||
a._spine_track_entry_set_reverse=function(){return(a._spine_track_entry_set_reverse=a.asm.spine_track_entry_set_reverse).apply(null,arguments)};a._spine_track_entry_get_shortest_rotation=function(){return(a._spine_track_entry_get_shortest_rotation=a.asm.spine_track_entry_get_shortest_rotation).apply(null,arguments)};a._spine_track_entry_set_shortest_rotation=function(){return(a._spine_track_entry_set_shortest_rotation=a.asm.spine_track_entry_set_shortest_rotation).apply(null,arguments)};
|
||||
a._spine_track_entry_get_delay=function(){return(a._spine_track_entry_get_delay=a.asm.spine_track_entry_get_delay).apply(null,arguments)};a._spine_track_entry_set_delay=function(){return(a._spine_track_entry_set_delay=a.asm.spine_track_entry_set_delay).apply(null,arguments)};a._spine_track_entry_get_track_time=function(){return(a._spine_track_entry_get_track_time=a.asm.spine_track_entry_get_track_time).apply(null,arguments)};
|
||||
a._spine_track_entry_set_track_time=function(){return(a._spine_track_entry_set_track_time=a.asm.spine_track_entry_set_track_time).apply(null,arguments)};a._spine_track_entry_get_track_end=function(){return(a._spine_track_entry_get_track_end=a.asm.spine_track_entry_get_track_end).apply(null,arguments)};a._spine_track_entry_set_track_end=function(){return(a._spine_track_entry_set_track_end=a.asm.spine_track_entry_set_track_end).apply(null,arguments)};
|
||||
a._spine_track_entry_get_animation_start=function(){return(a._spine_track_entry_get_animation_start=a.asm.spine_track_entry_get_animation_start).apply(null,arguments)};a._spine_track_entry_set_animation_start=function(){return(a._spine_track_entry_set_animation_start=a.asm.spine_track_entry_set_animation_start).apply(null,arguments)};a._spine_track_entry_get_animation_end=function(){return(a._spine_track_entry_get_animation_end=a.asm.spine_track_entry_get_animation_end).apply(null,arguments)};
|
||||
a._spine_track_entry_set_animation_end=function(){return(a._spine_track_entry_set_animation_end=a.asm.spine_track_entry_set_animation_end).apply(null,arguments)};a._spine_track_entry_get_animation_last=function(){return(a._spine_track_entry_get_animation_last=a.asm.spine_track_entry_get_animation_last).apply(null,arguments)};a._spine_track_entry_set_animation_last=function(){return(a._spine_track_entry_set_animation_last=a.asm.spine_track_entry_set_animation_last).apply(null,arguments)};
|
||||
a._spine_track_entry_get_animation_time=function(){return(a._spine_track_entry_get_animation_time=a.asm.spine_track_entry_get_animation_time).apply(null,arguments)};a._spine_track_entry_get_time_scale=function(){return(a._spine_track_entry_get_time_scale=a.asm.spine_track_entry_get_time_scale).apply(null,arguments)};a._spine_track_entry_set_time_scale=function(){return(a._spine_track_entry_set_time_scale=a.asm.spine_track_entry_set_time_scale).apply(null,arguments)};
|
||||
a._spine_track_entry_get_alpha=function(){return(a._spine_track_entry_get_alpha=a.asm.spine_track_entry_get_alpha).apply(null,arguments)};a._spine_track_entry_set_alpha=function(){return(a._spine_track_entry_set_alpha=a.asm.spine_track_entry_set_alpha).apply(null,arguments)};a._spine_track_entry_get_event_threshold=function(){return(a._spine_track_entry_get_event_threshold=a.asm.spine_track_entry_get_event_threshold).apply(null,arguments)};
|
||||
a._spine_track_entry_set_event_threshold=function(){return(a._spine_track_entry_set_event_threshold=a.asm.spine_track_entry_set_event_threshold).apply(null,arguments)};a._spine_track_entry_get_alpha_attachment_threshold=function(){return(a._spine_track_entry_get_alpha_attachment_threshold=a.asm.spine_track_entry_get_alpha_attachment_threshold).apply(null,arguments)};
|
||||
a._spine_track_entry_set_alpha_attachment_threshold=function(){return(a._spine_track_entry_set_alpha_attachment_threshold=a.asm.spine_track_entry_set_alpha_attachment_threshold).apply(null,arguments)};a._spine_track_entry_get_mix_attachment_threshold=function(){return(a._spine_track_entry_get_mix_attachment_threshold=a.asm.spine_track_entry_get_mix_attachment_threshold).apply(null,arguments)};
|
||||
a._spine_track_entry_set_mix_attachment_threshold=function(){return(a._spine_track_entry_set_mix_attachment_threshold=a.asm.spine_track_entry_set_mix_attachment_threshold).apply(null,arguments)};a._spine_track_entry_get_mix_draw_order_threshold=function(){return(a._spine_track_entry_get_mix_draw_order_threshold=a.asm.spine_track_entry_get_mix_draw_order_threshold).apply(null,arguments)};
|
||||
a._spine_track_entry_set_mix_draw_order_threshold=function(){return(a._spine_track_entry_set_mix_draw_order_threshold=a.asm.spine_track_entry_set_mix_draw_order_threshold).apply(null,arguments)};a._spine_track_entry_get_next=function(){return(a._spine_track_entry_get_next=a.asm.spine_track_entry_get_next).apply(null,arguments)};a._spine_track_entry_is_complete=function(){return(a._spine_track_entry_is_complete=a.asm.spine_track_entry_is_complete).apply(null,arguments)};
|
||||
a._spine_track_entry_get_mix_time=function(){return(a._spine_track_entry_get_mix_time=a.asm.spine_track_entry_get_mix_time).apply(null,arguments)};a._spine_track_entry_set_mix_time=function(){return(a._spine_track_entry_set_mix_time=a.asm.spine_track_entry_set_mix_time).apply(null,arguments)};a._spine_track_entry_get_mix_duration=function(){return(a._spine_track_entry_get_mix_duration=a.asm.spine_track_entry_get_mix_duration).apply(null,arguments)};
|
||||
a._spine_track_entry_set_mix_duration=function(){return(a._spine_track_entry_set_mix_duration=a.asm.spine_track_entry_set_mix_duration).apply(null,arguments)};a._spine_track_entry_get_mix_blend=function(){return(a._spine_track_entry_get_mix_blend=a.asm.spine_track_entry_get_mix_blend).apply(null,arguments)};a._spine_track_entry_set_mix_blend=function(){return(a._spine_track_entry_set_mix_blend=a.asm.spine_track_entry_set_mix_blend).apply(null,arguments)};
|
||||
a._spine_track_entry_get_mixing_from=function(){return(a._spine_track_entry_get_mixing_from=a.asm.spine_track_entry_get_mixing_from).apply(null,arguments)};a._spine_track_entry_get_mixing_to=function(){return(a._spine_track_entry_get_mixing_to=a.asm.spine_track_entry_get_mixing_to).apply(null,arguments)};a._spine_track_entry_reset_rotation_directions=function(){return(a._spine_track_entry_reset_rotation_directions=a.asm.spine_track_entry_reset_rotation_directions).apply(null,arguments)};
|
||||
a._spine_track_entry_get_track_complete=function(){return(a._spine_track_entry_get_track_complete=a.asm.spine_track_entry_get_track_complete).apply(null,arguments)};a._spine_track_entry_was_applied=function(){return(a._spine_track_entry_was_applied=a.asm.spine_track_entry_was_applied).apply(null,arguments)};a._spine_track_entry_is_next_ready=function(){return(a._spine_track_entry_is_next_ready=a.asm.spine_track_entry_is_next_ready).apply(null,arguments)};
|
||||
a._spine_skeleton_update_cache=function(){return(a._spine_skeleton_update_cache=a.asm.spine_skeleton_update_cache).apply(null,arguments)};a._spine_skeleton_update_world_transform=function(){return(a._spine_skeleton_update_world_transform=a.asm.spine_skeleton_update_world_transform).apply(null,arguments)};a._spine_skeleton_update_world_transform_bone=function(){return(a._spine_skeleton_update_world_transform_bone=a.asm.spine_skeleton_update_world_transform_bone).apply(null,arguments)};
|
||||
a._spine_skeleton_set_to_setup_pose=function(){return(a._spine_skeleton_set_to_setup_pose=a.asm.spine_skeleton_set_to_setup_pose).apply(null,arguments)};a._spine_skeleton_set_bones_to_setup_pose=function(){return(a._spine_skeleton_set_bones_to_setup_pose=a.asm.spine_skeleton_set_bones_to_setup_pose).apply(null,arguments)};a._spine_skeleton_set_slots_to_setup_pose=function(){return(a._spine_skeleton_set_slots_to_setup_pose=a.asm.spine_skeleton_set_slots_to_setup_pose).apply(null,arguments)};
|
||||
a._spine_skeleton_find_bone=function(){return(a._spine_skeleton_find_bone=a.asm.spine_skeleton_find_bone).apply(null,arguments)};a._spine_skeleton_find_slot=function(){return(a._spine_skeleton_find_slot=a.asm.spine_skeleton_find_slot).apply(null,arguments)};a._spine_skeleton_set_skin_by_name=function(){return(a._spine_skeleton_set_skin_by_name=a.asm.spine_skeleton_set_skin_by_name).apply(null,arguments)};
|
||||
a._spine_skeleton_set_skin=function(){return(a._spine_skeleton_set_skin=a.asm.spine_skeleton_set_skin).apply(null,arguments)};a._spine_skeleton_get_attachment_by_name=function(){return(a._spine_skeleton_get_attachment_by_name=a.asm.spine_skeleton_get_attachment_by_name).apply(null,arguments)};a._spine_skeleton_get_attachment=function(){return(a._spine_skeleton_get_attachment=a.asm.spine_skeleton_get_attachment).apply(null,arguments)};
|
||||
a._spine_skeleton_set_attachment=function(){return(a._spine_skeleton_set_attachment=a.asm.spine_skeleton_set_attachment).apply(null,arguments)};a._spine_skeleton_find_ik_constraint=function(){return(a._spine_skeleton_find_ik_constraint=a.asm.spine_skeleton_find_ik_constraint).apply(null,arguments)};a._spine_skeleton_find_transform_constraint=function(){return(a._spine_skeleton_find_transform_constraint=a.asm.spine_skeleton_find_transform_constraint).apply(null,arguments)};
|
||||
a._spine_skeleton_find_path_constraint=function(){return(a._spine_skeleton_find_path_constraint=a.asm.spine_skeleton_find_path_constraint).apply(null,arguments)};a._spine_skeleton_find_physics_constraint=function(){return(a._spine_skeleton_find_physics_constraint=a.asm.spine_skeleton_find_physics_constraint).apply(null,arguments)};a._spine_skeleton_get_bounds=function(){return(a._spine_skeleton_get_bounds=a.asm.spine_skeleton_get_bounds).apply(null,arguments)};
|
||||
a._spine_skeleton_get_root_bone=function(){return(a._spine_skeleton_get_root_bone=a.asm.spine_skeleton_get_root_bone).apply(null,arguments)};a._spine_skeleton_get_data=function(){return(a._spine_skeleton_get_data=a.asm.spine_skeleton_get_data).apply(null,arguments)};a._spine_skeleton_get_num_bones=function(){return(a._spine_skeleton_get_num_bones=a.asm.spine_skeleton_get_num_bones).apply(null,arguments)};
|
||||
a._spine_skeleton_get_bones=function(){return(a._spine_skeleton_get_bones=a.asm.spine_skeleton_get_bones).apply(null,arguments)};a._spine_skeleton_get_num_slots=function(){return(a._spine_skeleton_get_num_slots=a.asm.spine_skeleton_get_num_slots).apply(null,arguments)};a._spine_skeleton_get_slots=function(){return(a._spine_skeleton_get_slots=a.asm.spine_skeleton_get_slots).apply(null,arguments)};
|
||||
a._spine_skeleton_get_num_draw_order=function(){return(a._spine_skeleton_get_num_draw_order=a.asm.spine_skeleton_get_num_draw_order).apply(null,arguments)};a._spine_skeleton_get_draw_order=function(){return(a._spine_skeleton_get_draw_order=a.asm.spine_skeleton_get_draw_order).apply(null,arguments)};a._spine_skeleton_get_num_ik_constraints=function(){return(a._spine_skeleton_get_num_ik_constraints=a.asm.spine_skeleton_get_num_ik_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_get_ik_constraints=function(){return(a._spine_skeleton_get_ik_constraints=a.asm.spine_skeleton_get_ik_constraints).apply(null,arguments)};a._spine_skeleton_get_num_transform_constraints=function(){return(a._spine_skeleton_get_num_transform_constraints=a.asm.spine_skeleton_get_num_transform_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_get_transform_constraints=function(){return(a._spine_skeleton_get_transform_constraints=a.asm.spine_skeleton_get_transform_constraints).apply(null,arguments)};a._spine_skeleton_get_num_path_constraints=function(){return(a._spine_skeleton_get_num_path_constraints=a.asm.spine_skeleton_get_num_path_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_get_path_constraints=function(){return(a._spine_skeleton_get_path_constraints=a.asm.spine_skeleton_get_path_constraints).apply(null,arguments)};a._spine_skeleton_get_num_physics_constraints=function(){return(a._spine_skeleton_get_num_physics_constraints=a.asm.spine_skeleton_get_num_physics_constraints).apply(null,arguments)};
|
||||
a._spine_skeleton_get_physics_constraints=function(){return(a._spine_skeleton_get_physics_constraints=a.asm.spine_skeleton_get_physics_constraints).apply(null,arguments)};a._spine_skeleton_get_skin=function(){return(a._spine_skeleton_get_skin=a.asm.spine_skeleton_get_skin).apply(null,arguments)};a._spine_skeleton_get_color=function(){return(a._spine_skeleton_get_color=a.asm.spine_skeleton_get_color).apply(null,arguments)};
|
||||
a._spine_skeleton_set_color=function(){return(a._spine_skeleton_set_color=a.asm.spine_skeleton_set_color).apply(null,arguments)};a._spine_skeleton_set_position=function(){return(a._spine_skeleton_set_position=a.asm.spine_skeleton_set_position).apply(null,arguments)};a._spine_skeleton_get_x=function(){return(a._spine_skeleton_get_x=a.asm.spine_skeleton_get_x).apply(null,arguments)};a._spine_skeleton_set_x=function(){return(a._spine_skeleton_set_x=a.asm.spine_skeleton_set_x).apply(null,arguments)};
|
||||
a._spine_skeleton_get_y=function(){return(a._spine_skeleton_get_y=a.asm.spine_skeleton_get_y).apply(null,arguments)};a._spine_skeleton_set_y=function(){return(a._spine_skeleton_set_y=a.asm.spine_skeleton_set_y).apply(null,arguments)};a._spine_skeleton_set_scale=function(){return(a._spine_skeleton_set_scale=a.asm.spine_skeleton_set_scale).apply(null,arguments)};a._spine_skeleton_get_scale_x=function(){return(a._spine_skeleton_get_scale_x=a.asm.spine_skeleton_get_scale_x).apply(null,arguments)};
|
||||
a._spine_skeleton_set_scale_x=function(){return(a._spine_skeleton_set_scale_x=a.asm.spine_skeleton_set_scale_x).apply(null,arguments)};a._spine_skeleton_get_scale_y=function(){return(a._spine_skeleton_get_scale_y=a.asm.spine_skeleton_get_scale_y).apply(null,arguments)};a._spine_skeleton_set_scale_y=function(){return(a._spine_skeleton_set_scale_y=a.asm.spine_skeleton_set_scale_y).apply(null,arguments)};
|
||||
a._spine_skeleton_get_time=function(){return(a._spine_skeleton_get_time=a.asm.spine_skeleton_get_time).apply(null,arguments)};a._spine_skeleton_set_time=function(){return(a._spine_skeleton_set_time=a.asm.spine_skeleton_set_time).apply(null,arguments)};a._spine_skeleton_update=function(){return(a._spine_skeleton_update=a.asm.spine_skeleton_update).apply(null,arguments)};a._spine_event_data_get_name=function(){return(a._spine_event_data_get_name=a.asm.spine_event_data_get_name).apply(null,arguments)};
|
||||
a._spine_event_data_get_int_value=function(){return(a._spine_event_data_get_int_value=a.asm.spine_event_data_get_int_value).apply(null,arguments)};a._spine_event_data_set_int_value=function(){return(a._spine_event_data_set_int_value=a.asm.spine_event_data_set_int_value).apply(null,arguments)};a._spine_event_data_get_float_value=function(){return(a._spine_event_data_get_float_value=a.asm.spine_event_data_get_float_value).apply(null,arguments)};
|
||||
a._spine_event_data_set_float_value=function(){return(a._spine_event_data_set_float_value=a.asm.spine_event_data_set_float_value).apply(null,arguments)};a._spine_event_data_get_string_value=function(){return(a._spine_event_data_get_string_value=a.asm.spine_event_data_get_string_value).apply(null,arguments)};a._spine_event_data_set_string_value=function(){return(a._spine_event_data_set_string_value=a.asm.spine_event_data_set_string_value).apply(null,arguments)};
|
||||
a._spine_event_data_get_audio_path=function(){return(a._spine_event_data_get_audio_path=a.asm.spine_event_data_get_audio_path).apply(null,arguments)};a._spine_event_data_get_volume=function(){return(a._spine_event_data_get_volume=a.asm.spine_event_data_get_volume).apply(null,arguments)};a._spine_event_data_set_volume=function(){return(a._spine_event_data_set_volume=a.asm.spine_event_data_set_volume).apply(null,arguments)};
|
||||
a._spine_event_data_get_balance=function(){return(a._spine_event_data_get_balance=a.asm.spine_event_data_get_balance).apply(null,arguments)};a._spine_event_data_set_balance=function(){return(a._spine_event_data_set_balance=a.asm.spine_event_data_set_balance).apply(null,arguments)};a._spine_event_get_data=function(){return(a._spine_event_get_data=a.asm.spine_event_get_data).apply(null,arguments)};
|
||||
a._spine_event_get_time=function(){return(a._spine_event_get_time=a.asm.spine_event_get_time).apply(null,arguments)};a._spine_event_get_int_value=function(){return(a._spine_event_get_int_value=a.asm.spine_event_get_int_value).apply(null,arguments)};a._spine_event_set_int_value=function(){return(a._spine_event_set_int_value=a.asm.spine_event_set_int_value).apply(null,arguments)};
|
||||
a._spine_event_get_float_value=function(){return(a._spine_event_get_float_value=a.asm.spine_event_get_float_value).apply(null,arguments)};a._spine_event_set_float_value=function(){return(a._spine_event_set_float_value=a.asm.spine_event_set_float_value).apply(null,arguments)};a._spine_event_get_string_value=function(){return(a._spine_event_get_string_value=a.asm.spine_event_get_string_value).apply(null,arguments)};
|
||||
a._spine_event_set_string_value=function(){return(a._spine_event_set_string_value=a.asm.spine_event_set_string_value).apply(null,arguments)};a._spine_event_get_volume=function(){return(a._spine_event_get_volume=a.asm.spine_event_get_volume).apply(null,arguments)};a._spine_event_set_volume=function(){return(a._spine_event_set_volume=a.asm.spine_event_set_volume).apply(null,arguments)};
|
||||
a._spine_event_get_balance=function(){return(a._spine_event_get_balance=a.asm.spine_event_get_balance).apply(null,arguments)};a._spine_event_set_balance=function(){return(a._spine_event_set_balance=a.asm.spine_event_set_balance).apply(null,arguments)};a._spine_slot_data_get_index=function(){return(a._spine_slot_data_get_index=a.asm.spine_slot_data_get_index).apply(null,arguments)};
|
||||
a._spine_slot_data_get_name=function(){return(a._spine_slot_data_get_name=a.asm.spine_slot_data_get_name).apply(null,arguments)};a._spine_slot_data_get_bone_data=function(){return(a._spine_slot_data_get_bone_data=a.asm.spine_slot_data_get_bone_data).apply(null,arguments)};a._spine_slot_data_get_color=function(){return(a._spine_slot_data_get_color=a.asm.spine_slot_data_get_color).apply(null,arguments)};
|
||||
a._spine_slot_data_set_color=function(){return(a._spine_slot_data_set_color=a.asm.spine_slot_data_set_color).apply(null,arguments)};a._spine_slot_data_get_dark_color=function(){return(a._spine_slot_data_get_dark_color=a.asm.spine_slot_data_get_dark_color).apply(null,arguments)};a._spine_slot_data_set_dark_color=function(){return(a._spine_slot_data_set_dark_color=a.asm.spine_slot_data_set_dark_color).apply(null,arguments)};
|
||||
a._spine_slot_data_get_has_dark_color=function(){return(a._spine_slot_data_get_has_dark_color=a.asm.spine_slot_data_get_has_dark_color).apply(null,arguments)};a._spine_slot_data_set_has_dark_color=function(){return(a._spine_slot_data_set_has_dark_color=a.asm.spine_slot_data_set_has_dark_color).apply(null,arguments)};a._spine_slot_data_get_attachment_name=function(){return(a._spine_slot_data_get_attachment_name=a.asm.spine_slot_data_get_attachment_name).apply(null,arguments)};
|
||||
a._spine_slot_data_set_attachment_name=function(){return(a._spine_slot_data_set_attachment_name=a.asm.spine_slot_data_set_attachment_name).apply(null,arguments)};a._spine_slot_data_get_blend_mode=function(){return(a._spine_slot_data_get_blend_mode=a.asm.spine_slot_data_get_blend_mode).apply(null,arguments)};a._spine_slot_data_set_blend_mode=function(){return(a._spine_slot_data_set_blend_mode=a.asm.spine_slot_data_set_blend_mode).apply(null,arguments)};
|
||||
a._spine_slot_data_is_visible=function(){return(a._spine_slot_data_is_visible=a.asm.spine_slot_data_is_visible).apply(null,arguments)};a._spine_slot_data_set_visible=function(){return(a._spine_slot_data_set_visible=a.asm.spine_slot_data_set_visible).apply(null,arguments)};a._spine_slot_set_to_setup_pose=function(){return(a._spine_slot_set_to_setup_pose=a.asm.spine_slot_set_to_setup_pose).apply(null,arguments)};
|
||||
a._spine_slot_get_data=function(){return(a._spine_slot_get_data=a.asm.spine_slot_get_data).apply(null,arguments)};a._spine_slot_get_bone=function(){return(a._spine_slot_get_bone=a.asm.spine_slot_get_bone).apply(null,arguments)};a._spine_slot_get_skeleton=function(){return(a._spine_slot_get_skeleton=a.asm.spine_slot_get_skeleton).apply(null,arguments)};a._spine_slot_get_color=function(){return(a._spine_slot_get_color=a.asm.spine_slot_get_color).apply(null,arguments)};
|
||||
a._spine_slot_set_color=function(){return(a._spine_slot_set_color=a.asm.spine_slot_set_color).apply(null,arguments)};a._spine_slot_get_dark_color=function(){return(a._spine_slot_get_dark_color=a.asm.spine_slot_get_dark_color).apply(null,arguments)};a._spine_slot_set_dark_color=function(){return(a._spine_slot_set_dark_color=a.asm.spine_slot_set_dark_color).apply(null,arguments)};
|
||||
a._spine_slot_has_dark_color=function(){return(a._spine_slot_has_dark_color=a.asm.spine_slot_has_dark_color).apply(null,arguments)};a._spine_slot_get_attachment=function(){return(a._spine_slot_get_attachment=a.asm.spine_slot_get_attachment).apply(null,arguments)};a._spine_slot_set_attachment=function(){return(a._spine_slot_set_attachment=a.asm.spine_slot_set_attachment).apply(null,arguments)};
|
||||
a._spine_slot_get_sequence_index=function(){return(a._spine_slot_get_sequence_index=a.asm.spine_slot_get_sequence_index).apply(null,arguments)};a._spine_slot_set_sequence_index=function(){return(a._spine_slot_set_sequence_index=a.asm.spine_slot_set_sequence_index).apply(null,arguments)};a._spine_bone_data_get_index=function(){return(a._spine_bone_data_get_index=a.asm.spine_bone_data_get_index).apply(null,arguments)};
|
||||
a._spine_bone_data_get_name=function(){return(a._spine_bone_data_get_name=a.asm.spine_bone_data_get_name).apply(null,arguments)};a._spine_bone_data_get_parent=function(){return(a._spine_bone_data_get_parent=a.asm.spine_bone_data_get_parent).apply(null,arguments)};a._spine_bone_data_get_length=function(){return(a._spine_bone_data_get_length=a.asm.spine_bone_data_get_length).apply(null,arguments)};
|
||||
a._spine_bone_data_set_length=function(){return(a._spine_bone_data_set_length=a.asm.spine_bone_data_set_length).apply(null,arguments)};a._spine_bone_data_get_x=function(){return(a._spine_bone_data_get_x=a.asm.spine_bone_data_get_x).apply(null,arguments)};a._spine_bone_data_set_x=function(){return(a._spine_bone_data_set_x=a.asm.spine_bone_data_set_x).apply(null,arguments)};a._spine_bone_data_get_y=function(){return(a._spine_bone_data_get_y=a.asm.spine_bone_data_get_y).apply(null,arguments)};
|
||||
a._spine_bone_data_set_y=function(){return(a._spine_bone_data_set_y=a.asm.spine_bone_data_set_y).apply(null,arguments)};a._spine_bone_data_get_rotation=function(){return(a._spine_bone_data_get_rotation=a.asm.spine_bone_data_get_rotation).apply(null,arguments)};a._spine_bone_data_set_rotation=function(){return(a._spine_bone_data_set_rotation=a.asm.spine_bone_data_set_rotation).apply(null,arguments)};
|
||||
a._spine_bone_data_get_scale_x=function(){return(a._spine_bone_data_get_scale_x=a.asm.spine_bone_data_get_scale_x).apply(null,arguments)};a._spine_bone_data_set_scale_x=function(){return(a._spine_bone_data_set_scale_x=a.asm.spine_bone_data_set_scale_x).apply(null,arguments)};a._spine_bone_data_get_scale_y=function(){return(a._spine_bone_data_get_scale_y=a.asm.spine_bone_data_get_scale_y).apply(null,arguments)};
|
||||
a._spine_bone_data_set_scale_y=function(){return(a._spine_bone_data_set_scale_y=a.asm.spine_bone_data_set_scale_y).apply(null,arguments)};a._spine_bone_data_get_shear_x=function(){return(a._spine_bone_data_get_shear_x=a.asm.spine_bone_data_get_shear_x).apply(null,arguments)};a._spine_bone_data_set_shear_x=function(){return(a._spine_bone_data_set_shear_x=a.asm.spine_bone_data_set_shear_x).apply(null,arguments)};
|
||||
a._spine_bone_data_get_shear_y=function(){return(a._spine_bone_data_get_shear_y=a.asm.spine_bone_data_get_shear_y).apply(null,arguments)};a._spine_bone_data_set_shear_y=function(){return(a._spine_bone_data_set_shear_y=a.asm.spine_bone_data_set_shear_y).apply(null,arguments)};a._spine_bone_data_get_inherit=function(){return(a._spine_bone_data_get_inherit=a.asm.spine_bone_data_get_inherit).apply(null,arguments)};
|
||||
a._spine_bone_data_set_inherit=function(){return(a._spine_bone_data_set_inherit=a.asm.spine_bone_data_set_inherit).apply(null,arguments)};a._spine_bone_data_get_is_skin_required=function(){return(a._spine_bone_data_get_is_skin_required=a.asm.spine_bone_data_get_is_skin_required).apply(null,arguments)};a._spine_bone_data_set_is_skin_required=function(){return(a._spine_bone_data_set_is_skin_required=a.asm.spine_bone_data_set_is_skin_required).apply(null,arguments)};
|
||||
a._spine_bone_data_get_color=function(){return(a._spine_bone_data_get_color=a.asm.spine_bone_data_get_color).apply(null,arguments)};a._spine_bone_data_set_color=function(){return(a._spine_bone_data_set_color=a.asm.spine_bone_data_set_color).apply(null,arguments)};a._spine_bone_data_is_visible=function(){return(a._spine_bone_data_is_visible=a.asm.spine_bone_data_is_visible).apply(null,arguments)};
|
||||
a._spine_bone_data_set_visible=function(){return(a._spine_bone_data_set_visible=a.asm.spine_bone_data_set_visible).apply(null,arguments)};a._spine_bone_set_is_y_down=function(){return(a._spine_bone_set_is_y_down=a.asm.spine_bone_set_is_y_down).apply(null,arguments)};a._spine_bone_get_is_y_down=function(){return(a._spine_bone_get_is_y_down=a.asm.spine_bone_get_is_y_down).apply(null,arguments)};a._spine_bone_update=function(){return(a._spine_bone_update=a.asm.spine_bone_update).apply(null,arguments)};
|
||||
a._spine_bone_update_world_transform=function(){return(a._spine_bone_update_world_transform=a.asm.spine_bone_update_world_transform).apply(null,arguments)};a._spine_bone_update_world_transform_with=function(){return(a._spine_bone_update_world_transform_with=a.asm.spine_bone_update_world_transform_with).apply(null,arguments)};a._spine_bone_update_applied_transform=function(){return(a._spine_bone_update_applied_transform=a.asm.spine_bone_update_applied_transform).apply(null,arguments)};
|
||||
a._spine_bone_set_to_setup_pose=function(){return(a._spine_bone_set_to_setup_pose=a.asm.spine_bone_set_to_setup_pose).apply(null,arguments)};a._spine_bone_world_to_local=function(){return(a._spine_bone_world_to_local=a.asm.spine_bone_world_to_local).apply(null,arguments)};a._spine_bone_world_to_parent=function(){return(a._spine_bone_world_to_parent=a.asm.spine_bone_world_to_parent).apply(null,arguments)};
|
||||
a._spine_bone_local_to_world=function(){return(a._spine_bone_local_to_world=a.asm.spine_bone_local_to_world).apply(null,arguments)};a._spine_bone_parent_to_world=function(){return(a._spine_bone_parent_to_world=a.asm.spine_bone_parent_to_world).apply(null,arguments)};a._spine_bone_world_to_local_rotation=function(){return(a._spine_bone_world_to_local_rotation=a.asm.spine_bone_world_to_local_rotation).apply(null,arguments)};
|
||||
a._spine_bone_local_to_world_rotation=function(){return(a._spine_bone_local_to_world_rotation=a.asm.spine_bone_local_to_world_rotation).apply(null,arguments)};a._spine_bone_rotate_world=function(){return(a._spine_bone_rotate_world=a.asm.spine_bone_rotate_world).apply(null,arguments)};a._spine_bone_get_world_to_local_rotation_x=function(){return(a._spine_bone_get_world_to_local_rotation_x=a.asm.spine_bone_get_world_to_local_rotation_x).apply(null,arguments)};
|
||||
a._spine_bone_get_world_to_local_rotation_y=function(){return(a._spine_bone_get_world_to_local_rotation_y=a.asm.spine_bone_get_world_to_local_rotation_y).apply(null,arguments)};a._spine_bone_get_data=function(){return(a._spine_bone_get_data=a.asm.spine_bone_get_data).apply(null,arguments)};a._spine_bone_get_skeleton=function(){return(a._spine_bone_get_skeleton=a.asm.spine_bone_get_skeleton).apply(null,arguments)};
|
||||
a._spine_bone_get_parent=function(){return(a._spine_bone_get_parent=a.asm.spine_bone_get_parent).apply(null,arguments)};a._spine_bone_get_num_children=function(){return(a._spine_bone_get_num_children=a.asm.spine_bone_get_num_children).apply(null,arguments)};a._spine_bone_get_children=function(){return(a._spine_bone_get_children=a.asm.spine_bone_get_children).apply(null,arguments)};a._spine_bone_get_x=function(){return(a._spine_bone_get_x=a.asm.spine_bone_get_x).apply(null,arguments)};
|
||||
a._spine_bone_set_x=function(){return(a._spine_bone_set_x=a.asm.spine_bone_set_x).apply(null,arguments)};a._spine_bone_get_y=function(){return(a._spine_bone_get_y=a.asm.spine_bone_get_y).apply(null,arguments)};a._spine_bone_set_y=function(){return(a._spine_bone_set_y=a.asm.spine_bone_set_y).apply(null,arguments)};a._spine_bone_get_rotation=function(){return(a._spine_bone_get_rotation=a.asm.spine_bone_get_rotation).apply(null,arguments)};
|
||||
a._spine_bone_set_rotation=function(){return(a._spine_bone_set_rotation=a.asm.spine_bone_set_rotation).apply(null,arguments)};a._spine_bone_get_scale_x=function(){return(a._spine_bone_get_scale_x=a.asm.spine_bone_get_scale_x).apply(null,arguments)};a._spine_bone_set_scale_x=function(){return(a._spine_bone_set_scale_x=a.asm.spine_bone_set_scale_x).apply(null,arguments)};a._spine_bone_get_scale_y=function(){return(a._spine_bone_get_scale_y=a.asm.spine_bone_get_scale_y).apply(null,arguments)};
|
||||
a._spine_bone_set_scale_y=function(){return(a._spine_bone_set_scale_y=a.asm.spine_bone_set_scale_y).apply(null,arguments)};a._spine_bone_get_shear_x=function(){return(a._spine_bone_get_shear_x=a.asm.spine_bone_get_shear_x).apply(null,arguments)};a._spine_bone_set_shear_x=function(){return(a._spine_bone_set_shear_x=a.asm.spine_bone_set_shear_x).apply(null,arguments)};a._spine_bone_get_shear_y=function(){return(a._spine_bone_get_shear_y=a.asm.spine_bone_get_shear_y).apply(null,arguments)};
|
||||
a._spine_bone_set_shear_y=function(){return(a._spine_bone_set_shear_y=a.asm.spine_bone_set_shear_y).apply(null,arguments)};a._spine_bone_get_applied_rotation=function(){return(a._spine_bone_get_applied_rotation=a.asm.spine_bone_get_applied_rotation).apply(null,arguments)};a._spine_bone_set_applied_rotation=function(){return(a._spine_bone_set_applied_rotation=a.asm.spine_bone_set_applied_rotation).apply(null,arguments)};
|
||||
a._spine_bone_get_a_x=function(){return(a._spine_bone_get_a_x=a.asm.spine_bone_get_a_x).apply(null,arguments)};a._spine_bone_set_a_x=function(){return(a._spine_bone_set_a_x=a.asm.spine_bone_set_a_x).apply(null,arguments)};a._spine_bone_get_a_y=function(){return(a._spine_bone_get_a_y=a.asm.spine_bone_get_a_y).apply(null,arguments)};a._spine_bone_set_a_y=function(){return(a._spine_bone_set_a_y=a.asm.spine_bone_set_a_y).apply(null,arguments)};
|
||||
a._spine_bone_get_a_scale_x=function(){return(a._spine_bone_get_a_scale_x=a.asm.spine_bone_get_a_scale_x).apply(null,arguments)};a._spine_bone_set_a_scale_x=function(){return(a._spine_bone_set_a_scale_x=a.asm.spine_bone_set_a_scale_x).apply(null,arguments)};a._spine_bone_get_a_scale_y=function(){return(a._spine_bone_get_a_scale_y=a.asm.spine_bone_get_a_scale_y).apply(null,arguments)};
|
||||
a._spine_bone_set_a_scale_y=function(){return(a._spine_bone_set_a_scale_y=a.asm.spine_bone_set_a_scale_y).apply(null,arguments)};a._spine_bone_get_a_shear_x=function(){return(a._spine_bone_get_a_shear_x=a.asm.spine_bone_get_a_shear_x).apply(null,arguments)};a._spine_bone_set_a_shear_x=function(){return(a._spine_bone_set_a_shear_x=a.asm.spine_bone_set_a_shear_x).apply(null,arguments)};
|
||||
a._spine_bone_get_a_shear_y=function(){return(a._spine_bone_get_a_shear_y=a.asm.spine_bone_get_a_shear_y).apply(null,arguments)};a._spine_bone_set_a_shear_y=function(){return(a._spine_bone_set_a_shear_y=a.asm.spine_bone_set_a_shear_y).apply(null,arguments)};a._spine_bone_get_a=function(){return(a._spine_bone_get_a=a.asm.spine_bone_get_a).apply(null,arguments)};a._spine_bone_set_a=function(){return(a._spine_bone_set_a=a.asm.spine_bone_set_a).apply(null,arguments)};
|
||||
a._spine_bone_get_b=function(){return(a._spine_bone_get_b=a.asm.spine_bone_get_b).apply(null,arguments)};a._spine_bone_set_b=function(){return(a._spine_bone_set_b=a.asm.spine_bone_set_b).apply(null,arguments)};a._spine_bone_get_c=function(){return(a._spine_bone_get_c=a.asm.spine_bone_get_c).apply(null,arguments)};a._spine_bone_set_c=function(){return(a._spine_bone_set_c=a.asm.spine_bone_set_c).apply(null,arguments)};
|
||||
a._spine_bone_get_d=function(){return(a._spine_bone_get_d=a.asm.spine_bone_get_d).apply(null,arguments)};a._spine_bone_set_d=function(){return(a._spine_bone_set_d=a.asm.spine_bone_set_d).apply(null,arguments)};a._spine_bone_get_world_x=function(){return(a._spine_bone_get_world_x=a.asm.spine_bone_get_world_x).apply(null,arguments)};a._spine_bone_set_world_x=function(){return(a._spine_bone_set_world_x=a.asm.spine_bone_set_world_x).apply(null,arguments)};
|
||||
a._spine_bone_get_world_y=function(){return(a._spine_bone_get_world_y=a.asm.spine_bone_get_world_y).apply(null,arguments)};a._spine_bone_set_world_y=function(){return(a._spine_bone_set_world_y=a.asm.spine_bone_set_world_y).apply(null,arguments)};a._spine_bone_get_world_rotation_x=function(){return(a._spine_bone_get_world_rotation_x=a.asm.spine_bone_get_world_rotation_x).apply(null,arguments)};
|
||||
a._spine_bone_get_world_rotation_y=function(){return(a._spine_bone_get_world_rotation_y=a.asm.spine_bone_get_world_rotation_y).apply(null,arguments)};a._spine_bone_get_world_scale_x=function(){return(a._spine_bone_get_world_scale_x=a.asm.spine_bone_get_world_scale_x).apply(null,arguments)};a._spine_bone_get_world_scale_y=function(){return(a._spine_bone_get_world_scale_y=a.asm.spine_bone_get_world_scale_y).apply(null,arguments)};
|
||||
a._spine_bone_get_is_active=function(){return(a._spine_bone_get_is_active=a.asm.spine_bone_get_is_active).apply(null,arguments)};a._spine_bone_set_is_active=function(){return(a._spine_bone_set_is_active=a.asm.spine_bone_set_is_active).apply(null,arguments)};a._spine_bone_get_inherit=function(){return(a._spine_bone_get_inherit=a.asm.spine_bone_get_inherit).apply(null,arguments)};a._spine_bone_set_inherit=function(){return(a._spine_bone_set_inherit=a.asm.spine_bone_set_inherit).apply(null,arguments)};
|
||||
a._spine_attachment_get_name=function(){return(a._spine_attachment_get_name=a.asm.spine_attachment_get_name).apply(null,arguments)};a._spine_attachment_get_type=function(){return(a._spine_attachment_get_type=a.asm.spine_attachment_get_type).apply(null,arguments)};a._spine_attachment_copy=function(){return(a._spine_attachment_copy=a.asm.spine_attachment_copy).apply(null,arguments)};
|
||||
a._spine_attachment_dispose=function(){return(a._spine_attachment_dispose=a.asm.spine_attachment_dispose).apply(null,arguments)};a._spine_point_attachment_compute_world_position=function(){return(a._spine_point_attachment_compute_world_position=a.asm.spine_point_attachment_compute_world_position).apply(null,arguments)};
|
||||
a._spine_point_attachment_compute_world_rotation=function(){return(a._spine_point_attachment_compute_world_rotation=a.asm.spine_point_attachment_compute_world_rotation).apply(null,arguments)};a._spine_point_attachment_get_x=function(){return(a._spine_point_attachment_get_x=a.asm.spine_point_attachment_get_x).apply(null,arguments)};a._spine_point_attachment_set_x=function(){return(a._spine_point_attachment_set_x=a.asm.spine_point_attachment_set_x).apply(null,arguments)};
|
||||
a._spine_point_attachment_get_y=function(){return(a._spine_point_attachment_get_y=a.asm.spine_point_attachment_get_y).apply(null,arguments)};a._spine_point_attachment_set_y=function(){return(a._spine_point_attachment_set_y=a.asm.spine_point_attachment_set_y).apply(null,arguments)};a._spine_point_attachment_get_rotation=function(){return(a._spine_point_attachment_get_rotation=a.asm.spine_point_attachment_get_rotation).apply(null,arguments)};
|
||||
a._spine_point_attachment_set_rotation=function(){return(a._spine_point_attachment_set_rotation=a.asm.spine_point_attachment_set_rotation).apply(null,arguments)};a._spine_point_attachment_get_color=function(){return(a._spine_point_attachment_get_color=a.asm.spine_point_attachment_get_color).apply(null,arguments)};a._spine_point_attachment_set_color=function(){return(a._spine_point_attachment_set_color=a.asm.spine_point_attachment_set_color).apply(null,arguments)};
|
||||
a._spine_region_attachment_update_region=function(){return(a._spine_region_attachment_update_region=a.asm.spine_region_attachment_update_region).apply(null,arguments)};a._spine_region_attachment_compute_world_vertices=function(){return(a._spine_region_attachment_compute_world_vertices=a.asm.spine_region_attachment_compute_world_vertices).apply(null,arguments)};a._spine_region_attachment_get_x=function(){return(a._spine_region_attachment_get_x=a.asm.spine_region_attachment_get_x).apply(null,arguments)};
|
||||
a._spine_region_attachment_set_x=function(){return(a._spine_region_attachment_set_x=a.asm.spine_region_attachment_set_x).apply(null,arguments)};a._spine_region_attachment_get_y=function(){return(a._spine_region_attachment_get_y=a.asm.spine_region_attachment_get_y).apply(null,arguments)};a._spine_region_attachment_set_y=function(){return(a._spine_region_attachment_set_y=a.asm.spine_region_attachment_set_y).apply(null,arguments)};
|
||||
a._spine_region_attachment_get_rotation=function(){return(a._spine_region_attachment_get_rotation=a.asm.spine_region_attachment_get_rotation).apply(null,arguments)};a._spine_region_attachment_set_rotation=function(){return(a._spine_region_attachment_set_rotation=a.asm.spine_region_attachment_set_rotation).apply(null,arguments)};a._spine_region_attachment_get_scale_x=function(){return(a._spine_region_attachment_get_scale_x=a.asm.spine_region_attachment_get_scale_x).apply(null,arguments)};
|
||||
a._spine_region_attachment_set_scale_x=function(){return(a._spine_region_attachment_set_scale_x=a.asm.spine_region_attachment_set_scale_x).apply(null,arguments)};a._spine_region_attachment_get_scale_y=function(){return(a._spine_region_attachment_get_scale_y=a.asm.spine_region_attachment_get_scale_y).apply(null,arguments)};a._spine_region_attachment_set_scale_y=function(){return(a._spine_region_attachment_set_scale_y=a.asm.spine_region_attachment_set_scale_y).apply(null,arguments)};
|
||||
a._spine_region_attachment_get_width=function(){return(a._spine_region_attachment_get_width=a.asm.spine_region_attachment_get_width).apply(null,arguments)};a._spine_region_attachment_set_width=function(){return(a._spine_region_attachment_set_width=a.asm.spine_region_attachment_set_width).apply(null,arguments)};a._spine_region_attachment_get_height=function(){return(a._spine_region_attachment_get_height=a.asm.spine_region_attachment_get_height).apply(null,arguments)};
|
||||
a._spine_region_attachment_set_height=function(){return(a._spine_region_attachment_set_height=a.asm.spine_region_attachment_set_height).apply(null,arguments)};a._spine_region_attachment_get_color=function(){return(a._spine_region_attachment_get_color=a.asm.spine_region_attachment_get_color).apply(null,arguments)};a._spine_region_attachment_set_color=function(){return(a._spine_region_attachment_set_color=a.asm.spine_region_attachment_set_color).apply(null,arguments)};
|
||||
a._spine_region_attachment_get_path=function(){return(a._spine_region_attachment_get_path=a.asm.spine_region_attachment_get_path).apply(null,arguments)};a._spine_region_attachment_get_region=function(){return(a._spine_region_attachment_get_region=a.asm.spine_region_attachment_get_region).apply(null,arguments)};a._spine_region_attachment_get_sequence=function(){return(a._spine_region_attachment_get_sequence=a.asm.spine_region_attachment_get_sequence).apply(null,arguments)};
|
||||
a._spine_region_attachment_get_num_offset=function(){return(a._spine_region_attachment_get_num_offset=a.asm.spine_region_attachment_get_num_offset).apply(null,arguments)};a._spine_region_attachment_get_offset=function(){return(a._spine_region_attachment_get_offset=a.asm.spine_region_attachment_get_offset).apply(null,arguments)};a._spine_region_attachment_get_num_uvs=function(){return(a._spine_region_attachment_get_num_uvs=a.asm.spine_region_attachment_get_num_uvs).apply(null,arguments)};
|
||||
a._spine_region_attachment_get_uvs=function(){return(a._spine_region_attachment_get_uvs=a.asm.spine_region_attachment_get_uvs).apply(null,arguments)};a._spine_vertex_attachment_get_world_vertices_length=function(){return(a._spine_vertex_attachment_get_world_vertices_length=a.asm.spine_vertex_attachment_get_world_vertices_length).apply(null,arguments)};
|
||||
a._spine_vertex_attachment_compute_world_vertices=function(){return(a._spine_vertex_attachment_compute_world_vertices=a.asm.spine_vertex_attachment_compute_world_vertices).apply(null,arguments)};a._spine_vertex_attachment_get_num_bones=function(){return(a._spine_vertex_attachment_get_num_bones=a.asm.spine_vertex_attachment_get_num_bones).apply(null,arguments)};
|
||||
a._spine_vertex_attachment_get_bones=function(){return(a._spine_vertex_attachment_get_bones=a.asm.spine_vertex_attachment_get_bones).apply(null,arguments)};a._spine_vertex_attachment_get_num_vertices=function(){return(a._spine_vertex_attachment_get_num_vertices=a.asm.spine_vertex_attachment_get_num_vertices).apply(null,arguments)};a._spine_vertex_attachment_get_vertices=function(){return(a._spine_vertex_attachment_get_vertices=a.asm.spine_vertex_attachment_get_vertices).apply(null,arguments)};
|
||||
a._spine_vertex_attachment_get_timeline_attachment=function(){return(a._spine_vertex_attachment_get_timeline_attachment=a.asm.spine_vertex_attachment_get_timeline_attachment).apply(null,arguments)};a._spine_vertex_attachment_set_timeline_attachment=function(){return(a._spine_vertex_attachment_set_timeline_attachment=a.asm.spine_vertex_attachment_set_timeline_attachment).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_update_region=function(){return(a._spine_mesh_attachment_update_region=a.asm.spine_mesh_attachment_update_region).apply(null,arguments)};a._spine_mesh_attachment_get_hull_length=function(){return(a._spine_mesh_attachment_get_hull_length=a.asm.spine_mesh_attachment_get_hull_length).apply(null,arguments)};a._spine_mesh_attachment_set_hull_length=function(){return(a._spine_mesh_attachment_set_hull_length=a.asm.spine_mesh_attachment_set_hull_length).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_get_num_region_uvs=function(){return(a._spine_mesh_attachment_get_num_region_uvs=a.asm.spine_mesh_attachment_get_num_region_uvs).apply(null,arguments)};a._spine_mesh_attachment_get_region_uvs=function(){return(a._spine_mesh_attachment_get_region_uvs=a.asm.spine_mesh_attachment_get_region_uvs).apply(null,arguments)};a._spine_mesh_attachment_get_num_uvs=function(){return(a._spine_mesh_attachment_get_num_uvs=a.asm.spine_mesh_attachment_get_num_uvs).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_get_uvs=function(){return(a._spine_mesh_attachment_get_uvs=a.asm.spine_mesh_attachment_get_uvs).apply(null,arguments)};a._spine_mesh_attachment_get_num_triangles=function(){return(a._spine_mesh_attachment_get_num_triangles=a.asm.spine_mesh_attachment_get_num_triangles).apply(null,arguments)};a._spine_mesh_attachment_get_triangles=function(){return(a._spine_mesh_attachment_get_triangles=a.asm.spine_mesh_attachment_get_triangles).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_get_color=function(){return(a._spine_mesh_attachment_get_color=a.asm.spine_mesh_attachment_get_color).apply(null,arguments)};a._spine_mesh_attachment_set_color=function(){return(a._spine_mesh_attachment_set_color=a.asm.spine_mesh_attachment_set_color).apply(null,arguments)};a._spine_mesh_attachment_get_path=function(){return(a._spine_mesh_attachment_get_path=a.asm.spine_mesh_attachment_get_path).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_get_region=function(){return(a._spine_mesh_attachment_get_region=a.asm.spine_mesh_attachment_get_region).apply(null,arguments)};a._spine_mesh_attachment_get_sequence=function(){return(a._spine_mesh_attachment_get_sequence=a.asm.spine_mesh_attachment_get_sequence).apply(null,arguments)};a._spine_mesh_attachment_get_parent_mesh=function(){return(a._spine_mesh_attachment_get_parent_mesh=a.asm.spine_mesh_attachment_get_parent_mesh).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_set_parent_mesh=function(){return(a._spine_mesh_attachment_set_parent_mesh=a.asm.spine_mesh_attachment_set_parent_mesh).apply(null,arguments)};a._spine_mesh_attachment_get_num_edges=function(){return(a._spine_mesh_attachment_get_num_edges=a.asm.spine_mesh_attachment_get_num_edges).apply(null,arguments)};a._spine_mesh_attachment_get_edges=function(){return(a._spine_mesh_attachment_get_edges=a.asm.spine_mesh_attachment_get_edges).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_get_width=function(){return(a._spine_mesh_attachment_get_width=a.asm.spine_mesh_attachment_get_width).apply(null,arguments)};a._spine_mesh_attachment_set_width=function(){return(a._spine_mesh_attachment_set_width=a.asm.spine_mesh_attachment_set_width).apply(null,arguments)};a._spine_mesh_attachment_get_height=function(){return(a._spine_mesh_attachment_get_height=a.asm.spine_mesh_attachment_get_height).apply(null,arguments)};
|
||||
a._spine_mesh_attachment_set_height=function(){return(a._spine_mesh_attachment_set_height=a.asm.spine_mesh_attachment_set_height).apply(null,arguments)};a._spine_clipping_attachment_get_end_slot=function(){return(a._spine_clipping_attachment_get_end_slot=a.asm.spine_clipping_attachment_get_end_slot).apply(null,arguments)};a._spine_clipping_attachment_set_end_slot=function(){return(a._spine_clipping_attachment_set_end_slot=a.asm.spine_clipping_attachment_set_end_slot).apply(null,arguments)};
|
||||
a._spine_clipping_attachment_get_color=function(){return(a._spine_clipping_attachment_get_color=a.asm.spine_clipping_attachment_get_color).apply(null,arguments)};a._spine_clipping_attachment_set_color=function(){return(a._spine_clipping_attachment_set_color=a.asm.spine_clipping_attachment_set_color).apply(null,arguments)};a._spine_bounding_box_attachment_get_color=function(){return(a._spine_bounding_box_attachment_get_color=a.asm.spine_bounding_box_attachment_get_color).apply(null,arguments)};
|
||||
a._spine_bounding_box_attachment_set_color=function(){return(a._spine_bounding_box_attachment_set_color=a.asm.spine_bounding_box_attachment_set_color).apply(null,arguments)};a._spine_path_attachment_get_num_lengths=function(){return(a._spine_path_attachment_get_num_lengths=a.asm.spine_path_attachment_get_num_lengths).apply(null,arguments)};a._spine_path_attachment_get_lengths=function(){return(a._spine_path_attachment_get_lengths=a.asm.spine_path_attachment_get_lengths).apply(null,arguments)};
|
||||
a._spine_path_attachment_get_is_closed=function(){return(a._spine_path_attachment_get_is_closed=a.asm.spine_path_attachment_get_is_closed).apply(null,arguments)};a._spine_path_attachment_set_is_closed=function(){return(a._spine_path_attachment_set_is_closed=a.asm.spine_path_attachment_set_is_closed).apply(null,arguments)};a._spine_path_attachment_get_is_constant_speed=function(){return(a._spine_path_attachment_get_is_constant_speed=a.asm.spine_path_attachment_get_is_constant_speed).apply(null,arguments)};
|
||||
a._spine_path_attachment_set_is_constant_speed=function(){return(a._spine_path_attachment_set_is_constant_speed=a.asm.spine_path_attachment_set_is_constant_speed).apply(null,arguments)};a._spine_path_attachment_get_color=function(){return(a._spine_path_attachment_get_color=a.asm.spine_path_attachment_get_color).apply(null,arguments)};a._spine_path_attachment_set_color=function(){return(a._spine_path_attachment_set_color=a.asm.spine_path_attachment_set_color).apply(null,arguments)};
|
||||
a._spine_skin_set_attachment=function(){return(a._spine_skin_set_attachment=a.asm.spine_skin_set_attachment).apply(null,arguments)};a._spine_skin_get_attachment=function(){return(a._spine_skin_get_attachment=a.asm.spine_skin_get_attachment).apply(null,arguments)};a._spine_skin_remove_attachment=function(){return(a._spine_skin_remove_attachment=a.asm.spine_skin_remove_attachment).apply(null,arguments)};
|
||||
a._spine_skin_get_name=function(){return(a._spine_skin_get_name=a.asm.spine_skin_get_name).apply(null,arguments)};a._spine_skin_add_skin=function(){return(a._spine_skin_add_skin=a.asm.spine_skin_add_skin).apply(null,arguments)};a._spine_skin_copy_skin=function(){return(a._spine_skin_copy_skin=a.asm.spine_skin_copy_skin).apply(null,arguments)};a._spine_skin_get_entries=function(){return(a._spine_skin_get_entries=a.asm.spine_skin_get_entries).apply(null,arguments)};
|
||||
a._spine_skin_entries_get_num_entries=function(){return(a._spine_skin_entries_get_num_entries=a.asm.spine_skin_entries_get_num_entries).apply(null,arguments)};a._spine_skin_entries_get_entry=function(){return(a._spine_skin_entries_get_entry=a.asm.spine_skin_entries_get_entry).apply(null,arguments)};a._spine_skin_entries_dispose=function(){return(a._spine_skin_entries_dispose=a.asm.spine_skin_entries_dispose).apply(null,arguments)};
|
||||
a._spine_skin_entry_get_slot_index=function(){return(a._spine_skin_entry_get_slot_index=a.asm.spine_skin_entry_get_slot_index).apply(null,arguments)};a._spine_skin_entry_get_name=function(){return(a._spine_skin_entry_get_name=a.asm.spine_skin_entry_get_name).apply(null,arguments)};a._spine_skin_entry_get_attachment=function(){return(a._spine_skin_entry_get_attachment=a.asm.spine_skin_entry_get_attachment).apply(null,arguments)};
|
||||
a._spine_skin_get_num_bones=function(){return(a._spine_skin_get_num_bones=a.asm.spine_skin_get_num_bones).apply(null,arguments)};a._spine_skin_get_bones=function(){return(a._spine_skin_get_bones=a.asm.spine_skin_get_bones).apply(null,arguments)};a._spine_skin_get_num_constraints=function(){return(a._spine_skin_get_num_constraints=a.asm.spine_skin_get_num_constraints).apply(null,arguments)};
|
||||
a._spine_skin_get_constraints=function(){return(a._spine_skin_get_constraints=a.asm.spine_skin_get_constraints).apply(null,arguments)};a._spine_skin_create=function(){return(a._spine_skin_create=a.asm.spine_skin_create).apply(null,arguments)};a._spine_skin_dispose=function(){return(a._spine_skin_dispose=a.asm.spine_skin_dispose).apply(null,arguments)};a._spine_constraint_data_get_type=function(){return(a._spine_constraint_data_get_type=a.asm.spine_constraint_data_get_type).apply(null,arguments)};
|
||||
a._spine_constraint_data_get_name=function(){return(a._spine_constraint_data_get_name=a.asm.spine_constraint_data_get_name).apply(null,arguments)};a._spine_constraint_data_get_order=function(){return(a._spine_constraint_data_get_order=a.asm.spine_constraint_data_get_order).apply(null,arguments)};a._spine_constraint_data_set_order=function(){return(a._spine_constraint_data_set_order=a.asm.spine_constraint_data_set_order).apply(null,arguments)};
|
||||
a._spine_constraint_data_get_is_skin_required=function(){return(a._spine_constraint_data_get_is_skin_required=a.asm.spine_constraint_data_get_is_skin_required).apply(null,arguments)};a._spine_constraint_data_set_is_skin_required=function(){return(a._spine_constraint_data_set_is_skin_required=a.asm.spine_constraint_data_set_is_skin_required).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_get_num_bones=function(){return(a._spine_ik_constraint_data_get_num_bones=a.asm.spine_ik_constraint_data_get_num_bones).apply(null,arguments)};a._spine_ik_constraint_data_get_bones=function(){return(a._spine_ik_constraint_data_get_bones=a.asm.spine_ik_constraint_data_get_bones).apply(null,arguments)};a._spine_ik_constraint_data_get_target=function(){return(a._spine_ik_constraint_data_get_target=a.asm.spine_ik_constraint_data_get_target).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_set_target=function(){return(a._spine_ik_constraint_data_set_target=a.asm.spine_ik_constraint_data_set_target).apply(null,arguments)};a._spine_ik_constraint_data_get_bend_direction=function(){return(a._spine_ik_constraint_data_get_bend_direction=a.asm.spine_ik_constraint_data_get_bend_direction).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_set_bend_direction=function(){return(a._spine_ik_constraint_data_set_bend_direction=a.asm.spine_ik_constraint_data_set_bend_direction).apply(null,arguments)};a._spine_ik_constraint_data_get_compress=function(){return(a._spine_ik_constraint_data_get_compress=a.asm.spine_ik_constraint_data_get_compress).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_set_compress=function(){return(a._spine_ik_constraint_data_set_compress=a.asm.spine_ik_constraint_data_set_compress).apply(null,arguments)};a._spine_ik_constraint_data_get_stretch=function(){return(a._spine_ik_constraint_data_get_stretch=a.asm.spine_ik_constraint_data_get_stretch).apply(null,arguments)};a._spine_ik_constraint_data_set_stretch=function(){return(a._spine_ik_constraint_data_set_stretch=a.asm.spine_ik_constraint_data_set_stretch).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_get_uniform=function(){return(a._spine_ik_constraint_data_get_uniform=a.asm.spine_ik_constraint_data_get_uniform).apply(null,arguments)};a._spine_ik_constraint_data_set_uniform=function(){return(a._spine_ik_constraint_data_set_uniform=a.asm.spine_ik_constraint_data_set_uniform).apply(null,arguments)};a._spine_ik_constraint_data_get_mix=function(){return(a._spine_ik_constraint_data_get_mix=a.asm.spine_ik_constraint_data_get_mix).apply(null,arguments)};
|
||||
a._spine_ik_constraint_data_set_mix=function(){return(a._spine_ik_constraint_data_set_mix=a.asm.spine_ik_constraint_data_set_mix).apply(null,arguments)};a._spine_ik_constraint_data_get_softness=function(){return(a._spine_ik_constraint_data_get_softness=a.asm.spine_ik_constraint_data_get_softness).apply(null,arguments)};a._spine_ik_constraint_data_set_softness=function(){return(a._spine_ik_constraint_data_set_softness=a.asm.spine_ik_constraint_data_set_softness).apply(null,arguments)};
|
||||
a._spine_ik_constraint_update=function(){return(a._spine_ik_constraint_update=a.asm.spine_ik_constraint_update).apply(null,arguments)};a._spine_ik_constraint_get_order=function(){return(a._spine_ik_constraint_get_order=a.asm.spine_ik_constraint_get_order).apply(null,arguments)};a._spine_ik_constraint_get_data=function(){return(a._spine_ik_constraint_get_data=a.asm.spine_ik_constraint_get_data).apply(null,arguments)};
|
||||
a._spine_ik_constraint_get_num_bones=function(){return(a._spine_ik_constraint_get_num_bones=a.asm.spine_ik_constraint_get_num_bones).apply(null,arguments)};a._spine_ik_constraint_get_bones=function(){return(a._spine_ik_constraint_get_bones=a.asm.spine_ik_constraint_get_bones).apply(null,arguments)};a._spine_ik_constraint_get_target=function(){return(a._spine_ik_constraint_get_target=a.asm.spine_ik_constraint_get_target).apply(null,arguments)};
|
||||
a._spine_ik_constraint_set_target=function(){return(a._spine_ik_constraint_set_target=a.asm.spine_ik_constraint_set_target).apply(null,arguments)};a._spine_ik_constraint_get_bend_direction=function(){return(a._spine_ik_constraint_get_bend_direction=a.asm.spine_ik_constraint_get_bend_direction).apply(null,arguments)};a._spine_ik_constraint_set_bend_direction=function(){return(a._spine_ik_constraint_set_bend_direction=a.asm.spine_ik_constraint_set_bend_direction).apply(null,arguments)};
|
||||
a._spine_ik_constraint_get_compress=function(){return(a._spine_ik_constraint_get_compress=a.asm.spine_ik_constraint_get_compress).apply(null,arguments)};a._spine_ik_constraint_set_compress=function(){return(a._spine_ik_constraint_set_compress=a.asm.spine_ik_constraint_set_compress).apply(null,arguments)};a._spine_ik_constraint_get_stretch=function(){return(a._spine_ik_constraint_get_stretch=a.asm.spine_ik_constraint_get_stretch).apply(null,arguments)};
|
||||
a._spine_ik_constraint_set_stretch=function(){return(a._spine_ik_constraint_set_stretch=a.asm.spine_ik_constraint_set_stretch).apply(null,arguments)};a._spine_ik_constraint_get_mix=function(){return(a._spine_ik_constraint_get_mix=a.asm.spine_ik_constraint_get_mix).apply(null,arguments)};a._spine_ik_constraint_set_mix=function(){return(a._spine_ik_constraint_set_mix=a.asm.spine_ik_constraint_set_mix).apply(null,arguments)};
|
||||
a._spine_ik_constraint_get_softness=function(){return(a._spine_ik_constraint_get_softness=a.asm.spine_ik_constraint_get_softness).apply(null,arguments)};a._spine_ik_constraint_set_softness=function(){return(a._spine_ik_constraint_set_softness=a.asm.spine_ik_constraint_set_softness).apply(null,arguments)};a._spine_ik_constraint_get_is_active=function(){return(a._spine_ik_constraint_get_is_active=a.asm.spine_ik_constraint_get_is_active).apply(null,arguments)};
|
||||
a._spine_ik_constraint_set_is_active=function(){return(a._spine_ik_constraint_set_is_active=a.asm.spine_ik_constraint_set_is_active).apply(null,arguments)};a._spine_transform_constraint_data_get_num_bones=function(){return(a._spine_transform_constraint_data_get_num_bones=a.asm.spine_transform_constraint_data_get_num_bones).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_get_bones=function(){return(a._spine_transform_constraint_data_get_bones=a.asm.spine_transform_constraint_data_get_bones).apply(null,arguments)};a._spine_transform_constraint_data_get_target=function(){return(a._spine_transform_constraint_data_get_target=a.asm.spine_transform_constraint_data_get_target).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_target=function(){return(a._spine_transform_constraint_data_set_target=a.asm.spine_transform_constraint_data_set_target).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_rotate=function(){return(a._spine_transform_constraint_data_get_mix_rotate=a.asm.spine_transform_constraint_data_get_mix_rotate).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_rotate=function(){return(a._spine_transform_constraint_data_set_mix_rotate=a.asm.spine_transform_constraint_data_set_mix_rotate).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_x=function(){return(a._spine_transform_constraint_data_get_mix_x=a.asm.spine_transform_constraint_data_get_mix_x).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_x=function(){return(a._spine_transform_constraint_data_set_mix_x=a.asm.spine_transform_constraint_data_set_mix_x).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_y=function(){return(a._spine_transform_constraint_data_get_mix_y=a.asm.spine_transform_constraint_data_get_mix_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_y=function(){return(a._spine_transform_constraint_data_set_mix_y=a.asm.spine_transform_constraint_data_set_mix_y).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_scale_x=function(){return(a._spine_transform_constraint_data_get_mix_scale_x=a.asm.spine_transform_constraint_data_get_mix_scale_x).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_scale_x=function(){return(a._spine_transform_constraint_data_set_mix_scale_x=a.asm.spine_transform_constraint_data_set_mix_scale_x).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_scale_y=function(){return(a._spine_transform_constraint_data_get_mix_scale_y=a.asm.spine_transform_constraint_data_get_mix_scale_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_scale_y=function(){return(a._spine_transform_constraint_data_set_mix_scale_y=a.asm.spine_transform_constraint_data_set_mix_scale_y).apply(null,arguments)};a._spine_transform_constraint_data_get_mix_shear_y=function(){return(a._spine_transform_constraint_data_get_mix_shear_y=a.asm.spine_transform_constraint_data_get_mix_shear_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_mix_shear_y=function(){return(a._spine_transform_constraint_data_set_mix_shear_y=a.asm.spine_transform_constraint_data_set_mix_shear_y).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_rotation=function(){return(a._spine_transform_constraint_data_get_offset_rotation=a.asm.spine_transform_constraint_data_get_offset_rotation).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_rotation=function(){return(a._spine_transform_constraint_data_set_offset_rotation=a.asm.spine_transform_constraint_data_set_offset_rotation).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_x=function(){return(a._spine_transform_constraint_data_get_offset_x=a.asm.spine_transform_constraint_data_get_offset_x).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_x=function(){return(a._spine_transform_constraint_data_set_offset_x=a.asm.spine_transform_constraint_data_set_offset_x).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_y=function(){return(a._spine_transform_constraint_data_get_offset_y=a.asm.spine_transform_constraint_data_get_offset_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_y=function(){return(a._spine_transform_constraint_data_set_offset_y=a.asm.spine_transform_constraint_data_set_offset_y).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_scale_x=function(){return(a._spine_transform_constraint_data_get_offset_scale_x=a.asm.spine_transform_constraint_data_get_offset_scale_x).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_scale_x=function(){return(a._spine_transform_constraint_data_set_offset_scale_x=a.asm.spine_transform_constraint_data_set_offset_scale_x).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_scale_y=function(){return(a._spine_transform_constraint_data_get_offset_scale_y=a.asm.spine_transform_constraint_data_get_offset_scale_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_scale_y=function(){return(a._spine_transform_constraint_data_set_offset_scale_y=a.asm.spine_transform_constraint_data_set_offset_scale_y).apply(null,arguments)};a._spine_transform_constraint_data_get_offset_shear_y=function(){return(a._spine_transform_constraint_data_get_offset_shear_y=a.asm.spine_transform_constraint_data_get_offset_shear_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_offset_shear_y=function(){return(a._spine_transform_constraint_data_set_offset_shear_y=a.asm.spine_transform_constraint_data_set_offset_shear_y).apply(null,arguments)};a._spine_transform_constraint_data_get_is_relative=function(){return(a._spine_transform_constraint_data_get_is_relative=a.asm.spine_transform_constraint_data_get_is_relative).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_is_relative=function(){return(a._spine_transform_constraint_data_set_is_relative=a.asm.spine_transform_constraint_data_set_is_relative).apply(null,arguments)};a._spine_transform_constraint_data_get_is_local=function(){return(a._spine_transform_constraint_data_get_is_local=a.asm.spine_transform_constraint_data_get_is_local).apply(null,arguments)};
|
||||
a._spine_transform_constraint_data_set_is_local=function(){return(a._spine_transform_constraint_data_set_is_local=a.asm.spine_transform_constraint_data_set_is_local).apply(null,arguments)};a._spine_transform_constraint_update=function(){return(a._spine_transform_constraint_update=a.asm.spine_transform_constraint_update).apply(null,arguments)};a._spine_transform_constraint_get_order=function(){return(a._spine_transform_constraint_get_order=a.asm.spine_transform_constraint_get_order).apply(null,arguments)};
|
||||
a._spine_transform_constraint_get_data=function(){return(a._spine_transform_constraint_get_data=a.asm.spine_transform_constraint_get_data).apply(null,arguments)};a._spine_transform_constraint_get_num_bones=function(){return(a._spine_transform_constraint_get_num_bones=a.asm.spine_transform_constraint_get_num_bones).apply(null,arguments)};a._spine_transform_constraint_get_bones=function(){return(a._spine_transform_constraint_get_bones=a.asm.spine_transform_constraint_get_bones).apply(null,arguments)};
|
||||
a._spine_transform_constraint_get_target=function(){return(a._spine_transform_constraint_get_target=a.asm.spine_transform_constraint_get_target).apply(null,arguments)};a._spine_transform_constraint_set_target=function(){return(a._spine_transform_constraint_set_target=a.asm.spine_transform_constraint_set_target).apply(null,arguments)};
|
||||
a._spine_transform_constraint_get_mix_rotate=function(){return(a._spine_transform_constraint_get_mix_rotate=a.asm.spine_transform_constraint_get_mix_rotate).apply(null,arguments)};a._spine_transform_constraint_set_mix_rotate=function(){return(a._spine_transform_constraint_set_mix_rotate=a.asm.spine_transform_constraint_set_mix_rotate).apply(null,arguments)};
|
||||
a._spine_transform_constraint_get_mix_x=function(){return(a._spine_transform_constraint_get_mix_x=a.asm.spine_transform_constraint_get_mix_x).apply(null,arguments)};a._spine_transform_constraint_set_mix_x=function(){return(a._spine_transform_constraint_set_mix_x=a.asm.spine_transform_constraint_set_mix_x).apply(null,arguments)};a._spine_transform_constraint_get_mix_y=function(){return(a._spine_transform_constraint_get_mix_y=a.asm.spine_transform_constraint_get_mix_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_set_mix_y=function(){return(a._spine_transform_constraint_set_mix_y=a.asm.spine_transform_constraint_set_mix_y).apply(null,arguments)};a._spine_transform_constraint_get_mix_scale_x=function(){return(a._spine_transform_constraint_get_mix_scale_x=a.asm.spine_transform_constraint_get_mix_scale_x).apply(null,arguments)};
|
||||
a._spine_transform_constraint_set_mix_scale_x=function(){return(a._spine_transform_constraint_set_mix_scale_x=a.asm.spine_transform_constraint_set_mix_scale_x).apply(null,arguments)};a._spine_transform_constraint_get_mix_scale_y=function(){return(a._spine_transform_constraint_get_mix_scale_y=a.asm.spine_transform_constraint_get_mix_scale_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_set_mix_scale_y=function(){return(a._spine_transform_constraint_set_mix_scale_y=a.asm.spine_transform_constraint_set_mix_scale_y).apply(null,arguments)};a._spine_transform_constraint_get_mix_shear_y=function(){return(a._spine_transform_constraint_get_mix_shear_y=a.asm.spine_transform_constraint_get_mix_shear_y).apply(null,arguments)};
|
||||
a._spine_transform_constraint_set_mix_shear_y=function(){return(a._spine_transform_constraint_set_mix_shear_y=a.asm.spine_transform_constraint_set_mix_shear_y).apply(null,arguments)};a._spine_transform_constraint_get_is_active=function(){return(a._spine_transform_constraint_get_is_active=a.asm.spine_transform_constraint_get_is_active).apply(null,arguments)};
|
||||
a._spine_transform_constraint_set_is_active=function(){return(a._spine_transform_constraint_set_is_active=a.asm.spine_transform_constraint_set_is_active).apply(null,arguments)};a._spine_path_constraint_data_get_num_bones=function(){return(a._spine_path_constraint_data_get_num_bones=a.asm.spine_path_constraint_data_get_num_bones).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_bones=function(){return(a._spine_path_constraint_data_get_bones=a.asm.spine_path_constraint_data_get_bones).apply(null,arguments)};a._spine_path_constraint_data_get_target=function(){return(a._spine_path_constraint_data_get_target=a.asm.spine_path_constraint_data_get_target).apply(null,arguments)};a._spine_path_constraint_data_set_target=function(){return(a._spine_path_constraint_data_set_target=a.asm.spine_path_constraint_data_set_target).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_position_mode=function(){return(a._spine_path_constraint_data_get_position_mode=a.asm.spine_path_constraint_data_get_position_mode).apply(null,arguments)};a._spine_path_constraint_data_set_position_mode=function(){return(a._spine_path_constraint_data_set_position_mode=a.asm.spine_path_constraint_data_set_position_mode).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_spacing_mode=function(){return(a._spine_path_constraint_data_get_spacing_mode=a.asm.spine_path_constraint_data_get_spacing_mode).apply(null,arguments)};a._spine_path_constraint_data_set_spacing_mode=function(){return(a._spine_path_constraint_data_set_spacing_mode=a.asm.spine_path_constraint_data_set_spacing_mode).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_rotate_mode=function(){return(a._spine_path_constraint_data_get_rotate_mode=a.asm.spine_path_constraint_data_get_rotate_mode).apply(null,arguments)};a._spine_path_constraint_data_set_rotate_mode=function(){return(a._spine_path_constraint_data_set_rotate_mode=a.asm.spine_path_constraint_data_set_rotate_mode).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_offset_rotation=function(){return(a._spine_path_constraint_data_get_offset_rotation=a.asm.spine_path_constraint_data_get_offset_rotation).apply(null,arguments)};a._spine_path_constraint_data_set_offset_rotation=function(){return(a._spine_path_constraint_data_set_offset_rotation=a.asm.spine_path_constraint_data_set_offset_rotation).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_position=function(){return(a._spine_path_constraint_data_get_position=a.asm.spine_path_constraint_data_get_position).apply(null,arguments)};a._spine_path_constraint_data_set_position=function(){return(a._spine_path_constraint_data_set_position=a.asm.spine_path_constraint_data_set_position).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_spacing=function(){return(a._spine_path_constraint_data_get_spacing=a.asm.spine_path_constraint_data_get_spacing).apply(null,arguments)};a._spine_path_constraint_data_set_spacing=function(){return(a._spine_path_constraint_data_set_spacing=a.asm.spine_path_constraint_data_set_spacing).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_mix_rotate=function(){return(a._spine_path_constraint_data_get_mix_rotate=a.asm.spine_path_constraint_data_get_mix_rotate).apply(null,arguments)};a._spine_path_constraint_data_set_mix_rotate=function(){return(a._spine_path_constraint_data_set_mix_rotate=a.asm.spine_path_constraint_data_set_mix_rotate).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_get_mix_x=function(){return(a._spine_path_constraint_data_get_mix_x=a.asm.spine_path_constraint_data_get_mix_x).apply(null,arguments)};a._spine_path_constraint_data_set_mix_x=function(){return(a._spine_path_constraint_data_set_mix_x=a.asm.spine_path_constraint_data_set_mix_x).apply(null,arguments)};a._spine_path_constraint_data_get_mix_y=function(){return(a._spine_path_constraint_data_get_mix_y=a.asm.spine_path_constraint_data_get_mix_y).apply(null,arguments)};
|
||||
a._spine_path_constraint_data_set_mix_y=function(){return(a._spine_path_constraint_data_set_mix_y=a.asm.spine_path_constraint_data_set_mix_y).apply(null,arguments)};a._spine_path_constraint_update=function(){return(a._spine_path_constraint_update=a.asm.spine_path_constraint_update).apply(null,arguments)};a._spine_path_constraint_get_order=function(){return(a._spine_path_constraint_get_order=a.asm.spine_path_constraint_get_order).apply(null,arguments)};
|
||||
a._spine_path_constraint_get_data=function(){return(a._spine_path_constraint_get_data=a.asm.spine_path_constraint_get_data).apply(null,arguments)};a._spine_path_constraint_get_num_bones=function(){return(a._spine_path_constraint_get_num_bones=a.asm.spine_path_constraint_get_num_bones).apply(null,arguments)};a._spine_path_constraint_get_bones=function(){return(a._spine_path_constraint_get_bones=a.asm.spine_path_constraint_get_bones).apply(null,arguments)};
|
||||
a._spine_path_constraint_get_target=function(){return(a._spine_path_constraint_get_target=a.asm.spine_path_constraint_get_target).apply(null,arguments)};a._spine_path_constraint_set_target=function(){return(a._spine_path_constraint_set_target=a.asm.spine_path_constraint_set_target).apply(null,arguments)};a._spine_path_constraint_get_position=function(){return(a._spine_path_constraint_get_position=a.asm.spine_path_constraint_get_position).apply(null,arguments)};
|
||||
a._spine_path_constraint_set_position=function(){return(a._spine_path_constraint_set_position=a.asm.spine_path_constraint_set_position).apply(null,arguments)};a._spine_path_constraint_get_spacing=function(){return(a._spine_path_constraint_get_spacing=a.asm.spine_path_constraint_get_spacing).apply(null,arguments)};a._spine_path_constraint_set_spacing=function(){return(a._spine_path_constraint_set_spacing=a.asm.spine_path_constraint_set_spacing).apply(null,arguments)};
|
||||
a._spine_path_constraint_get_mix_rotate=function(){return(a._spine_path_constraint_get_mix_rotate=a.asm.spine_path_constraint_get_mix_rotate).apply(null,arguments)};a._spine_path_constraint_set_mix_rotate=function(){return(a._spine_path_constraint_set_mix_rotate=a.asm.spine_path_constraint_set_mix_rotate).apply(null,arguments)};a._spine_path_constraint_get_mix_x=function(){return(a._spine_path_constraint_get_mix_x=a.asm.spine_path_constraint_get_mix_x).apply(null,arguments)};
|
||||
a._spine_path_constraint_set_mix_x=function(){return(a._spine_path_constraint_set_mix_x=a.asm.spine_path_constraint_set_mix_x).apply(null,arguments)};a._spine_path_constraint_get_mix_y=function(){return(a._spine_path_constraint_get_mix_y=a.asm.spine_path_constraint_get_mix_y).apply(null,arguments)};a._spine_path_constraint_set_mix_y=function(){return(a._spine_path_constraint_set_mix_y=a.asm.spine_path_constraint_set_mix_y).apply(null,arguments)};
|
||||
a._spine_path_constraint_get_is_active=function(){return(a._spine_path_constraint_get_is_active=a.asm.spine_path_constraint_get_is_active).apply(null,arguments)};a._spine_path_constraint_set_is_active=function(){return(a._spine_path_constraint_set_is_active=a.asm.spine_path_constraint_set_is_active).apply(null,arguments)};a._spine_physics_constraint_data_set_bone=function(){return(a._spine_physics_constraint_data_set_bone=a.asm.spine_physics_constraint_data_set_bone).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_bone=function(){return(a._spine_physics_constraint_data_get_bone=a.asm.spine_physics_constraint_data_get_bone).apply(null,arguments)};a._spine_physics_constraint_data_set_x=function(){return(a._spine_physics_constraint_data_set_x=a.asm.spine_physics_constraint_data_set_x).apply(null,arguments)};a._spine_physics_constraint_data_get_x=function(){return(a._spine_physics_constraint_data_get_x=a.asm.spine_physics_constraint_data_get_x).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_set_y=function(){return(a._spine_physics_constraint_data_set_y=a.asm.spine_physics_constraint_data_set_y).apply(null,arguments)};a._spine_physics_constraint_data_get_y=function(){return(a._spine_physics_constraint_data_get_y=a.asm.spine_physics_constraint_data_get_y).apply(null,arguments)};a._spine_physics_constraint_data_set_rotate=function(){return(a._spine_physics_constraint_data_set_rotate=a.asm.spine_physics_constraint_data_set_rotate).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_rotate=function(){return(a._spine_physics_constraint_data_get_rotate=a.asm.spine_physics_constraint_data_get_rotate).apply(null,arguments)};a._spine_physics_constraint_data_set_scale_x=function(){return(a._spine_physics_constraint_data_set_scale_x=a.asm.spine_physics_constraint_data_set_scale_x).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_scale_x=function(){return(a._spine_physics_constraint_data_get_scale_x=a.asm.spine_physics_constraint_data_get_scale_x).apply(null,arguments)};a._spine_physics_constraint_data_set_shear_x=function(){return(a._spine_physics_constraint_data_set_shear_x=a.asm.spine_physics_constraint_data_set_shear_x).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_shear_x=function(){return(a._spine_physics_constraint_data_get_shear_x=a.asm.spine_physics_constraint_data_get_shear_x).apply(null,arguments)};a._spine_physics_constraint_data_set_limit=function(){return(a._spine_physics_constraint_data_set_limit=a.asm.spine_physics_constraint_data_set_limit).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_limit=function(){return(a._spine_physics_constraint_data_get_limit=a.asm.spine_physics_constraint_data_get_limit).apply(null,arguments)};a._spine_physics_constraint_data_set_step=function(){return(a._spine_physics_constraint_data_set_step=a.asm.spine_physics_constraint_data_set_step).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_step=function(){return(a._spine_physics_constraint_data_get_step=a.asm.spine_physics_constraint_data_get_step).apply(null,arguments)};a._spine_physics_constraint_data_set_inertia=function(){return(a._spine_physics_constraint_data_set_inertia=a.asm.spine_physics_constraint_data_set_inertia).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_inertia=function(){return(a._spine_physics_constraint_data_get_inertia=a.asm.spine_physics_constraint_data_get_inertia).apply(null,arguments)};a._spine_physics_constraint_data_set_strength=function(){return(a._spine_physics_constraint_data_set_strength=a.asm.spine_physics_constraint_data_set_strength).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_strength=function(){return(a._spine_physics_constraint_data_get_strength=a.asm.spine_physics_constraint_data_get_strength).apply(null,arguments)};a._spine_physics_constraint_data_set_damping=function(){return(a._spine_physics_constraint_data_set_damping=a.asm.spine_physics_constraint_data_set_damping).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_damping=function(){return(a._spine_physics_constraint_data_get_damping=a.asm.spine_physics_constraint_data_get_damping).apply(null,arguments)};a._spine_physics_constraint_data_set_mass_inverse=function(){return(a._spine_physics_constraint_data_set_mass_inverse=a.asm.spine_physics_constraint_data_set_mass_inverse).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_mass_inverse=function(){return(a._spine_physics_constraint_data_get_mass_inverse=a.asm.spine_physics_constraint_data_get_mass_inverse).apply(null,arguments)};a._spine_physics_constraint_data_set_wind=function(){return(a._spine_physics_constraint_data_set_wind=a.asm.spine_physics_constraint_data_set_wind).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_wind=function(){return(a._spine_physics_constraint_data_get_wind=a.asm.spine_physics_constraint_data_get_wind).apply(null,arguments)};a._spine_physics_constraint_data_set_gravity=function(){return(a._spine_physics_constraint_data_set_gravity=a.asm.spine_physics_constraint_data_set_gravity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_gravity=function(){return(a._spine_physics_constraint_data_get_gravity=a.asm.spine_physics_constraint_data_get_gravity).apply(null,arguments)};a._spine_physics_constraint_data_set_mix=function(){return(a._spine_physics_constraint_data_set_mix=a.asm.spine_physics_constraint_data_set_mix).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_get_mix=function(){return(a._spine_physics_constraint_data_get_mix=a.asm.spine_physics_constraint_data_get_mix).apply(null,arguments)};a._spine_physics_constraint_data_set_inertia_global=function(){return(a._spine_physics_constraint_data_set_inertia_global=a.asm.spine_physics_constraint_data_set_inertia_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_inertia_global=function(){return(a._spine_physics_constraint_data_is_inertia_global=a.asm.spine_physics_constraint_data_is_inertia_global).apply(null,arguments)};a._spine_physics_constraint_data_set_strength_global=function(){return(a._spine_physics_constraint_data_set_strength_global=a.asm.spine_physics_constraint_data_set_strength_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_strength_global=function(){return(a._spine_physics_constraint_data_is_strength_global=a.asm.spine_physics_constraint_data_is_strength_global).apply(null,arguments)};a._spine_physics_constraint_data_set_damping_global=function(){return(a._spine_physics_constraint_data_set_damping_global=a.asm.spine_physics_constraint_data_set_damping_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_damping_global=function(){return(a._spine_physics_constraint_data_is_damping_global=a.asm.spine_physics_constraint_data_is_damping_global).apply(null,arguments)};a._spine_physics_constraint_data_set_mass_global=function(){return(a._spine_physics_constraint_data_set_mass_global=a.asm.spine_physics_constraint_data_set_mass_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_mass_global=function(){return(a._spine_physics_constraint_data_is_mass_global=a.asm.spine_physics_constraint_data_is_mass_global).apply(null,arguments)};a._spine_physics_constraint_data_set_wind_global=function(){return(a._spine_physics_constraint_data_set_wind_global=a.asm.spine_physics_constraint_data_set_wind_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_wind_global=function(){return(a._spine_physics_constraint_data_is_wind_global=a.asm.spine_physics_constraint_data_is_wind_global).apply(null,arguments)};a._spine_physics_constraint_data_set_gravity_global=function(){return(a._spine_physics_constraint_data_set_gravity_global=a.asm.spine_physics_constraint_data_set_gravity_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_gravity_global=function(){return(a._spine_physics_constraint_data_is_gravity_global=a.asm.spine_physics_constraint_data_is_gravity_global).apply(null,arguments)};a._spine_physics_constraint_data_set_mix_global=function(){return(a._spine_physics_constraint_data_set_mix_global=a.asm.spine_physics_constraint_data_set_mix_global).apply(null,arguments)};
|
||||
a._spine_physics_constraint_data_is_mix_global=function(){return(a._spine_physics_constraint_data_is_mix_global=a.asm.spine_physics_constraint_data_is_mix_global).apply(null,arguments)};a._spine_physics_constraint_set_bone=function(){return(a._spine_physics_constraint_set_bone=a.asm.spine_physics_constraint_set_bone).apply(null,arguments)};a._spine_physics_constraint_get_bone=function(){return(a._spine_physics_constraint_get_bone=a.asm.spine_physics_constraint_get_bone).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_inertia=function(){return(a._spine_physics_constraint_set_inertia=a.asm.spine_physics_constraint_set_inertia).apply(null,arguments)};a._spine_physics_constraint_get_inertia=function(){return(a._spine_physics_constraint_get_inertia=a.asm.spine_physics_constraint_get_inertia).apply(null,arguments)};a._spine_physics_constraint_set_strength=function(){return(a._spine_physics_constraint_set_strength=a.asm.spine_physics_constraint_set_strength).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_strength=function(){return(a._spine_physics_constraint_get_strength=a.asm.spine_physics_constraint_get_strength).apply(null,arguments)};a._spine_physics_constraint_set_damping=function(){return(a._spine_physics_constraint_set_damping=a.asm.spine_physics_constraint_set_damping).apply(null,arguments)};a._spine_physics_constraint_get_damping=function(){return(a._spine_physics_constraint_get_damping=a.asm.spine_physics_constraint_get_damping).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_mass_inverse=function(){return(a._spine_physics_constraint_set_mass_inverse=a.asm.spine_physics_constraint_set_mass_inverse).apply(null,arguments)};a._spine_physics_constraint_get_mass_inverse=function(){return(a._spine_physics_constraint_get_mass_inverse=a.asm.spine_physics_constraint_get_mass_inverse).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_wind=function(){return(a._spine_physics_constraint_set_wind=a.asm.spine_physics_constraint_set_wind).apply(null,arguments)};a._spine_physics_constraint_get_wind=function(){return(a._spine_physics_constraint_get_wind=a.asm.spine_physics_constraint_get_wind).apply(null,arguments)};a._spine_physics_constraint_set_gravity=function(){return(a._spine_physics_constraint_set_gravity=a.asm.spine_physics_constraint_set_gravity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_gravity=function(){return(a._spine_physics_constraint_get_gravity=a.asm.spine_physics_constraint_get_gravity).apply(null,arguments)};a._spine_physics_constraint_set_mix=function(){return(a._spine_physics_constraint_set_mix=a.asm.spine_physics_constraint_set_mix).apply(null,arguments)};a._spine_physics_constraint_get_mix=function(){return(a._spine_physics_constraint_get_mix=a.asm.spine_physics_constraint_get_mix).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_reset=function(){return(a._spine_physics_constraint_set_reset=a.asm.spine_physics_constraint_set_reset).apply(null,arguments)};a._spine_physics_constraint_get_reset=function(){return(a._spine_physics_constraint_get_reset=a.asm.spine_physics_constraint_get_reset).apply(null,arguments)};a._spine_physics_constraint_set_ux=function(){return(a._spine_physics_constraint_set_ux=a.asm.spine_physics_constraint_set_ux).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_ux=function(){return(a._spine_physics_constraint_get_ux=a.asm.spine_physics_constraint_get_ux).apply(null,arguments)};a._spine_physics_constraint_set_uy=function(){return(a._spine_physics_constraint_set_uy=a.asm.spine_physics_constraint_set_uy).apply(null,arguments)};a._spine_physics_constraint_get_uy=function(){return(a._spine_physics_constraint_get_uy=a.asm.spine_physics_constraint_get_uy).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_cx=function(){return(a._spine_physics_constraint_set_cx=a.asm.spine_physics_constraint_set_cx).apply(null,arguments)};a._spine_physics_constraint_get_cx=function(){return(a._spine_physics_constraint_get_cx=a.asm.spine_physics_constraint_get_cx).apply(null,arguments)};a._spine_physics_constraint_set_cy=function(){return(a._spine_physics_constraint_set_cy=a.asm.spine_physics_constraint_set_cy).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_cy=function(){return(a._spine_physics_constraint_get_cy=a.asm.spine_physics_constraint_get_cy).apply(null,arguments)};a._spine_physics_constraint_set_tx=function(){return(a._spine_physics_constraint_set_tx=a.asm.spine_physics_constraint_set_tx).apply(null,arguments)};a._spine_physics_constraint_get_tx=function(){return(a._spine_physics_constraint_get_tx=a.asm.spine_physics_constraint_get_tx).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_ty=function(){return(a._spine_physics_constraint_set_ty=a.asm.spine_physics_constraint_set_ty).apply(null,arguments)};a._spine_physics_constraint_get_ty=function(){return(a._spine_physics_constraint_get_ty=a.asm.spine_physics_constraint_get_ty).apply(null,arguments)};a._spine_physics_constraint_set_x_offset=function(){return(a._spine_physics_constraint_set_x_offset=a.asm.spine_physics_constraint_set_x_offset).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_x_offset=function(){return(a._spine_physics_constraint_get_x_offset=a.asm.spine_physics_constraint_get_x_offset).apply(null,arguments)};a._spine_physics_constraint_set_x_velocity=function(){return(a._spine_physics_constraint_set_x_velocity=a.asm.spine_physics_constraint_set_x_velocity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_x_velocity=function(){return(a._spine_physics_constraint_get_x_velocity=a.asm.spine_physics_constraint_get_x_velocity).apply(null,arguments)};a._spine_physics_constraint_set_y_offset=function(){return(a._spine_physics_constraint_set_y_offset=a.asm.spine_physics_constraint_set_y_offset).apply(null,arguments)};a._spine_physics_constraint_get_y_offset=function(){return(a._spine_physics_constraint_get_y_offset=a.asm.spine_physics_constraint_get_y_offset).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_y_velocity=function(){return(a._spine_physics_constraint_set_y_velocity=a.asm.spine_physics_constraint_set_y_velocity).apply(null,arguments)};a._spine_physics_constraint_get_y_velocity=function(){return(a._spine_physics_constraint_get_y_velocity=a.asm.spine_physics_constraint_get_y_velocity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_rotate_offset=function(){return(a._spine_physics_constraint_set_rotate_offset=a.asm.spine_physics_constraint_set_rotate_offset).apply(null,arguments)};a._spine_physics_constraint_get_rotate_offset=function(){return(a._spine_physics_constraint_get_rotate_offset=a.asm.spine_physics_constraint_get_rotate_offset).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_rotate_velocity=function(){return(a._spine_physics_constraint_set_rotate_velocity=a.asm.spine_physics_constraint_set_rotate_velocity).apply(null,arguments)};a._spine_physics_constraint_get_rotate_velocity=function(){return(a._spine_physics_constraint_get_rotate_velocity=a.asm.spine_physics_constraint_get_rotate_velocity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_scale_offset=function(){return(a._spine_physics_constraint_set_scale_offset=a.asm.spine_physics_constraint_set_scale_offset).apply(null,arguments)};a._spine_physics_constraint_get_scale_offset=function(){return(a._spine_physics_constraint_get_scale_offset=a.asm.spine_physics_constraint_get_scale_offset).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_scale_velocity=function(){return(a._spine_physics_constraint_set_scale_velocity=a.asm.spine_physics_constraint_set_scale_velocity).apply(null,arguments)};a._spine_physics_constraint_get_scale_velocity=function(){return(a._spine_physics_constraint_get_scale_velocity=a.asm.spine_physics_constraint_get_scale_velocity).apply(null,arguments)};
|
||||
a._spine_physics_constraint_set_active=function(){return(a._spine_physics_constraint_set_active=a.asm.spine_physics_constraint_set_active).apply(null,arguments)};a._spine_physics_constraint_is_active=function(){return(a._spine_physics_constraint_is_active=a.asm.spine_physics_constraint_is_active).apply(null,arguments)};a._spine_physics_constraint_set_remaining=function(){return(a._spine_physics_constraint_set_remaining=a.asm.spine_physics_constraint_set_remaining).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_remaining=function(){return(a._spine_physics_constraint_get_remaining=a.asm.spine_physics_constraint_get_remaining).apply(null,arguments)};a._spine_physics_constraint_set_last_time=function(){return(a._spine_physics_constraint_set_last_time=a.asm.spine_physics_constraint_set_last_time).apply(null,arguments)};
|
||||
a._spine_physics_constraint_get_last_time=function(){return(a._spine_physics_constraint_get_last_time=a.asm.spine_physics_constraint_get_last_time).apply(null,arguments)};a._spine_physics_constraint_reset_fully=function(){return(a._spine_physics_constraint_reset_fully=a.asm.spine_physics_constraint_reset_fully).apply(null,arguments)};a._spine_physics_constraint_update=function(){return(a._spine_physics_constraint_update=a.asm.spine_physics_constraint_update).apply(null,arguments)};
|
||||
a._spine_physics_constraint_translate=function(){return(a._spine_physics_constraint_translate=a.asm.spine_physics_constraint_translate).apply(null,arguments)};a._spine_physics_constraint_rotate=function(){return(a._spine_physics_constraint_rotate=a.asm.spine_physics_constraint_rotate).apply(null,arguments)};a._spine_sequence_apply=function(){return(a._spine_sequence_apply=a.asm.spine_sequence_apply).apply(null,arguments)};
|
||||
a._spine_sequence_get_path=function(){return(a._spine_sequence_get_path=a.asm.spine_sequence_get_path).apply(null,arguments)};a._spine_sequence_get_id=function(){return(a._spine_sequence_get_id=a.asm.spine_sequence_get_id).apply(null,arguments)};a._spine_sequence_set_id=function(){return(a._spine_sequence_set_id=a.asm.spine_sequence_set_id).apply(null,arguments)};a._spine_sequence_get_start=function(){return(a._spine_sequence_get_start=a.asm.spine_sequence_get_start).apply(null,arguments)};
|
||||
a._spine_sequence_set_start=function(){return(a._spine_sequence_set_start=a.asm.spine_sequence_set_start).apply(null,arguments)};a._spine_sequence_get_digits=function(){return(a._spine_sequence_get_digits=a.asm.spine_sequence_get_digits).apply(null,arguments)};a._spine_sequence_set_digits=function(){return(a._spine_sequence_set_digits=a.asm.spine_sequence_set_digits).apply(null,arguments)};
|
||||
a._spine_sequence_get_setup_index=function(){return(a._spine_sequence_get_setup_index=a.asm.spine_sequence_get_setup_index).apply(null,arguments)};a._spine_sequence_set_setup_index=function(){return(a._spine_sequence_set_setup_index=a.asm.spine_sequence_set_setup_index).apply(null,arguments)};a._spine_sequence_get_num_regions=function(){return(a._spine_sequence_get_num_regions=a.asm.spine_sequence_get_num_regions).apply(null,arguments)};
|
||||
a._spine_sequence_get_regions=function(){return(a._spine_sequence_get_regions=a.asm.spine_sequence_get_regions).apply(null,arguments)};a._spine_texture_region_get_texture=function(){return(a._spine_texture_region_get_texture=a.asm.spine_texture_region_get_texture).apply(null,arguments)};a._spine_texture_region_set_texture=function(){return(a._spine_texture_region_set_texture=a.asm.spine_texture_region_set_texture).apply(null,arguments)};
|
||||
a._spine_texture_region_get_u=function(){return(a._spine_texture_region_get_u=a.asm.spine_texture_region_get_u).apply(null,arguments)};a._spine_texture_region_set_u=function(){return(a._spine_texture_region_set_u=a.asm.spine_texture_region_set_u).apply(null,arguments)};a._spine_texture_region_get_v=function(){return(a._spine_texture_region_get_v=a.asm.spine_texture_region_get_v).apply(null,arguments)};
|
||||
a._spine_texture_region_set_v=function(){return(a._spine_texture_region_set_v=a.asm.spine_texture_region_set_v).apply(null,arguments)};a._spine_texture_region_get_u2=function(){return(a._spine_texture_region_get_u2=a.asm.spine_texture_region_get_u2).apply(null,arguments)};a._spine_texture_region_set_u2=function(){return(a._spine_texture_region_set_u2=a.asm.spine_texture_region_set_u2).apply(null,arguments)};
|
||||
a._spine_texture_region_get_v2=function(){return(a._spine_texture_region_get_v2=a.asm.spine_texture_region_get_v2).apply(null,arguments)};a._spine_texture_region_set_v2=function(){return(a._spine_texture_region_set_v2=a.asm.spine_texture_region_set_v2).apply(null,arguments)};a._spine_texture_region_get_degrees=function(){return(a._spine_texture_region_get_degrees=a.asm.spine_texture_region_get_degrees).apply(null,arguments)};
|
||||
a._spine_texture_region_set_degrees=function(){return(a._spine_texture_region_set_degrees=a.asm.spine_texture_region_set_degrees).apply(null,arguments)};a._spine_texture_region_get_offset_x=function(){return(a._spine_texture_region_get_offset_x=a.asm.spine_texture_region_get_offset_x).apply(null,arguments)};a._spine_texture_region_set_offset_x=function(){return(a._spine_texture_region_set_offset_x=a.asm.spine_texture_region_set_offset_x).apply(null,arguments)};
|
||||
a._spine_texture_region_get_offset_y=function(){return(a._spine_texture_region_get_offset_y=a.asm.spine_texture_region_get_offset_y).apply(null,arguments)};a._spine_texture_region_set_offset_y=function(){return(a._spine_texture_region_set_offset_y=a.asm.spine_texture_region_set_offset_y).apply(null,arguments)};a._spine_texture_region_get_width=function(){return(a._spine_texture_region_get_width=a.asm.spine_texture_region_get_width).apply(null,arguments)};
|
||||
a._spine_texture_region_set_width=function(){return(a._spine_texture_region_set_width=a.asm.spine_texture_region_set_width).apply(null,arguments)};a._spine_texture_region_get_height=function(){return(a._spine_texture_region_get_height=a.asm.spine_texture_region_get_height).apply(null,arguments)};a._spine_texture_region_set_height=function(){return(a._spine_texture_region_set_height=a.asm.spine_texture_region_set_height).apply(null,arguments)};
|
||||
a._spine_texture_region_get_original_width=function(){return(a._spine_texture_region_get_original_width=a.asm.spine_texture_region_get_original_width).apply(null,arguments)};a._spine_texture_region_set_original_width=function(){return(a._spine_texture_region_set_original_width=a.asm.spine_texture_region_set_original_width).apply(null,arguments)};
|
||||
a._spine_texture_region_get_original_height=function(){return(a._spine_texture_region_get_original_height=a.asm.spine_texture_region_get_original_height).apply(null,arguments)};a._spine_texture_region_set_original_height=function(){return(a._spine_texture_region_set_original_height=a.asm.spine_texture_region_set_original_height).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.malloc).apply(null,arguments)};
|
||||
a.___errno_location=function(){return(a.___errno_location=a.asm.__errno_location).apply(null,arguments)};a.stackSave=function(){return(a.stackSave=a.asm.stackSave).apply(null,arguments)};a.stackRestore=function(){return(a.stackRestore=a.asm.stackRestore).apply(null,arguments)};a.stackAlloc=function(){return(a.stackAlloc=a.asm.stackAlloc).apply(null,arguments)};a.dynCall_jiji=function(){return(a.dynCall_jiji=a.asm.dynCall_jiji).apply(null,arguments)};var Z;R=function sa(){Z||ta();Z||(R=sa)};
|
||||
function ta(){function b(){if(!Z&&(Z=!0,a.calledRun=!0,!B)){V(ca);h(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;){var c=a.postRun.shift();da.unshift(c)}V(da)}}if(!(0<O)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)ea();V(ba);0<O||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);b()},1)):b())}}
|
||||
if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();ta();
|
||||
|
||||
|
||||
return libspine_flutter.ready
|
||||
return moduleRtn;
|
||||
}
|
||||
);
|
||||
})();
|
||||
if (typeof exports === 'object' && typeof module === 'object')
|
||||
if (typeof exports === 'object' && typeof module === 'object') {
|
||||
module.exports = libspine_flutter;
|
||||
else if (typeof define === 'function' && define['amd'])
|
||||
define([], function() { return libspine_flutter; });
|
||||
else if (typeof exports === 'object')
|
||||
exports["libspine_flutter"] = libspine_flutter;
|
||||
// This default export looks redundant, but it allows TS to import this
|
||||
// commonjs style module.
|
||||
module.exports.default = libspine_flutter;
|
||||
} else if (typeof define === 'function' && define['amd'])
|
||||
define([], () => libspine_flutter);
|
||||
|
||||
Binary file not shown.
@ -94,7 +94,7 @@ class _RawImageKey {
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return hashValues(w, h, format, dataHash.hashCode);
|
||||
return Object.hash(w, h, format, dataHash.hashCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
name: spine_flutter
|
||||
description: The official Spine Flutter Runtime to load, display and interact with Spine animations.
|
||||
version: 4.2.32
|
||||
version: 4.2.35
|
||||
homepage: https://esotericsoftware.com
|
||||
repository: https://github.com/esotericsoftware/spine-runtimes
|
||||
issue_tracker: https://github.com/esotericsoftware/spine-runtimes/issues
|
||||
@ -14,7 +14,7 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
ffi: ^2.1.0
|
||||
web_ffi_fork: ^0.7.4
|
||||
web_ffi_fork: ^0.7.5
|
||||
inject_js: ^2.0.0
|
||||
js: ^0.6.5
|
||||
meta: ^1.10.0
|
||||
|
||||
@ -19,7 +19,7 @@ set(GLFW_INSTALL OFF CACHE BOOL " " FORCE)
|
||||
FetchContent_Declare(
|
||||
glbinding
|
||||
GIT_REPOSITORY https://github.com/cginternals/glbinding.git
|
||||
GIT_TAG v3.3.0
|
||||
GIT_TAG v3.4.0
|
||||
GIT_SHALLOW 1
|
||||
)
|
||||
FetchContent_MakeAvailable(glbinding)
|
||||
@ -43,7 +43,7 @@ add_subdirectory(${CMAKE_SOURCE_DIR}/../spine-cpp ${CMAKE_BINARY_DIR}/spine-cpp-
|
||||
# spine-glfw library
|
||||
add_library(spine-glfw STATIC src/spine-glfw.cpp src/spine-glfw.h src/stb_image.h)
|
||||
target_link_libraries(spine-glfw PRIVATE glbinding::glbinding)
|
||||
target_link_libraries(spine-glfw LINK_PUBLIC spine-cpp)
|
||||
target_link_libraries(spine-glfw LINK_PUBLIC spine-cpp-lite)
|
||||
|
||||
# Example
|
||||
add_executable(spine-glfw-example example/main.cpp)
|
||||
@ -53,7 +53,16 @@ target_link_libraries(spine-glfw-example LINK_PUBLIC spine-glfw)
|
||||
target_link_libraries(spine-glfw-example PRIVATE glbinding::glbinding)
|
||||
set_property(TARGET spine-glfw-example PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
||||
|
||||
# spine-cpp-lite Example
|
||||
add_executable(spine-glfw-example-cpp-lite example/main-cpp-lite.cpp)
|
||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE glfw)
|
||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE OpenGL::GL)
|
||||
target_link_libraries(spine-glfw-example-cpp-lite LINK_PUBLIC spine-glfw)
|
||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE glbinding::glbinding)
|
||||
set_property(TARGET spine-glfw-example-cpp-lite PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
||||
|
||||
|
||||
# copy data to build directory
|
||||
add_custom_command(TARGET spine-glfw-example PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-glfw-example>/data)
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-glfw-example>/data)
|
||||
|
||||
19
spine-glfw/README.md
Normal file
19
spine-glfw/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# spine-glfw
|
||||
|
||||
The spine-glfw runtime provides basic functionality to load and manipulate [spine](http://esotericsoftware.com) skeletal animation data using C or C++ and render them via [GLFW](https://www.glfw.org/) and [glbinding](https://github.com/cginternals/glbinding).
|
||||
|
||||
## Licensing
|
||||
|
||||
You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge.
|
||||
|
||||
You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library.
|
||||
|
||||
In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license.
|
||||
|
||||
For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2).
|
||||
|
||||
## Spine version
|
||||
|
||||
spine-cpp works with data exported from spine 4.2.xx.
|
||||
|
||||
spine-cpp supports all spine features, except two color tinting.
|
||||
128
spine-glfw/example/main-cpp-lite.cpp
Normal file
128
spine-glfw/example/main-cpp-lite.cpp
Normal file
@ -0,0 +1,128 @@
|
||||
#include <glbinding/glbinding.h>
|
||||
#include <glbinding/gl/gl.h>
|
||||
#define GLFW_INCLUDE_NONE
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <iostream>
|
||||
#include <spine-glfw.h>
|
||||
|
||||
using namespace spine;
|
||||
|
||||
int width = 800, height = 600;
|
||||
|
||||
GLFWwindow *init_glfw() {
|
||||
if (!glfwInit()) {
|
||||
std::cerr << "Failed to initialize GLFW" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
GLFWwindow *window = glfwCreateWindow(width, height, "spine-glfw", NULL, NULL);
|
||||
if (!window) {
|
||||
std::cerr << "Failed to create GLFW window" << std::endl;
|
||||
glfwTerminate();
|
||||
return nullptr;
|
||||
}
|
||||
glfwMakeContextCurrent(window);
|
||||
glbinding::initialize(glfwGetProcAddress);
|
||||
return window;
|
||||
}
|
||||
|
||||
uint8_t *read_file(const char *path, int *length) {
|
||||
FILE *file = fopen(path, "rb");
|
||||
if (!file) return 0;
|
||||
|
||||
fseek(file, 0, SEEK_END);
|
||||
*length = (int) ftell(file);
|
||||
fseek(file, 0, SEEK_SET);
|
||||
|
||||
uint8_t *data = (uint8_t *) malloc(*length);
|
||||
fread(data, 1, *length, file);
|
||||
fclose(file);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void *load_texture(const char *path) {
|
||||
return (void *) (uintptr_t) texture_load(path);
|
||||
}
|
||||
|
||||
void unload_texture(void *texture) {
|
||||
texture_dispose((texture_t) (uintptr_t) texture);
|
||||
}
|
||||
|
||||
int main() {
|
||||
// Initialize GLFW and glbinding
|
||||
GLFWwindow *window = init_glfw();
|
||||
if (!window) return -1;
|
||||
|
||||
// We use a y-down coordinate system, see renderer_set_viewport_size()
|
||||
Bone::setYDown(true);
|
||||
|
||||
// Load the atlas and the skeleton data
|
||||
int atlas_length = 0;
|
||||
uint8_t *atlas_bytes = read_file("data/spineboy-pma.atlas", &atlas_length);
|
||||
spine_atlas atlas = spine_atlas_load_callback((utf8 *) atlas_bytes, "data/", load_texture, unload_texture);
|
||||
int skeleton_length = 0;
|
||||
uint8_t *skeleton_bytes = read_file("data/spineboy-pro.skel", &skeleton_length);
|
||||
spine_skeleton_data_result result = spine_skeleton_data_load_binary(atlas, skeleton_bytes, skeleton_length);
|
||||
spine_skeleton_data skeleton_data = spine_skeleton_data_result_get_data(result);
|
||||
|
||||
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
||||
// the screen and scale it to make it smaller.
|
||||
spine_skeleton_drawable drawable = spine_skeleton_drawable_create(skeleton_data);
|
||||
spine_skeleton skeleton = spine_skeleton_drawable_get_skeleton(drawable);
|
||||
spine_skeleton_set_position(skeleton, width / 2, height - 100);
|
||||
spine_skeleton_set_scale(skeleton, 0.3f, 0.3f);
|
||||
|
||||
// Create an AnimationState to drive animations on the skeleton. Set the "portal" animation
|
||||
// on track with index 0.
|
||||
spine_animation_state animation_state = spine_skeleton_drawable_get_animation_state(drawable);
|
||||
spine_animation_state_data animation_state_data = spine_animation_state_get_data(animation_state);
|
||||
spine_animation_state_data_set_default_mix(animation_state_data, 0.2f);
|
||||
spine_animation_state_set_animation_by_name(animation_state, 0, "portal", true);
|
||||
spine_animation_state_add_animation_by_name(animation_state, 0, "run", true, 0);
|
||||
|
||||
// Create the renderer and set the viewport size to match the window size. This sets up a
|
||||
// pixel perfect orthogonal projection for 2D rendering.
|
||||
renderer_t *renderer = renderer_create();
|
||||
renderer_set_viewport_size(renderer, width, height);
|
||||
|
||||
// Rendering loop
|
||||
double lastTime = glfwGetTime();
|
||||
while (!glfwWindowShouldClose(window)) {
|
||||
// Calculate the delta time in seconds
|
||||
double currTime = glfwGetTime();
|
||||
float delta = currTime - lastTime;
|
||||
lastTime = currTime;
|
||||
|
||||
// Update and apply the animation state to the skeleton
|
||||
spine_animation_state_update(animation_state, delta);
|
||||
spine_animation_state_apply(animation_state, skeleton);
|
||||
|
||||
// Update the skeleton time (used for physics)
|
||||
spine_skeleton_update(skeleton, delta);
|
||||
|
||||
// Calculate the new pose
|
||||
spine_skeleton_update_world_transform(skeleton, SPINE_PHYSICS_UPDATE);
|
||||
|
||||
// Clear the screen
|
||||
gl::glClear(gl::GL_COLOR_BUFFER_BIT);
|
||||
|
||||
// Render the skeleton in its current pose
|
||||
renderer_draw_lite(renderer, skeleton, true);
|
||||
|
||||
// Present the rendering results and poll for events
|
||||
glfwSwapBuffers(window);
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
// Dispose everything
|
||||
renderer_dispose(renderer);
|
||||
// delete skeletonData;
|
||||
delete atlas;
|
||||
|
||||
// Kill the window and GLFW
|
||||
glfwTerminate();
|
||||
return 0;
|
||||
}
|
||||
@ -39,8 +39,8 @@ int main() {
|
||||
// Load the atlas and the skeleton data
|
||||
GlTextureLoader textureLoader;
|
||||
Atlas *atlas = new Atlas("data/spineboy-pma.atlas", &textureLoader);
|
||||
SkeletonJson json(atlas);
|
||||
SkeletonData *skeletonData = json.readSkeletonDataFile("data/spineboy-pro.json");
|
||||
SkeletonBinary binary(atlas);
|
||||
SkeletonData *skeletonData = binary.readSkeletonDataFile("data/spineboy-pro.skel");
|
||||
|
||||
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
||||
// the screen and scale it to make it smaller.
|
||||
@ -52,8 +52,10 @@ int main() {
|
||||
// Create an AnimationState to drive animations on the skeleton. Set the "portal" animation
|
||||
// on track with index 0.
|
||||
AnimationStateData animationStateData(skeletonData);
|
||||
animationStateData.setDefaultMix(0.2f);
|
||||
AnimationState animationState(&animationStateData);
|
||||
animationState.setAnimation(0, "portal", true);
|
||||
animationState.addAnimation(0, "run", true, 0);
|
||||
|
||||
// Create the renderer and set the viewport size to match the window size. This sets up a
|
||||
// pixel perfect orthogonal projection for 2D rendering.
|
||||
|
||||
@ -8,9 +8,9 @@ using namespace gl;
|
||||
using namespace spine;
|
||||
|
||||
/// Set the default extension used for memory allocations and file I/O
|
||||
SpineExtension *spine::getDefaultExtension() {
|
||||
return new spine::DefaultSpineExtension();
|
||||
}
|
||||
// SpineExtension *spine::getDefaultExtension() {
|
||||
// return new spine::DefaultSpineExtension();
|
||||
// }
|
||||
|
||||
/// A blend mode, see https://en.esotericsoftware.com/spine-slots#Blending
|
||||
/// Encodes the OpenGL source and destination blend function for both premultiplied and
|
||||
@ -285,6 +285,10 @@ void renderer_set_viewport_size(renderer_t *renderer, int width, int height) {
|
||||
shader_set_matrix4(renderer->shader, "uMatrix", matrix);
|
||||
}
|
||||
|
||||
void renderer_draw_lite(renderer_t *renderer, spine_skeleton skeleton, bool premultipliedAlpha) {
|
||||
renderer_draw(renderer, (Skeleton *) skeleton, premultipliedAlpha);
|
||||
}
|
||||
|
||||
void renderer_draw(renderer_t *renderer, Skeleton *skeleton, bool premultipliedAlpha) {
|
||||
shader_use(renderer->shader);
|
||||
shader_set_int(renderer->shader, "uTexture", 0);
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <spine/spine.h>
|
||||
#include <spine-cpp-lite.h>
|
||||
|
||||
/// A vertex of a mesh generated from a Spine skeleton
|
||||
struct vertex_t {
|
||||
@ -86,5 +87,9 @@ void renderer_set_viewport_size(renderer_t *renderer, int width, int height);
|
||||
/// was constructed.
|
||||
void renderer_draw(renderer_t *renderer, spine::Skeleton *skeleton, bool premultipliedAlpha);
|
||||
|
||||
/// Draws the given skeleton. The atlas must be the atlas from which the drawable
|
||||
/// was constructed.
|
||||
void renderer_draw_lite(renderer_t *renderer, spine_skeleton skeleton, bool premultipliedAlpha);
|
||||
|
||||
/// Disposes the renderer
|
||||
void renderer_dispose(renderer_t *renderer);
|
||||
BIN
spine-godot/.idea/.DS_Store
generated
vendored
BIN
spine-godot/.idea/.DS_Store
generated
vendored
Binary file not shown.
8
spine-godot/.idea/.gitignore
generated
vendored
8
spine-godot/.idea/.gitignore
generated
vendored
@ -1,8 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
12
spine-godot/.idea/codeStyles/Project.xml
generated
12
spine-godot/.idea/codeStyles/Project.xml
generated
@ -1,12 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<clangFormatSettings>
|
||||
<option name="ENABLED" value="true" />
|
||||
</clangFormatSettings>
|
||||
<codeStyleSettings language="ObjectiveC">
|
||||
<indentOptions>
|
||||
<option name="USE_TAB_CHARACTER" value="true" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
5
spine-godot/.idea/codeStyles/codeStyleConfig.xml
generated
5
spine-godot/.idea/codeStyles/codeStyleConfig.xml
generated
@ -1,5 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
||||
25
spine-godot/.idea/customTargets.xml
generated
25
spine-godot/.idea/customTargets.xml
generated
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CLionExternalBuildManager">
|
||||
<target id="649fccdb-6ca9-44f9-b3ad-0a96fbf1aa95" name="scons debug macOS/Linux" defaultType="TOOL">
|
||||
<configuration id="ec887365-2a57-4577-a74a-2eef17526450" name="scons debug macOS/Linux">
|
||||
<build type="TOOL">
|
||||
<tool actionId="Tool_External Tools_scons build macOS/Linux" />
|
||||
</build>
|
||||
<clean type="TOOL">
|
||||
<tool actionId="Tool_External Tools_scons clean macOS/Linux" />
|
||||
</clean>
|
||||
</configuration>
|
||||
</target>
|
||||
<target id="5f223991-e6a3-42b3-8dfc-60e7778315cc" name="scons debug Windows" defaultType="TOOL">
|
||||
<configuration id="5c8a6190-ee50-4706-8281-c53f9f31f52b" name="scons debug Windows">
|
||||
<build type="TOOL">
|
||||
<tool actionId="Tool_External Tools_scons build Windows" />
|
||||
</build>
|
||||
<clean type="TOOL">
|
||||
<tool actionId="Tool_External Tools_scons clean Windows" />
|
||||
</clean>
|
||||
</configuration>
|
||||
</target>
|
||||
</component>
|
||||
</project>
|
||||
@ -1,6 +0,0 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
19
spine-godot/.idea/misc.xml
generated
19
spine-godot/.idea/misc.xml
generated
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompDBSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<CompDBProjectSettings>
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
</CompDBProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="CompDBWorkspace" PROJECT_DIR="$PROJECT_DIR$">
|
||||
<contentRoot DIR="$PROJECT_DIR$/.." />
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
</project>
|
||||
30
spine-godot/.idea/tools/External Tools.xml
generated
30
spine-godot/.idea/tools/External Tools.xml
generated
@ -1,30 +0,0 @@
|
||||
<toolSet name="External Tools">
|
||||
<tool name="scons build macOS/Linux" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||
<exec>
|
||||
<option name="COMMAND" value="scons" />
|
||||
<option name="PARAMETERS" value="target=debug use_asan=true custom_modules="../spine_godot" -j8" />
|
||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||
</exec>
|
||||
</tool>
|
||||
<tool name="scons clean macOS/Linux" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||
<exec>
|
||||
<option name="COMMAND" value="scons" />
|
||||
<option name="PARAMETERS" value="-c" />
|
||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||
</exec>
|
||||
</tool>
|
||||
<tool name="scons build Windows" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||
<exec>
|
||||
<option name="COMMAND" value="scons.cmd" />
|
||||
<option name="PARAMETERS" value="target=debug custom_modules="../spine_godot" -j8" />
|
||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||
</exec>
|
||||
</tool>
|
||||
<tool name="scons clean Windows" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||
<exec>
|
||||
<option name="COMMAND" value="scons.cmd" />
|
||||
<option name="PARAMETERS" value="-c" />
|
||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||
</exec>
|
||||
</tool>
|
||||
</toolSet>
|
||||
6
spine-godot/.idea/vcs.xml
generated
6
spine-godot/.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
147
spine-godot/.idea/workspace.xml
generated
147
spine-godot/.idea/workspace.xml
generated
@ -1,147 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
|
||||
<generated />
|
||||
</component>
|
||||
<component name="CMakeSettings">
|
||||
<configurations>
|
||||
<configuration PROFILE_NAME="Debug" ENABLED="true" CONFIG_NAME="Debug" />
|
||||
</configurations>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="3a369930-123f-48c2-867a-686d5997891d" name="Default Changelist" comment="" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="CompDBLocalSettings">
|
||||
<option name="availableProjects">
|
||||
<map>
|
||||
<entry>
|
||||
<key>
|
||||
<ExternalProjectPojo>
|
||||
<option name="name" value="godot" />
|
||||
<option name="path" value="$PROJECT_DIR$" />
|
||||
</ExternalProjectPojo>
|
||||
</key>
|
||||
<value>
|
||||
<list>
|
||||
<ExternalProjectPojo>
|
||||
<option name="name" value="godot" />
|
||||
<option name="path" value="$PROJECT_DIR$" />
|
||||
</ExternalProjectPojo>
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="projectSyncType">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="RE_IMPORT" />
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ExternalProjectsData">
|
||||
<projectState path="$PROJECT_DIR$">
|
||||
<ProjectState />
|
||||
</projectState>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="GitSEFilterConfiguration">
|
||||
<file-type-list>
|
||||
<filtered-out-file-type name="LOCAL_BRANCH" />
|
||||
<filtered-out-file-type name="REMOTE_BRANCH" />
|
||||
<filtered-out-file-type name="TAG" />
|
||||
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
|
||||
</file-type-list>
|
||||
</component>
|
||||
<component name="MacroExpansionManager">
|
||||
<option name="directoryName" value="c2b84taq" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="ProjectId" id="1yu64nUS0zjllOk9AGzuegMkIMx" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="RunOnceActivity.cidr.known.project.marker" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="cf.advertisement.text.overridden" value="true" />
|
||||
<property name="cf.first.check.clang-format" value="false" />
|
||||
<property name="cidr.known.project.marker" value="true" />
|
||||
<property name="node.js.detected.package.eslint" value="true" />
|
||||
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
||||
<property name="settings.editor.selected.configurable" value="CLionExternalConfigurable" />
|
||||
</component>
|
||||
<component name="RunManager" selected="Custom Build Application.godot debug Windows">
|
||||
<configuration default="true" type="GradleAppRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.cpp.gradle.execution.GradleNativeBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="godot debug Linux" type="CLionExternalRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--editor --path $ProjectFileDir$/../example" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="godot" TARGET_NAME="scons debug macOS/Linux" CONFIG_NAME="scons debug macOS/Linux" RUN_PATH="$PROJECT_DIR$/bin/godot.linux.tools.64s">
|
||||
<method v="2">
|
||||
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="godot debug Windows" type="CLionExternalRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--editor --path $ProjectFileDir$/../example" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="godot" TARGET_NAME="scons debug Windows" CONFIG_NAME="scons debug Windows" RUN_PATH="$PROJECT_DIR$/bin/godot.windows.tools.64.exe">
|
||||
<method v="2">
|
||||
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="godot debug macOS" type="CLionExternalRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--editor --path $ProjectFileDir$/../example" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="godot" TARGET_NAME="scons debug macOS/Linux" CONFIG_NAME="scons debug macOS/Linux" RUN_PATH="$PROJECT_DIR$/bin/godot.osx.tools.64s">
|
||||
<method v="2">
|
||||
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Custom Build Application.godot debug macOS" />
|
||||
<item itemvalue="Custom Build Application.godot debug Linux" />
|
||||
<item itemvalue="Custom Build Application.godot debug Windows" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="3a369930-123f-48c2-867a-686d5997891d" name="Default Changelist" comment="" />
|
||||
<created>1633088939732</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1633088939732</updated>
|
||||
<workItem from="1633088942825" duration="326000" />
|
||||
<workItem from="1649519095761" duration="518000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
|
||||
<url>file://$PROJECT_DIR$/../spine_godot/register_types.cpp</url>
|
||||
<line>76</line>
|
||||
<option name="timeStamp" value="1" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
</project>
|
||||
34
spine-godot/.vscode/launch.json
vendored
34
spine-godot/.vscode/launch.json
vendored
@ -29,6 +29,40 @@
|
||||
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppvsdbg",
|
||||
"request": "launch",
|
||||
"name": "debug editor extension",
|
||||
"program": "godot/bin/godot.windows.editor.dev.x86_64.exe",
|
||||
"args": ["-e", "--path", "example-v4-extension"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"preLaunchTask": "build-extension",
|
||||
"linux": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.linux.editor.dev.x86_64"
|
||||
},
|
||||
"osx": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppvsdbg",
|
||||
"request": "launch",
|
||||
"name": "debug scene extension",
|
||||
"program": "godot/bin/godot.windows.editor.dev.x86_64.exe",
|
||||
"args": ["--path", "example-v4-extension", "examples/13-load-from-disk/load-from-disk.tscn"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"preLaunchTask": "build-extension",
|
||||
"linux": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.linux.editor.dev.x86_64"
|
||||
},
|
||||
"osx": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppvsdbg",
|
||||
"request": "launch",
|
||||
|
||||
17
spine-godot/.vscode/settings.json
vendored
17
spine-godot/.vscode/settings.json
vendored
@ -1,5 +1,18 @@
|
||||
{
|
||||
"cmake.configureOnOpen": false,
|
||||
"C_Cpp.intelliSenseEngine": "disabled",
|
||||
"dotnet.defaultSolution": "disable"
|
||||
"C_Cpp.intelliSenseEngine": "default",
|
||||
"C_Cpp.default.browse.path": [
|
||||
"${workspaceFolder}/godot-cpp/gen",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"C_Cpp.default.defines": ["TOOLS_ENABLED", "SPINE_GODOT_EXTENSION"],
|
||||
"dotnet.defaultSolution": "disable",
|
||||
"files.associations": {
|
||||
"*.inc": "cpp",
|
||||
"__split_buffer": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"string": "cpp",
|
||||
"vector": "cpp"
|
||||
}
|
||||
}
|
||||
|
||||
24
spine-godot/.vscode/tasks.json
vendored
24
spine-godot/.vscode/tasks.json
vendored
@ -30,6 +30,30 @@
|
||||
]
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "build-extension",
|
||||
"group": "build",
|
||||
"type": "shell",
|
||||
"command": "scons",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"args": [
|
||||
"-j",
|
||||
"16",
|
||||
"target=editor",
|
||||
"dev_build=yes",
|
||||
],
|
||||
"problemMatcher": "$msCompile",
|
||||
"windows": {
|
||||
"args": [
|
||||
"-j",
|
||||
"16",
|
||||
"target=editor",
|
||||
"dev_build=yes",
|
||||
]
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "build-v3",
|
||||
"group": "build",
|
||||
|
||||
24
spine-godot/Info.ios.plist
Normal file
24
spine-godot/Info.ios.plist
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${BUNDLE_LIBRARY}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${BUNDLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>${MIN_IOS_VERSION}</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
</dict>
|
||||
</plist>
|
||||
26
spine-godot/Info.macos.plist
Normal file
26
spine-godot/Info.macos.plist
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${BUNDLE_LIBRARY}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${BUNDLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MIN_MACOS_VERSION}</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
166
spine-godot/SConstruct
Normal file
166
spine-godot/SConstruct
Normal file
@ -0,0 +1,166 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
from methods import print_error
|
||||
|
||||
|
||||
def normalize_path(val, env):
|
||||
return val if os.path.isabs(val) else os.path.join(env.Dir("#").abspath, val)
|
||||
|
||||
|
||||
def validate_parent_dir(key, val, env):
|
||||
if not os.path.isdir(normalize_path(os.path.dirname(val), env)):
|
||||
raise UserError("'%s' is not a directory: %s" % (key, os.path.dirname(val)))
|
||||
|
||||
|
||||
libname = "spine_godot"
|
||||
projectdir = "example-v4-extension"
|
||||
|
||||
localEnv = Environment(tools=["default"], PLATFORM="")
|
||||
|
||||
customs = ["custom.py"]
|
||||
customs = [os.path.abspath(path) for path in customs]
|
||||
|
||||
opts = Variables(customs, ARGUMENTS)
|
||||
opts.Add(
|
||||
BoolVariable(
|
||||
key="compiledb",
|
||||
help="Generate compilation DB (`compile_commands.json`) for external tools",
|
||||
default=localEnv.get("compiledb", False),
|
||||
)
|
||||
)
|
||||
opts.Add(
|
||||
PathVariable(
|
||||
key="compiledb_file",
|
||||
help="Path to a custom `compile_commands.json` file",
|
||||
default=localEnv.get("compiledb_file", "compile_commands.json"),
|
||||
validator=validate_parent_dir,
|
||||
)
|
||||
)
|
||||
opts.Update(localEnv)
|
||||
|
||||
Help(opts.GenerateHelpText(localEnv))
|
||||
|
||||
env = localEnv.Clone()
|
||||
env["compiledb"] = False
|
||||
|
||||
env.Tool("compilation_db")
|
||||
compilation_db = env.CompilationDatabase(
|
||||
normalize_path(localEnv["compiledb_file"], localEnv)
|
||||
)
|
||||
env.Alias("compiledb", compilation_db)
|
||||
|
||||
submodule_initialized = False
|
||||
dir_name = 'godot-cpp'
|
||||
if os.path.isdir(dir_name):
|
||||
if os.listdir(dir_name):
|
||||
submodule_initialized = True
|
||||
|
||||
if not submodule_initialized:
|
||||
print_error("""godot-cpp is not available within this folder, as Git submodules haven't been initialized.
|
||||
Run the following command to download godot-cpp:
|
||||
|
||||
git submodule update --init --recursive""")
|
||||
sys.exit(1)
|
||||
|
||||
env = SConscript("godot-cpp/SConstruct", {"env": env, "customs": customs})
|
||||
|
||||
env.Append(CPPDEFINES=["SPINE_GODOT_EXTENSION"])
|
||||
env.Append(CPPPATH=["spine_godot", "spine_godot/spine-cpp/include"])
|
||||
|
||||
# sources = Glob("spine_godot/*.cpp") + Glob("spine_godot/spine-cpp/src/spine/*.cpp")
|
||||
sources = Glob("spine_godot/spine-cpp/src/spine/*.cpp")
|
||||
sources.append("spine_godot/GodotSpineExtension.cpp")
|
||||
sources.append("spine_godot/SpineAnimation.cpp")
|
||||
sources.append("spine_godot/SpineAnimationState.cpp")
|
||||
sources.append("spine_godot/SpineAnimationTrack.cpp")
|
||||
sources.append("spine_godot/SpineAtlasResource.cpp")
|
||||
sources.append("spine_godot/SpineAttachment.cpp")
|
||||
sources.append("spine_godot/SpineBone.cpp")
|
||||
sources.append("spine_godot/SpineBoneData.cpp")
|
||||
sources.append("spine_godot/SpineBoneNode.cpp")
|
||||
sources.append("spine_godot/SpineConstant.cpp")
|
||||
sources.append("spine_godot/SpineConstraintData.cpp")
|
||||
sources.append("spine_godot/SpineEditorPlugin.cpp")
|
||||
sources.append("spine_godot/SpineEvent.cpp")
|
||||
sources.append("spine_godot/SpineEventData.cpp")
|
||||
sources.append("spine_godot/SpineIkConstraint.cpp")
|
||||
sources.append("spine_godot/SpineIkConstraintData.cpp")
|
||||
sources.append("spine_godot/SpinePathConstraint.cpp")
|
||||
sources.append("spine_godot/SpinePathConstraintData.cpp")
|
||||
sources.append("spine_godot/SpinePhysicsConstraint.cpp")
|
||||
sources.append("spine_godot/SpinePhysicsConstraintData.cpp")
|
||||
sources.append("spine_godot/SpineSkeleton.cpp")
|
||||
sources.append("spine_godot/SpineSkeletonDataResource.cpp")
|
||||
sources.append("spine_godot/SpineSkeletonFileResource.cpp")
|
||||
sources.append("spine_godot/SpineSkin.cpp")
|
||||
sources.append("spine_godot/SpineSlot.cpp")
|
||||
sources.append("spine_godot/SpineSlotData.cpp")
|
||||
sources.append("spine_godot/SpineSlotNode.cpp")
|
||||
sources.append("spine_godot/SpineSprite.cpp")
|
||||
sources.append("spine_godot/SpineTimeline.cpp")
|
||||
sources.append("spine_godot/SpineTrackEntry.cpp")
|
||||
sources.append("spine_godot/SpineTransformConstraint.cpp")
|
||||
sources.append("spine_godot/SpineTransformConstraintData.cpp")
|
||||
sources.append("spine_godot/register_types.cpp")
|
||||
|
||||
if env["target"] in ["editor", "template_debug"]:
|
||||
try:
|
||||
doc_data = env.GodotCPPDocData("src/gen/doc_data.gen.cpp", source=Glob("spine_godot/docs/*.xml"))
|
||||
sources.append(doc_data)
|
||||
except AttributeError:
|
||||
print("Not including class reference as we're targeting a pre-4.3 baseline.")
|
||||
|
||||
file = "lib{}{}{}".format(libname, env["suffix"], env["SHLIBSUFFIX"])
|
||||
filepath = ""
|
||||
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
filepath = "lib{}.{}.{}.framework/".format(libname, env["platform"], env["target"])
|
||||
file = "lib{}.{}.{}".format(libname, env["platform"], env["target"])
|
||||
env.Append(LINKFLAGS=["-Wl,-install_name,@rpath/{}{}".format(filepath, file)])
|
||||
|
||||
libraryfile = "bin/{}/{}{}".format(env["platform"], filepath, file)
|
||||
library = env.SharedLibrary(
|
||||
libraryfile,
|
||||
source=sources,
|
||||
)
|
||||
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
plist_subst = {
|
||||
"${BUNDLE_LIBRARY}": file,
|
||||
"${BUNDLE_NAME}": "spine-godot",
|
||||
"${BUNDLE_IDENTIFIER}": "com.esotericsoftware.spine.spine-godot",
|
||||
"${BUNDLE_VERSION}": subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode('utf-8').strip().split('-')[0] + '.0',
|
||||
"${MIN_MACOS_VERSION}": "10.12",
|
||||
"${MIN_IOS_VERSION}": "12.0"
|
||||
}
|
||||
|
||||
if env["platform"] == "macos":
|
||||
plist_file = "bin/macos/{}Resources/Info.plist".format(filepath)
|
||||
plist = env.Substfile(
|
||||
target=plist_file,
|
||||
source="Info.macos.plist",
|
||||
SUBST_DICT=plist_subst
|
||||
)
|
||||
elif env["platform"] == "ios":
|
||||
plist_file = "bin/ios/{}Info.plist".format(filepath)
|
||||
plist = env.Substfile(
|
||||
target=plist_file,
|
||||
source="Info.ios.plist",
|
||||
SUBST_DICT=plist_subst
|
||||
)
|
||||
|
||||
env.Depends(library, plist)
|
||||
|
||||
copy = env.InstallAs("{}/{}".format(projectdir, libraryfile), library)
|
||||
default_args = [library, copy]
|
||||
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
copy_plist = env.InstallAs("{}/{}".format(projectdir, plist_file), plist_file)
|
||||
default_args.append(copy_plist)
|
||||
|
||||
if localEnv.get("compiledb", False):
|
||||
default_args += [compilation_db]
|
||||
Default(*default_args)
|
||||
76
spine-godot/build/4.3-stable/tvgLock.h
Normal file
76
spine-godot/build/4.3-stable/tvgLock.h
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2024 the ThorVG project. All rights reserved.
|
||||
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _TVG_LOCK_H_
|
||||
#define _TVG_LOCK_H_
|
||||
|
||||
#ifdef THORVG_THREAD_SUPPORT
|
||||
|
||||
#include <mutex>
|
||||
#include "tvgTaskScheduler.h"
|
||||
|
||||
namespace tvg {
|
||||
|
||||
struct Key
|
||||
{
|
||||
std::mutex mtx;
|
||||
};
|
||||
|
||||
struct ScopedLock
|
||||
{
|
||||
Key* key = nullptr;
|
||||
|
||||
ScopedLock(Key& k)
|
||||
{
|
||||
if (TaskScheduler::threads() > 0) {
|
||||
k.mtx.lock();
|
||||
key = &k;
|
||||
}
|
||||
}
|
||||
|
||||
~ScopedLock()
|
||||
{
|
||||
if (TaskScheduler::threads() > 0) {
|
||||
key->mtx.unlock();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#else //THORVG_THREAD_SUPPORT
|
||||
|
||||
namespace tvg {
|
||||
|
||||
struct Key {};
|
||||
|
||||
struct ScopedLock
|
||||
{
|
||||
ScopedLock(Key& key) {}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif //THORVG_THREAD_SUPPORT
|
||||
|
||||
#endif //_TVG_LOCK_H_
|
||||
|
||||
112
spine-godot/build/4.3-stable/tvgTaskScheduler.h
Normal file
112
spine-godot/build/4.3-stable/tvgTaskScheduler.h
Normal file
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* Copyright (c) 2020 - 2024 the ThorVG project. All rights reserved.
|
||||
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _TVG_TASK_SCHEDULER_H_
|
||||
#define _TVG_TASK_SCHEDULER_H_
|
||||
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
|
||||
#include "tvgCommon.h"
|
||||
#include "tvgInlist.h"
|
||||
|
||||
namespace tvg {
|
||||
|
||||
#ifdef THORVG_THREAD_SUPPORT
|
||||
|
||||
struct Task
|
||||
{
|
||||
private:
|
||||
mutex mtx;
|
||||
condition_variable cv;
|
||||
bool ready = true;
|
||||
bool pending = false;
|
||||
|
||||
public:
|
||||
INLIST_ITEM(Task);
|
||||
|
||||
virtual ~Task() = default;
|
||||
|
||||
void done()
|
||||
{
|
||||
if (!pending) return;
|
||||
|
||||
unique_lock<mutex> lock(mtx);
|
||||
while (!ready) cv.wait(lock);
|
||||
pending = false;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void run(unsigned tid) = 0;
|
||||
|
||||
private:
|
||||
void operator()(unsigned tid)
|
||||
{
|
||||
run(tid);
|
||||
|
||||
lock_guard<mutex> lock(mtx);
|
||||
ready = true;
|
||||
cv.notify_one();
|
||||
}
|
||||
|
||||
void prepare()
|
||||
{
|
||||
ready = false;
|
||||
pending = true;
|
||||
}
|
||||
|
||||
friend struct TaskSchedulerImpl;
|
||||
};
|
||||
|
||||
#else //THORVG_THREAD_SUPPORT
|
||||
|
||||
struct Task
|
||||
{
|
||||
public:
|
||||
INLIST_ITEM(Task);
|
||||
|
||||
virtual ~Task() = default;
|
||||
void done() {}
|
||||
|
||||
protected:
|
||||
virtual void run(unsigned tid) = 0;
|
||||
|
||||
private:
|
||||
friend struct TaskSchedulerImpl;
|
||||
};
|
||||
|
||||
#endif //THORVG_THREAD_SUPPORT
|
||||
|
||||
|
||||
struct TaskScheduler
|
||||
{
|
||||
static uint32_t threads();
|
||||
static void init(uint32_t threads);
|
||||
static void term();
|
||||
static void request(Task* task);
|
||||
static void async(bool on);
|
||||
};
|
||||
|
||||
} //namespace
|
||||
|
||||
#endif //_TVG_TASK_SCHEDULER_H_
|
||||
|
||||
84
spine-godot/build/build-extension.sh
Executable file
84
spine-godot/build/build-extension.sh
Executable file
@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd "$dir" > /dev/null
|
||||
|
||||
if [ ! -d ../godot-cpp ]; then
|
||||
echo "No godot-cpp clone found. Run ./setup-extension.sh <Godot branch or tag> <dev> first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
options=""
|
||||
dev="false"
|
||||
raw_platform=${1%/} # Store the raw platform name before adding platform=
|
||||
platform="platform=$raw_platform" # Add platform= prefix
|
||||
arch=$2
|
||||
|
||||
if [ -f "../godot-cpp/dev" ]; then
|
||||
dev="true"
|
||||
echo "DEV build"
|
||||
fi
|
||||
|
||||
if [ $dev == "true" ]; then
|
||||
options="$options dev_build=true"
|
||||
fi
|
||||
|
||||
if [ -z $raw_platform ]; then
|
||||
echo "Platform: current"
|
||||
platform=""
|
||||
else
|
||||
echo "Platform: $raw_platform"
|
||||
fi
|
||||
|
||||
if [ ! -z "$arch" ]; then
|
||||
echo "Architecture: $arch"
|
||||
if [ "$raw_platform" == "linux" ] || [ "$raw_platform" == "android" ]; then
|
||||
options="$options arch=$arch"
|
||||
fi
|
||||
fi
|
||||
|
||||
cpus=2
|
||||
if [ "$OSTYPE" == "msys" ]; then
|
||||
os="windows"
|
||||
cpus=$NUMBER_OF_PROCESSORS
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
os="macos"
|
||||
cpus=$(sysctl -n hw.logicalcpu)
|
||||
if [ `uname -m` == "arm64" ]; then
|
||||
echo "Would do Apple Silicon specific setup"
|
||||
fi
|
||||
else
|
||||
os="linux"
|
||||
cpus=$(grep -c ^processor /proc/cpuinfo)
|
||||
fi
|
||||
|
||||
echo "CPUS: $cpus"
|
||||
|
||||
pushd ..
|
||||
|
||||
if [ "$raw_platform" == "web" ]; then
|
||||
BINDIR="example-v4-extension/bin/web"
|
||||
mkdir -p $BINDIR
|
||||
|
||||
# Build threaded versions
|
||||
echo "Building web with threads..."
|
||||
scons -j $cpus $options $platform target=template_debug
|
||||
scons -j $cpus $options $platform target=template_release
|
||||
|
||||
# Build non-threaded versions
|
||||
echo "Building web without threads..."
|
||||
scons -j $cpus $options $platform target=template_debug threads=no
|
||||
scons -j $cpus $options $platform target=template_release threads=no
|
||||
else
|
||||
# Normal build process for other platforms
|
||||
if [ "$raw_platform" != "android" ] && [ "$raw_platform" != "ios" ] && [ "$raw_platform" != "web" ]; then
|
||||
scons -j $cpus $options $platform target=editor
|
||||
fi
|
||||
scons -j $cpus $options $platform target=template_debug
|
||||
scons -j $cpus $options $platform target=template_release
|
||||
fi
|
||||
|
||||
popd
|
||||
|
||||
popd
|
||||
@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set -x
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd "$dir" > /dev/null
|
||||
@ -25,6 +26,9 @@ fi
|
||||
|
||||
platform=${1%/}
|
||||
mono=false
|
||||
version=$(cat version.txt)
|
||||
major=$(echo $version | cut -d. -f1)
|
||||
minor=$(echo $version | cut -d. -f2)
|
||||
|
||||
if [[ $# -eq 2 ]]; then
|
||||
mono=${2%/}
|
||||
@ -132,30 +136,61 @@ elif [ "$platform" = "web" ]; then
|
||||
scons platform=web tools=no target=template_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.web.template_release.wasm32.zip bin/web_release.zip
|
||||
mv bin/godot.web.template_debug.wasm32.zip bin/web_debug.zip
|
||||
|
||||
scons platform=web tools=no threads=no target=template_release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=web tools=no threads=no target=template_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.web.template_release.wasm32.zip bin/web_nothreads_release.zip
|
||||
mv bin/godot.web.template_debug.wasm32.zip bin/web_nothreads_debug.zip
|
||||
|
||||
if [ -f bin/godot.web.template_release.wasm32.nothreads.zip ]; then
|
||||
mv bin/godot.web.template_release.wasm32.nothreads.zip bin/web_nothreads_release.zip
|
||||
else
|
||||
mv bin/godot.web.template_release.wasm32.zip bin/web_nothreads_release.zip
|
||||
fi
|
||||
|
||||
if [ -f bin/godot.web.template_debug.wasm32.nothreads.zip ]; then
|
||||
mv bin/godot.web.template_debug.wasm32.nothreads.zip bin/web_nothreads_debug.zip
|
||||
else
|
||||
mv bin/godot.web.template_debug.wasm32.zip bin/web_nothreads_debug.zip
|
||||
fi
|
||||
|
||||
scons platform=web tools=no dlink_enabled=yes target=template_release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=web tools=no dlink_enabled=yes target=template_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_release.zip
|
||||
mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_debug.zip
|
||||
|
||||
scons platform=web tools=no threads=no dlink_enabled=yes target=template_release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=web tools=no threads=no dlink_enabled=yes target=template_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_nothreads_release.zip
|
||||
mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_nothreads_debug.zip
|
||||
|
||||
if [ -f bin/godot.web.template_release.wasm32.nothreads.dlink.zip ]; then
|
||||
mv bin/godot.web.template_release.wasm32.nothreads.dlink.zip bin/web_dlink_nothreads_release.zip
|
||||
else
|
||||
mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_nothreads_release.zip
|
||||
fi
|
||||
|
||||
if [ -f bin/godot.web.template_debug.wasm32.nothreads.dlink.zip ]; then
|
||||
mv bin/godot.web.template_debug.wasm32.nothreads.dlink.zip bin/web_dlink_nothreads_debug.zip
|
||||
else
|
||||
mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_nothreads_debug.zip
|
||||
fi
|
||||
elif [ "$platform" = "android" ]; then
|
||||
# --- ANROID ---
|
||||
# generates android_release.apk, android_debug.apk, android_source.zip
|
||||
scons platform=android target=template_release android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_debug android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_release android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_debug android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
if [[ $major -lt 4 || ($major -eq 4 && $minor -lt 3) ]]; then
|
||||
# Godot < 4.3 generates APKs via Gradle invocation.
|
||||
scons platform=android target=template_release arch=arm32 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_debug arch=arm32 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
|
||||
pushd platform/android/java
|
||||
chmod a+x gradlew
|
||||
./gradlew generateGodotTemplates
|
||||
popd
|
||||
pushd platform/android/java
|
||||
chmod a+x gradlew
|
||||
./gradlew generateGodotTemplates
|
||||
popd
|
||||
else
|
||||
scons platform=android target=template_release arch=arm32 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_release arch=arm64 custom_modules="../spine_godot" generate_apk=yes --jobs=$cpus
|
||||
scons platform=android target=template_debug arch=arm32 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=template_debug arch=arm64 custom_modules="../spine_godot" generate_apk=yes --jobs=$cpus
|
||||
fi
|
||||
else
|
||||
echo "Unknown platform: $platform"
|
||||
exit 1
|
||||
|
||||
@ -1,127 +0,0 @@
|
||||
diff --git a/methods.py b/methods.py
|
||||
index 7ede259..4e0b2e6 100644
|
||||
--- a/methods.py
|
||||
+++ b/methods.py
|
||||
@@ -809,6 +809,7 @@ def generate_vs_project(env, num_jobs):
|
||||
"platform=windows",
|
||||
f"target={configuration_getter}",
|
||||
"progress=no",
|
||||
+ "livepp=%s" % env["livepp"],
|
||||
"-j%s" % num_jobs,
|
||||
]
|
||||
|
||||
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
|
||||
index 1b55574..8bc0fb1 100644
|
||||
--- a/platform/windows/detect.py
|
||||
+++ b/platform/windows/detect.py
|
||||
@@ -164,7 +164,7 @@ def detect_build_env_arch():
|
||||
|
||||
|
||||
def get_opts():
|
||||
- from SCons.Variables import BoolVariable, EnumVariable
|
||||
+ from SCons.Variables import BoolVariable, EnumVariable, PathVariable
|
||||
|
||||
mingw = os.getenv("MINGW_PREFIX", "")
|
||||
|
||||
@@ -189,6 +189,7 @@ def get_opts():
|
||||
BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True),
|
||||
BoolVariable("use_asan", "Use address sanitizer (ASAN)", False),
|
||||
BoolVariable("debug_crt", "Compile with MSVC's debug CRT (/MDd)", False),
|
||||
+ PathVariable("livepp", "Path to the Live++ installation", "", PathVariable.PathAccept),
|
||||
]
|
||||
|
||||
|
||||
@@ -458,6 +459,21 @@ def configure_msvc(env, vcvars_msvc_config):
|
||||
|
||||
env.AppendUnique(LINKFLAGS=["/STACK:" + str(STACK_SIZE)])
|
||||
|
||||
+ # Check if LIVEPP_PATH is set and add #define. Perform
|
||||
+ # some sanity checks.
|
||||
+ if env.get("livepp"):
|
||||
+ if env["target"] == "editor":
|
||||
+ if os.path.exists(env.get("livepp")):
|
||||
+ print("Found Live++ at %s" % env.get("livepp"))
|
||||
+ env.AppendUnique(CPPDEFINES=["LIVEPP_PATH=%s" % env.get("livepp")])
|
||||
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
|
||||
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
|
||||
+ else:
|
||||
+ print("Specified Live++ path does not exist")
|
||||
+ else:
|
||||
+ print("Live++ can only be used with targets 'editor'")
|
||||
+ else:
|
||||
+ print("No Live++ specified.")
|
||||
|
||||
def configure_mingw(env):
|
||||
# Workaround for MinGW. See:
|
||||
diff --git a/platform/windows/godot_windows.cpp b/platform/windows/godot_windows.cpp
|
||||
index a26d3ba..8b8e2a8 100644
|
||||
--- a/platform/windows/godot_windows.cpp
|
||||
+++ b/platform/windows/godot_windows.cpp
|
||||
@@ -34,6 +34,11 @@
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#include "API/LPP_API.h"
|
||||
+HMODULE livePP;
|
||||
+#endif
|
||||
+
|
||||
// For export templates, add a section; the exporter will patch it to enclose
|
||||
// the data appended to the executable (bundled PCK)
|
||||
#ifndef TOOLS_ENABLED
|
||||
@@ -149,6 +154,16 @@ char *wc_to_utf8(const wchar_t *wc) {
|
||||
}
|
||||
|
||||
int widechar_main(int argc, wchar_t **argv) {
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#define _MKSTR_L(x) _STR_L(x)
|
||||
+#define _STR_L(x) L#x
|
||||
+ livePP = lpp::lppLoadAndRegister(_MKSTR_L(LIVEPP_PATH), "Godot");
|
||||
+ lpp::lppEnableAllCallingModulesSync(livePP);
|
||||
+ lpp::lppInstallExceptionHandler(livePP);
|
||||
+#undef _MKSTR_L
|
||||
+#undef _STR_L
|
||||
+#endif
|
||||
+
|
||||
OS_Windows os(nullptr);
|
||||
|
||||
setlocale(LC_CTYPE, "");
|
||||
@@ -185,6 +200,11 @@ int widechar_main(int argc, wchar_t **argv) {
|
||||
}
|
||||
delete[] argv_utf8;
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppShutdown(livePP);
|
||||
+ ::FreeLibrary(livePP);
|
||||
+#endif
|
||||
+
|
||||
return os.get_exit_code();
|
||||
}
|
||||
|
||||
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
|
||||
index 08299d9..362de3b 100644
|
||||
--- a/platform/windows/os_windows.cpp
|
||||
+++ b/platform/windows/os_windows.cpp
|
||||
@@ -55,6 +55,11 @@
|
||||
#include <shlobj.h>
|
||||
#include <wbemcli.h>
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#include "API/LPP_API.h"
|
||||
+extern HMODULE livePP;
|
||||
+#endif
|
||||
+
|
||||
extern "C" {
|
||||
__declspec(dllexport) DWORD NvOptimusEnablement = 1;
|
||||
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
|
||||
@@ -1296,6 +1301,10 @@ void OS_Windows::run() {
|
||||
if (Main::iteration()) {
|
||||
break;
|
||||
}
|
||||
+
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppSyncPoint(livePP);
|
||||
+#endif
|
||||
}
|
||||
|
||||
main_loop->finalize();
|
||||
@ -1,127 +0,0 @@
|
||||
diff --git a/methods.py b/methods.py
|
||||
index 436fe63..d6c81b9 100644
|
||||
--- a/methods.py
|
||||
+++ b/methods.py
|
||||
@@ -782,6 +782,7 @@ def generate_vs_project(env, num_jobs):
|
||||
f"target={configuration_getter}",
|
||||
"progress=no",
|
||||
"tools=!tools!",
|
||||
+ "livepp=%s" % env["livepp"],
|
||||
"-j%s" % num_jobs,
|
||||
]
|
||||
|
||||
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
|
||||
index e6829ae..3a7e38d 100644
|
||||
--- a/platform/windows/detect.py
|
||||
+++ b/platform/windows/detect.py
|
||||
@@ -44,7 +44,7 @@ def can_build():
|
||||
|
||||
|
||||
def get_opts():
|
||||
- from SCons.Variables import BoolVariable, EnumVariable
|
||||
+ from SCons.Variables import BoolVariable, EnumVariable, PathVariable
|
||||
|
||||
mingw32 = ""
|
||||
mingw64 = ""
|
||||
@@ -73,6 +73,7 @@ def get_opts():
|
||||
BoolVariable("use_thinlto", "Use ThinLTO", False),
|
||||
BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True),
|
||||
BoolVariable("use_asan", "Use address sanitizer (ASAN)", False),
|
||||
+ PathVariable("livepp", "Path to the Live++ installation", "", PathVariable.PathAccept),
|
||||
]
|
||||
|
||||
|
||||
@@ -305,6 +306,22 @@ def configure_msvc(env, manual_msvc_config):
|
||||
|
||||
env.AppendUnique(LINKFLAGS=["/STACK:" + str(STACK_SIZE)])
|
||||
|
||||
+ # Check if LIVEPP_PATH is set and add #define. Perform
|
||||
+ # some sanity checks.
|
||||
+ if env.get("livepp"):
|
||||
+ if env["target"] == "release_debug" or env["target"] == "debug":
|
||||
+ if os.path.exists(env.get("livepp")):
|
||||
+ print("Found Live++ at %s" % env.get("livepp"))
|
||||
+ env.AppendUnique(CPPDEFINES=["LIVEPP_PATH=%s" % env.get("livepp")])
|
||||
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
|
||||
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
|
||||
+ else:
|
||||
+ print("Specified Live++ path does not exist")
|
||||
+ else:
|
||||
+ print("Live++ can only be used with targets 'debug' and 'release_debug'")
|
||||
+ else:
|
||||
+ print("No Live++ specified.")
|
||||
+
|
||||
|
||||
def configure_mingw(env):
|
||||
# Workaround for MinGW. See:
|
||||
diff --git a/platform/windows/godot_windows.cpp b/platform/windows/godot_windows.cpp
|
||||
index ef70c33..957158e 100644
|
||||
--- a/platform/windows/godot_windows.cpp
|
||||
+++ b/platform/windows/godot_windows.cpp
|
||||
@@ -34,6 +34,11 @@
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#include "API/LPP_API.h"
|
||||
+HMODULE livePP;
|
||||
+#endif
|
||||
+
|
||||
// For export templates, add a section; the exporter will patch it to enclose
|
||||
// the data appended to the executable (bundled PCK)
|
||||
#ifndef TOOLS_ENABLED
|
||||
@@ -147,6 +152,16 @@ char *wc_to_utf8(const wchar_t *wc) {
|
||||
}
|
||||
|
||||
__declspec(dllexport) int widechar_main(int argc, wchar_t **argv) {
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#define _MKSTR_L(x) _STR_L(x)
|
||||
+#define _STR_L(x) L#x
|
||||
+ livePP = lpp::lppLoadAndRegister(_MKSTR_L(LIVEPP_PATH), "Godot");
|
||||
+ lpp::lppEnableAllCallingModulesSync(livePP);
|
||||
+ lpp::lppInstallExceptionHandler(livePP);
|
||||
+#undef _MKSTR_L
|
||||
+#undef _STR_L
|
||||
+#endif
|
||||
+
|
||||
OS_Windows os(NULL);
|
||||
|
||||
setlocale(LC_CTYPE, "");
|
||||
@@ -180,6 +195,11 @@ __declspec(dllexport) int widechar_main(int argc, wchar_t **argv) {
|
||||
}
|
||||
delete[] argv_utf8;
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppShutdown(livePP);
|
||||
+ ::FreeLibrary(livePP);
|
||||
+#endif
|
||||
+
|
||||
return os.get_exit_code();
|
||||
};
|
||||
|
||||
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
|
||||
index 4977d11..6642be9 100644
|
||||
--- a/platform/windows/os_windows.cpp
|
||||
+++ b/platform/windows/os_windows.cpp
|
||||
@@ -53,6 +53,11 @@
|
||||
#include <regstr.h>
|
||||
#include <shlobj.h>
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#include "API/LPP_API.h"
|
||||
+extern HMODULE livePP;
|
||||
+#endif
|
||||
+
|
||||
static const WORD MAX_CONSOLE_LINES = 1500;
|
||||
|
||||
extern "C" {
|
||||
@@ -3542,6 +3547,9 @@ void OS_Windows::run() {
|
||||
process_events(); // get rid of pending events
|
||||
if (Main::iteration())
|
||||
break;
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppSyncPoint(livePP);
|
||||
+#endif
|
||||
};
|
||||
|
||||
main_loop->finish();
|
||||
@ -1,12 +0,0 @@
|
||||
# Godot binary paths
|
||||
## 4.0+
|
||||
* Windows
|
||||
* Editor
|
||||
* Debug: godot/bin/godot.windows.editor.dev.x86_64.exe
|
||||
* Release: godot/bin/godot.windows.editor.x86_64.exe
|
||||
* Template
|
||||
* Debug: godot.windows.template_debug.x86_64.exe
|
||||
* Release: godot.windows.template_release.x86_64.exe
|
||||
* macOS
|
||||
* Editor
|
||||
* Debug:
|
||||
75
spine-godot/build/setup-extension.sh
Executable file
75
spine-godot/build/setup-extension.sh
Executable file
@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd "$dir" > /dev/null
|
||||
|
||||
if [ $# -lt 2 ] || [ $# -gt 3 ]; then
|
||||
echo "Usage: ./setup-extension.sh <Godot version> <dev:true|false>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./setup-extension.sh 4.2.2-stable true"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
godot_branch=${1%/}
|
||||
dev=${2%/}
|
||||
mono=false
|
||||
godot_cpp_repo=https://github.com/godotengine/godot-cpp.git
|
||||
godot_repo=https://github.com/godotengine/godot.git
|
||||
|
||||
if [[ $# -eq 3 ]]; then
|
||||
mono=${3%/}
|
||||
fi
|
||||
|
||||
if [ "$dev" != "true" ] && [ "$dev" != "false" ]; then
|
||||
echo "Invalid value for the 'dev' argument. It should be either 'true' or 'false'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$mono" != "true" ] && [ "$mono" != "false" ]; then
|
||||
echo "Invalid value for the 'mono' argument. It should be either 'true' or 'false'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
godot_cpp_branch=$(echo $godot_branch | cut -d. -f1-2 | cut -d- -f1)
|
||||
|
||||
cpus=2
|
||||
if [ "$OSTYPE" == "msys" ]; then
|
||||
cpus=$NUMBER_OF_PROCESSORS
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
cpus=$(sysctl -n hw.logicalcpu)
|
||||
else
|
||||
cpus=$(grep -c ^processor /proc/cpuinfo)
|
||||
fi
|
||||
|
||||
echo "godot-cpp branch: $godot_cpp_branch"
|
||||
echo "godot branch: $godot_branch"
|
||||
echo "dev: $dev"
|
||||
echo "mono: $mono"
|
||||
echo "cpus: $cpus"
|
||||
|
||||
pushd ..
|
||||
|
||||
rm -rf godot-cpp
|
||||
git clone --depth 1 $godot_cpp_repo -b $godot_cpp_branch
|
||||
|
||||
rm -rf example-v4-extension/bin
|
||||
mkdir -p example-v4-extension/bin
|
||||
|
||||
if [ $dev == "true" ]; then
|
||||
echo "Dev build, creating godot-cpp/dev"
|
||||
touch godot-cpp/dev
|
||||
rm -rf godot
|
||||
git clone --depth 1 $godot_repo -b $godot_branch
|
||||
pushd godot
|
||||
scons target=editor dev_build=true optimize=debug --jobs=$cpus
|
||||
popd
|
||||
fi
|
||||
|
||||
cp spine_godot_extension.gdextension example-v4-extension/bin
|
||||
cp -r ../spine-cpp/spine-cpp spine_godot
|
||||
|
||||
popd
|
||||
popd > /dev/null
|
||||
@ -21,6 +21,8 @@ branch=${1%/}
|
||||
dev=${2%/}
|
||||
mono=false
|
||||
repo=https://github.com/godotengine/godot.git
|
||||
version=$(echo $branch | cut -d. -f1-2)
|
||||
echo $version > version.txt
|
||||
|
||||
if [[ $# -eq 3 && "$branch" != 3* ]]; then
|
||||
mono=${3%/}
|
||||
@ -43,8 +45,8 @@ fi
|
||||
pushd ..
|
||||
rm -rf godot
|
||||
git clone --depth 1 $repo -b $branch
|
||||
|
||||
if [ $dev = "true" ]; then
|
||||
cp -r .idea godot
|
||||
cp build/custom.py godot
|
||||
if [ "$mono" = "true" ]; then
|
||||
echo "" >> godot/custom.py
|
||||
@ -54,23 +56,20 @@ if [ $dev = "true" ]; then
|
||||
rm -rf example/.import
|
||||
rm -rf example/.godot
|
||||
|
||||
#if [ "$OSTYPE" = "msys" ]; then
|
||||
# pushd godot
|
||||
# if [[ $branch == 3* ]]; then
|
||||
# echo "Applying V3 Live++ patch"
|
||||
# git apply ../build/livepp.patch
|
||||
# else
|
||||
# echo "Applying V4 Live++ patch"
|
||||
# git apply ../build/livepp-v4.patch
|
||||
# fi
|
||||
# popd
|
||||
#fi
|
||||
|
||||
if [ `uname` == 'Darwin' ] && [ ! -d "$HOME/VulkanSDK" ]; then
|
||||
./build/install-macos-vulkan-sdk.sh
|
||||
fi
|
||||
fi
|
||||
cp -r ../spine-cpp/spine-cpp spine_godot
|
||||
|
||||
# Apply patch for 4.3-stable, see https://github.com/godotengine/godot/issues/95861/#issuecomment-2486021565
|
||||
if [ "$branch" = "4.3-stable" ]; then
|
||||
pushd godot
|
||||
cp ../build/4.3-stable/tvgLock.h thirdparty/thorvg/src/common/tvgLock.h
|
||||
cp ../build/4.3-stable/tvgTaskScheduler.h thirdparty/thorvg/src/renderer/tvgTaskScheduler.h
|
||||
popd
|
||||
fi
|
||||
|
||||
popd
|
||||
|
||||
popd > /dev/null
|
||||
@ -1,93 +1,99 @@
|
||||
raptor.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
back-arm
|
||||
bounds: 895, 295, 46, 25
|
||||
bounds: 829, 88, 46, 25
|
||||
rotate: 90
|
||||
back-bracer
|
||||
bounds: 992, 216, 39, 28
|
||||
bounds: 195, 238, 39, 28
|
||||
rotate: 90
|
||||
back-hand
|
||||
bounds: 594, 58, 36, 34
|
||||
bounds: 724, 140, 36, 34
|
||||
rotate: 90
|
||||
back-knee
|
||||
bounds: 729, 86, 49, 67
|
||||
bounds: 760, 131, 49, 67
|
||||
rotate: 90
|
||||
back-thigh
|
||||
bounds: 379, 2, 39, 24
|
||||
eyes-open
|
||||
bounds: 902, 194, 47, 45
|
||||
bounds: 225, 238, 39, 24
|
||||
rotate: 90
|
||||
eyes-open
|
||||
bounds: 975, 204, 47, 45
|
||||
front-arm
|
||||
bounds: 945, 306, 48, 26
|
||||
bounds: 969, 112, 48, 26
|
||||
front-bracer
|
||||
bounds: 949, 197, 41, 29
|
||||
bounds: 724, 97, 41, 29
|
||||
rotate: 90
|
||||
front-hand
|
||||
bounds: 949, 266, 41, 38
|
||||
bounds: 251, 239, 41, 38
|
||||
front-open-hand
|
||||
bounds: 875, 148, 43, 44
|
||||
bounds: 856, 76, 43, 44
|
||||
rotate: 90
|
||||
front-thigh
|
||||
bounds: 793, 171, 57, 29
|
||||
bounds: 729, 178, 57, 29
|
||||
rotate: 90
|
||||
gun
|
||||
bounds: 379, 28, 107, 103
|
||||
rotate: 90
|
||||
bounds: 894, 251, 107, 103
|
||||
gun-nohand
|
||||
bounds: 487, 87, 105, 102
|
||||
bounds: 764, 241, 105, 102
|
||||
head
|
||||
bounds: 807, 361, 136, 149
|
||||
bounds: 756, 345, 136, 149
|
||||
lower-leg
|
||||
bounds: 827, 195, 73, 98
|
||||
bounds: 475, 237, 73, 98
|
||||
rotate: 90
|
||||
mouth-grind
|
||||
bounds: 920, 145, 47, 30
|
||||
rotate: 90
|
||||
bounds: 975, 172, 47, 30
|
||||
mouth-smile
|
||||
bounds: 992, 257, 47, 30
|
||||
rotate: 90
|
||||
bounds: 975, 140, 47, 30
|
||||
neck
|
||||
bounds: 359, 114, 18, 21
|
||||
bounds: 366, 282, 18, 21
|
||||
raptor-back-arm
|
||||
bounds: 653, 142, 82, 86
|
||||
bounds: 636, 97, 82, 86
|
||||
rotate: 90
|
||||
raptor-body
|
||||
bounds: 2, 277, 632, 233
|
||||
bounds: 2, 2, 632, 233
|
||||
raptor-front-arm
|
||||
bounds: 484, 4, 81, 102
|
||||
bounds: 871, 168, 81, 102
|
||||
rotate: 90
|
||||
raptor-front-leg
|
||||
bounds: 2, 18, 191, 257
|
||||
bounds: 2, 237, 191, 257
|
||||
raptor-hindleg-back
|
||||
bounds: 636, 295, 169, 215
|
||||
bounds: 195, 279, 169, 215
|
||||
raptor-horn
|
||||
bounds: 195, 22, 182, 80
|
||||
bounds: 431, 312, 182, 80
|
||||
rotate: 90
|
||||
raptor-horn-back
|
||||
bounds: 945, 334, 176, 77
|
||||
bounds: 513, 318, 176, 77
|
||||
rotate: 90
|
||||
raptor-jaw
|
||||
bounds: 359, 137, 126, 138
|
||||
bounds: 894, 356, 126, 138
|
||||
raptor-jaw-tooth
|
||||
bounds: 895, 322, 37, 48
|
||||
bounds: 294, 240, 37, 48
|
||||
rotate: 90
|
||||
raptor-mouth-inside
|
||||
bounds: 949, 228, 36, 41
|
||||
bounds: 344, 241, 36, 41
|
||||
rotate: 90
|
||||
raptor-saddle-strap-back
|
||||
bounds: 653, 86, 54, 74
|
||||
rotate: 90
|
||||
bounds: 575, 242, 54, 74
|
||||
raptor-saddle-strap-front
|
||||
bounds: 594, 94, 57, 95
|
||||
bounds: 764, 182, 57, 95
|
||||
rotate: 90
|
||||
raptor-saddle-w-shadow
|
||||
bounds: 195, 104, 162, 171
|
||||
bounds: 592, 323, 162, 171
|
||||
raptor-tail-shadow
|
||||
bounds: 636, 230, 189, 63
|
||||
bounds: 366, 305, 189, 63
|
||||
rotate: 90
|
||||
raptor-tongue
|
||||
bounds: 807, 295, 86, 64
|
||||
bounds: 387, 239, 86, 64
|
||||
stirrup-back
|
||||
bounds: 952, 151, 44, 35
|
||||
bounds: 829, 136, 44, 35
|
||||
rotate: 90
|
||||
stirrup-front
|
||||
bounds: 902, 243, 45, 50
|
||||
bounds: 866, 121, 45, 50
|
||||
rotate: 90
|
||||
stirrup-strap
|
||||
bounds: 824, 147, 49, 46
|
||||
bounds: 918, 120, 49, 46
|
||||
torso
|
||||
bounds: 737, 137, 54, 91
|
||||
bounds: 636, 181, 54, 91
|
||||
rotate: 90
|
||||
visor
|
||||
bounds: 487, 191, 131, 84
|
||||
bounds: 631, 237, 131, 84
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 412 KiB |
@ -0,0 +1,8 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=3 uid="uid://d1ordmjpe5kt7"]
|
||||
|
||||
[ext_resource type="SpineAtlasResource" uid="uid://syvy0bxbnwgi" path="res://assets/celestial-circus/celestial-circus.atlas" id="1_fs1an"]
|
||||
[ext_resource type="SpineSkeletonFileResource" uid="uid://doan7yl2by7vm" path="res://assets/celestial-circus/celestial-circus.skel" id="2_sbom4"]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource("1_fs1an")
|
||||
skeleton_file_res = ExtResource("2_sbom4")
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user