[godot] Backport to 4.1
27
.github/actions/setup-godot-deps/action.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
name: Setup python and scons
|
||||
description: Setup python, install the pip version of scons.
|
||||
inputs:
|
||||
python-version:
|
||||
description: The python version to use.
|
||||
default: "3.x"
|
||||
python-arch:
|
||||
description: The python architecture.
|
||||
default: "x64"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# Use python 3.x release (works cross platform)
|
||||
- name: Set up Python 3.x
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
# Semantic version range syntax or exact version of a Python version
|
||||
python-version: ${{ inputs.python-version }}
|
||||
# Optional - x64 or x86 architecture, defaults to x64
|
||||
architecture: ${{ inputs.python-arch }}
|
||||
|
||||
- name: Setup scons
|
||||
shell: bash
|
||||
run: |
|
||||
python -c "import sys; print(sys.version)"
|
||||
python -m pip install scons
|
||||
scons --version
|
||||
363
.github/workflows/spine-godot.yml
vendored
Normal file
@ -0,0 +1,363 @@
|
||||
name: Build and Publish Godot editor and templates
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/spine-godot.yml"
|
||||
- 'spine-godot/**'
|
||||
- 'spine-cpp/**'
|
||||
workflow_dispatch:
|
||||
|
||||
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.10
|
||||
GODOT_TAG: 3.4.4-stable
|
||||
GODOT_VERSION: 3.4.4.stable
|
||||
|
||||
jobs:
|
||||
|
||||
godot-editor-windows:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
shell: bash
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build.sh release_debug
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-editor-windows.zip
|
||||
path: spine-godot/godot/bin/godot.windows.opt.tools.64.exe
|
||||
|
||||
godot-editor-linux:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
shell: bash
|
||||
run: |
|
||||
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
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build.sh release_debug
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-editor-linux.zip
|
||||
path: spine-godot/godot/bin/godot.x11.opt.tools.64
|
||||
|
||||
godot-editor-macos:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
shell: bash
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build.sh release_debug
|
||||
pushd spine-godot/godot/bin
|
||||
zip -r godot-editor-macos.zip Godot.app
|
||||
popd
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-editor-macos.zip
|
||||
path: spine-godot/godot/bin/godot-editor-macos.zip
|
||||
|
||||
godot-template-ios:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh ios
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-ios.zip
|
||||
path: spine-godot/godot/bin/iphone.zip
|
||||
|
||||
godot-template-macos:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh macos
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-macos.zip
|
||||
path: spine-godot/godot/bin/osx.zip
|
||||
|
||||
godot-template-linux:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
run: |
|
||||
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
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh linux
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-linux-debug.zip
|
||||
path: spine-godot/godot/bin/linux_x11_64_debug
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-linux-release.zip
|
||||
path: spine-godot/godot/bin/linux_x11_64_release
|
||||
|
||||
godot-template-windows:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
shell: bash
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh windows
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-windows-debug.zip
|
||||
path: spine-godot/godot/bin/windows_64_debug.exe
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-windows-release.zip
|
||||
path: spine-godot/godot/bin/windows_64_release.exe
|
||||
|
||||
godot-template-android:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
# Azure repositories are not reliable, we need to prevent azure giving us packages.
|
||||
- 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 11
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 11
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
shell: bash
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh android
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-debug.zip
|
||||
path: spine-godot/godot/bin/android_debug.apk
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-release.zip
|
||||
path: spine-godot/godot/bin/android_release.apk
|
||||
|
||||
- name: Upload artifacts source
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-source.zip
|
||||
path: spine-godot/godot/bin/android_source.zip
|
||||
|
||||
godot-template-web:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Emscripten latest
|
||||
uses: mymindstorm/setup-emsdk@v10
|
||||
with:
|
||||
version: ${{env.EM_VERSION}}
|
||||
|
||||
- name: Verify Emscripten setup
|
||||
run: |
|
||||
emcc -v
|
||||
|
||||
- name: Setup python and scons
|
||||
uses: ./.github/actions/setup-godot-deps
|
||||
|
||||
- name: Build Godot artifact
|
||||
run: |
|
||||
./spine-godot/build/setup.sh $GODOT_TAG false
|
||||
./spine-godot/build/build-templates.sh web
|
||||
|
||||
- name: Upload artifacts debug
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-web-debug.zip
|
||||
path: spine-godot/godot/bin/webassembly_debug.zip
|
||||
|
||||
- name: Upload artifacts release
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: godot-template-web-release.zip
|
||||
path: spine-godot/godot/bin/webassembly_release.zip
|
||||
|
||||
upload-to-s3:
|
||||
needs: [godot-editor-windows, godot-editor-linux, godot-editor-macos, godot-template-ios, godot-template-macos, godot-template-windows, godot-template-linux, godot-template-android, godot-template-web]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download godot-editor-windows artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-editor-windows.zip
|
||||
|
||||
- name: Download godot-editor-linux artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-editor-linux.zip
|
||||
|
||||
- name: Download godot-editor-macos artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-editor-macos.zip
|
||||
|
||||
- name: Download godot-template-ios artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-ios.zip
|
||||
|
||||
- name: Download godot-template-macos artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-macos.zip
|
||||
|
||||
- name: Download godot-template-windows-release artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-windows-release.zip
|
||||
|
||||
- name: Download godot-template-windows-debug artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-windows-debug.zip
|
||||
|
||||
- name: Download godot-template-linux-release artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-linux-release.zip
|
||||
|
||||
- name: Download godot-template-linux-debug artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-linux-debug.zip
|
||||
|
||||
- name: Download godot-template-android-release artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-release.zip
|
||||
|
||||
- name: Download godot-template-android-debug artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-debug.zip
|
||||
|
||||
- name: Download godot-template-android-source artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-android-source.zip
|
||||
|
||||
- name: Download godot-template-web-release artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-web-release.zip
|
||||
|
||||
- name: Download godot-template-web-debug artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: godot-template-web-debug.zip
|
||||
|
||||
- name: Upload artifacts to S3
|
||||
shell: bash
|
||||
if: env.AWS_ACCESS_KEY_ID != null
|
||||
run: |
|
||||
BRANCH=${GITHUB_REF#refs/heads/}
|
||||
echo "branch: $BRANCH"
|
||||
mv godot.windows.opt.tools.64.exe godot-$BRANCH-$GODOT_TAG.exe
|
||||
mv godot.x11.opt.tools.64 godot-$BRANCH-$GODOT_TAG
|
||||
zip godot-editor-windows.zip godot-$BRANCH-$GODOT_TAG.exe
|
||||
zip godot-editor-linux.zip godot-$BRANCH-$GODOT_TAG
|
||||
aws s3 cp godot-editor-windows.zip s3://spine-godot/$BRANCH/$GODOT_TAG/
|
||||
aws s3 cp godot-editor-linux.zip s3://spine-godot/$BRANCH/$GODOT_TAG/
|
||||
aws s3 cp godot-editor-macos.zip s3://spine-godot/$BRANCH/$GODOT_TAG/
|
||||
echo "$GODOT_VERSION" > version.txt
|
||||
ls -lah
|
||||
zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip iphone.zip osx.zip windows_64_debug.exe windows_64_release.exe linux_x11_64_debug linux_x11_64_release webassembly_debug.zip webassembly_release.zip 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
|
||||
|
||||
|
||||
13
.gitignore
vendored
@ -164,4 +164,17 @@ spine-cocos2dx/example-v4/build-macos
|
||||
spine-cocos2dx/example/build-ios
|
||||
spine-cocos2dx/example/proj.android/app/.cxx
|
||||
spine-cocos2dx/example/build-win
|
||||
spine-godot/godot
|
||||
spine-godot/spine_godot/*.o
|
||||
spine-godot/spine_godot/spine-cpp
|
||||
spine-godot/spine_godot/__pycache__
|
||||
spine-godot/example/.import
|
||||
spine-godot/spine_godot/*.obj
|
||||
*.bc
|
||||
spine-godot/example/.godot
|
||||
spine-godot/example-v4/.godot
|
||||
spine-cocos2dx/example/build-macos
|
||||
spine-godot/logs
|
||||
!spine-godot/build
|
||||
spine-ts/spine-ts.zip
|
||||
*.d
|
||||
@ -85,31 +85,75 @@ cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-cocos2dx/examp
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-cocos2dx/example/Resources/common/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-cocos2dx/example/Resources/common/"
|
||||
|
||||
rm "$ROOT/spine-cocos2dx/example-v4/Resources/common/"*
|
||||
echo "spine-godot"
|
||||
rm -f "$ROOT"/spine-godot/example/assets/spineboy/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example/assets/spineboy/*.png
|
||||
rm -f "$ROOT"/spine-godot/example/assets/spineboy/*.json
|
||||
rm -f "$ROOT"/spine-godot/example/assets/spineboy/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raptor/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raptor/*.png
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raptor/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example/assets/mix-and-match/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example/assets/mix-and-match/*.png
|
||||
rm -f "$ROOT"/spine-godot/example/assets/mix-and-match/*.json
|
||||
rm -f "$ROOT"/spine-godot/example/assets/mix-and-match/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raggedyspineboy/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raggedyspineboy/*.png
|
||||
rm -f "$ROOT"/spine-godot/example/assets/raggedyspineboy/*.json
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../coin/export/coin.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../coin/export/coin.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
|
||||
cp -f ../goblins/export/goblins-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../goblins/export/goblins.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../goblins/export/goblins.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-godot/example/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-godot/example/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-godot/example/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-godot/example/assets/spineboy/"
|
||||
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.json "$ROOT/spine-godot/example/assets/mix-and-match/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-godot/example/assets/mix-and-match/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-godot/example/assets/mix-and-match/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../raptor/export/raptor-pro.skel "$ROOT/spine-godot/example/assets/raptor/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-godot/example/assets/raptor/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-godot/example/assets/raptor/"
|
||||
cp -f ../raptor/manual-maps/raptor-normals.png "$ROOT/spine-godot/example/assets/raptor/n_raptor.png"
|
||||
cp -f ../raptor/manual-maps/light-sprite.png "$ROOT/spine-godot/example/assets/raptor/light-sprite.png"
|
||||
|
||||
cp -f ../tank/export/tank-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../tank/export/tank.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../tank/export/tank.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/raggedy\ spineboy.json "$ROOT/spine-godot/example/assets/raggedyspineboy/"
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/Raggedy\ Spineboy.atlas.txt "$ROOT/spine-godot/example/assets/raggedyspineboy/Raggedy Spineboy.atlas"
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/Raggedy\ Spineboy.png "$ROOT/spine-godot/example/assets/raggedyspineboy/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/spineboy/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/spineboy/*.png
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/spineboy/*.json
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/spineboy/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raptor/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raptor/*.png
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raptor/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/mix-and-match/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/mix-and-match/*.png
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/mix-and-match/*.json
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/mix-and-match/*.skel
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raggedyspineboy/*.atlas
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raggedyspineboy/*.png
|
||||
rm -f "$ROOT"/spine-godot/example-v4/assets/raggedyspineboy/*.json
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-godot/example-v4/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-godot/example-v4/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-godot/example-v4/assets/spineboy/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-godot/example-v4/assets/spineboy/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.json "$ROOT/spine-godot/example-v4/assets/mix-and-match/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-godot/example-v4/assets/mix-and-match/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-godot/example-v4/assets/mix-and-match/"
|
||||
|
||||
cp -f ../raptor/export/raptor-pro.skel "$ROOT/spine-godot/example-v4/assets/raptor/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-godot/example-v4/assets/raptor/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-godot/example-v4/assets/raptor/"
|
||||
cp -f ../raptor/manual-maps/raptor-normals.png "$ROOT/spine-godot/example-v4/assets/raptor/n_raptor.png"
|
||||
cp -f ../raptor/manual-maps/light-sprite.png "$ROOT/spine-godot/example-v4/assets/raptor/light-sprite.png"
|
||||
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/raggedy\ spineboy.json "$ROOT/spine-godot/example-v4/assets/raggedyspineboy/"
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/Raggedy\ Spineboy.atlas.txt "$ROOT/spine-godot/example-v4/assets/raggedyspineboy/Raggedy Spineboy.atlas"
|
||||
cp -f ../../spine-unity/Assets/Spine\ Examples/Spine\ Skeletons/Raggedy\ Spineboy/Raggedy\ Spineboy.png "$ROOT/spine-godot/example-v4/assets/raggedyspineboy/"
|
||||
|
||||
echo "spine-sfml-c"
|
||||
rm "$ROOT/spine-sfml/c/data/"*
|
||||
|
||||
BIN
examples/raptor/manual-maps/light-sprite.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
@ -25,7 +25,9 @@ spotless {
|
||||
'spine-sfml/**/*.cpp',
|
||||
'spine-sfml/**/*.h',
|
||||
'spine-ue4/**/*.cpp',
|
||||
'spine-ue4/**/*.h'
|
||||
'spine-ue4/**/*.h',
|
||||
'spine-godot/spine_godot/*.cpp',
|
||||
'spine-godot/spine_godot/*.h'
|
||||
clangFormat("13.0.1").pathToExe("$System.env.CLANGFORMAT").style('file')
|
||||
}
|
||||
|
||||
|
||||
@ -67,6 +67,9 @@ namespace spine {
|
||||
/// or the DefaultMix if no mix duration has been set.
|
||||
float getMix(Animation *from, Animation *to);
|
||||
|
||||
/// Removes all mixes and sets the default mix to 0.
|
||||
void clear();
|
||||
|
||||
private:
|
||||
class AnimationPair : public SpineObject {
|
||||
public:
|
||||
|
||||
@ -53,6 +53,8 @@ namespace spine {
|
||||
|
||||
virtual ~MeshAttachment();
|
||||
|
||||
using VertexAttachment::computeWorldVertices;
|
||||
|
||||
virtual void computeWorldVertices(Slot &slot, size_t start, size_t count, float *worldVertices, size_t offset,
|
||||
size_t stride = 2);
|
||||
|
||||
|
||||
@ -73,6 +73,11 @@ void AnimationStateData::setDefaultMix(float inValue) {
|
||||
_defaultMix = inValue;
|
||||
}
|
||||
|
||||
void AnimationStateData::clear() {
|
||||
_defaultMix = 0;
|
||||
_animationToMixTime.clear();
|
||||
}
|
||||
|
||||
AnimationStateData::AnimationPair::AnimationPair(Animation *a1, Animation *a2) : _a1(a1), _a2(a2) {
|
||||
}
|
||||
|
||||
|
||||
@ -453,17 +453,29 @@ Skin *SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData
|
||||
skin = new (__FILE__, __LINE__) Skin("default");
|
||||
} else {
|
||||
skin = new (__FILE__, __LINE__) Skin(readStringRef(input, skeletonData));
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getBones().add(skeletonData->_bones[readVarint(input, true)]);
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++) {
|
||||
int boneIndex = readVarint(input, true);
|
||||
if (boneIndex >= (int) skeletonData->_bones.size()) return NULL;
|
||||
skin->getBones().add(skeletonData->_bones[boneIndex]);
|
||||
}
|
||||
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getConstraints().add(skeletonData->_ikConstraints[readVarint(input, true)]);
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++) {
|
||||
int ikIndex = readVarint(input, true);
|
||||
if (ikIndex >= (int) skeletonData->_ikConstraints.size()) return NULL;
|
||||
skin->getConstraints().add(skeletonData->_ikConstraints[ikIndex]);
|
||||
}
|
||||
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getConstraints().add(skeletonData->_transformConstraints[readVarint(input, true)]);
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++) {
|
||||
int transformIndex = readVarint(input, true);
|
||||
if (transformIndex >= (int) skeletonData->_transformConstraints.size()) return NULL;
|
||||
skin->getConstraints().add(skeletonData->_transformConstraints[transformIndex]);
|
||||
}
|
||||
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getConstraints().add(skeletonData->_pathConstraints[readVarint(input, true)]);
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++) {
|
||||
int pathIndex = readVarint(input, true);
|
||||
if (pathIndex >= (int) skeletonData->_pathConstraints.size()) return NULL;
|
||||
skin->getConstraints().add(skeletonData->_pathConstraints[pathIndex]);
|
||||
}
|
||||
slotCount = readVarint(input, true);
|
||||
}
|
||||
|
||||
@ -476,7 +488,7 @@ Skin *SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData
|
||||
skin->setAttachment(slotIndex, String(name), attachment);
|
||||
else {
|
||||
delete skin;
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -515,7 +527,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
RegionAttachment *region = _attachmentLoader->newRegionAttachment(*skin, String(name), String(path), sequence);
|
||||
if (!region) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
region->_path = path;
|
||||
region->_rotation = rotation;
|
||||
@ -536,7 +548,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
BoundingBoxAttachment *box = _attachmentLoader->newBoundingBoxAttachment(*skin, String(name));
|
||||
if (!box) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
readVertices(input, box->getVertices(), box->getBones(), vertexCount);
|
||||
box->setWorldVerticesLength(vertexCount << 1);
|
||||
@ -577,7 +589,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
MeshAttachment *mesh = _attachmentLoader->newMeshAttachment(*skin, String(name), String(path), sequence);
|
||||
if (!mesh) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
mesh->_path = path;
|
||||
mesh->_color.set(color);
|
||||
@ -616,7 +628,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
MeshAttachment *mesh = _attachmentLoader->newMeshAttachment(*skin, String(name), String(path), sequence);
|
||||
if (!mesh) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
mesh->_path = path;
|
||||
mesh->_color.set(color);
|
||||
@ -635,7 +647,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
PathAttachment *path = _attachmentLoader->newPathAttachment(*skin, String(name));
|
||||
if (!path) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
path->_closed = readBoolean(input);
|
||||
path->_constantSpeed = readBoolean(input);
|
||||
@ -657,7 +669,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
PointAttachment *point = _attachmentLoader->newPointAttachment(*skin, String(name));
|
||||
if (!point) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
point->_rotation = readFloat(input);
|
||||
point->_x = readFloat(input) * _scale;
|
||||
@ -675,7 +687,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
ClippingAttachment *clip = _attachmentLoader->newClippingAttachment(*skin, name);
|
||||
if (!clip) {
|
||||
setError("Error reading attachment: ", name.buffer());
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
readVertices(input, clip->getVertices(), clip->getBones(), vertexCount);
|
||||
clip->setWorldVerticesLength(vertexCount << 1);
|
||||
@ -687,7 +699,7 @@ Attachment *SkeletonBinary::readAttachment(DataInput *input, Skin *skin, int slo
|
||||
return clip;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void SkeletonBinary::readVertices(DataInput *input, Vector<float> &vertices, Vector<size_t> &bones, int vertexCount) {
|
||||
|
||||
85
spine-godot/README.md
Normal file
@ -0,0 +1,85 @@
|
||||
# spine-godot
|
||||
|
||||
The spine-godot runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Godot](https://godotengine.org/). spine-godot is based on [spine-cpp](../spine-cpp).
|
||||
|
||||
# See the [spine-godot documentation](http://esotericsoftware.com/spine-godot]) for in-depth information.
|
||||
|
||||
## 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-godot works with data exported from Spine 4.2.xx.
|
||||
|
||||
spine-godot supports all Spine features, except two-color tinting and the screen blend mode.
|
||||
|
||||
## Setup
|
||||
|
||||
spine-godot works with the latest stable Godot 3.4 release. It requires compilation of Godot, as spine-godot is implemented as a module.
|
||||
|
||||
> *NOTE:* spine-godot also compiles and works against Godot 4.x. However, we currently can not guarantee stability, as Godot 4.x is still heavily in flux.
|
||||
|
||||
### Pre-built Godot editor and export template binaries
|
||||
|
||||
We provide prebuilt Godot editor and export template binaries for Godot 3.4.4-stable:
|
||||
|
||||
* [Godot Editor Windows](https://spine-godot.s3.eu-central-1.amazonaws.com/4.2-beta/3.4.4-stable/godot-editor-windows.zip)
|
||||
* [Godot Editor Linux](https://spine-godot.s3.eu-central-1.amazonaws.com/4.2-beta/3.4.4-stable/godot-editor-linux.zip)
|
||||
* [Godot Editor macOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.2-beta/3.4.4-stable/godot-editor-macos.zip)
|
||||
* [Godot export templates for Windows, Linux, macOS, Web, Android, iOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.2-beta/3.4.4-stable/spine-godot-templates-4.2-beta-3.4.4-stable.tpz)
|
||||
|
||||
### Building the Godot editor and export templates locally
|
||||
|
||||
If you want to build the Godot editor and export templates yourself, either because you want to add custom engine modules or for engine development, you can use the shell scripts in the `spine-godot/build` folder.
|
||||
|
||||
> *NOTE:* Make sure you have all build dependencies installed before attempting this, as per the [official instructions by Godot](https://docs.godotengine.org/en/stable/development/compiling/index.html).
|
||||
|
||||
To build a Godot editor binary, run the following in a Bash shell (use Git Bash on Windows):
|
||||
|
||||
```
|
||||
cd spine-godot
|
||||
./build/setup.sh 3.4.4-stable false
|
||||
./build/build.sh release_debug
|
||||
```
|
||||
|
||||
The first argument to `setup.sh` is the Godot repository branch or commit hash you want to build the Godot editor from. The second argument specifies whether you want to compile the editor for development, which will include support for Live++ on Windows, and disable many modules so compilation is faster.
|
||||
|
||||
The first argument to `build.sh` specifies the optimization level of the resulting binary. Supported values are `debug`, which allows full debugging but may be slow due to missing optimizations, and `release_debug`, which is generally used for release builds of the Godot editor.
|
||||
|
||||
The resulting Godot editor binary can then be found in `spine-godot/godot/bin`.
|
||||
|
||||
To build the export template for a specific platform, run the following in a Bash shell (use Git Bash on Windows):
|
||||
|
||||
```
|
||||
cd spine-godot
|
||||
./build/setup.sh 3.4.4-stable false
|
||||
./build/build-templates.sh windows
|
||||
```
|
||||
|
||||
The first argument to `setup.sh` is the Godot repository branch or commit hash you want to build the Godot editor from. The second argument must be `false`.
|
||||
|
||||
The first argument to `built-templates.sh` is the platform to compile the template for. Valid values are `windows`, `linux`, `macos`, `web`, `android`, and `ios`. Note that macOS and iOS export templates can only be build on a machine running macOS. See the [official instructions by Godot](https://docs.godotengine.org/en/stable/development/compiling/index.html).
|
||||
|
||||
The resulting Godot export template binary can then be found in `spine-godot/godot/bin`.
|
||||
|
||||
### Building the Godot editor and export templates via GitHub Actions
|
||||
This repository contains a GitHub workflow in `.github/workflows/spine-godot.yml` that allows building all Godot editor and export template binaries through GitHub actions. This may be simpler than compiling these artifacts locally. To use the GitHub workflow:
|
||||
|
||||
1. Clone this repository
|
||||
2. Enable GitHub workflows on the cloned repository
|
||||
3. Manually trigger the `spine-godot` workflow.
|
||||
|
||||
The resulting binaries will be attached as artifacts to a sucessful workflow run.
|
||||
|
||||
## Example
|
||||
Sample projects for both Godot 3.4.x and Godot 4.x are provided in the `example/` and `example-v4/` folders respectively. They illustrate all spine-godot functionality and can be opened and exported with the pre-built or custom build Godot editor and export template binaries.
|
||||
|
||||
|
||||
|
||||
125
spine-godot/build/build-templates.sh
Executable file
@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $dir > /dev/null
|
||||
|
||||
if [ ! "$#" -eq 1 ]; then
|
||||
echo "Usage: ./build-templates.sh <platform>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./build-templates.sh windows"
|
||||
echo " ./build-templates.sh linux"
|
||||
echo " ./build-templates.sh macos"
|
||||
echo " ./build-templates.sh ios"
|
||||
echo " ./build-templates.sh android"
|
||||
echo " ./build-templates.sh web"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ../godot ]; then
|
||||
echo "No Godot clone found. Run ./setup.sh <Godot branch or tag> <dev> first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
platform=${1%/}
|
||||
|
||||
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
|
||||
|
||||
pushd ../godot
|
||||
if [ "$platform" = "windows" ]; then
|
||||
# --- Windows ---
|
||||
#generates windows_64_debug.exe and windows_64_release.exe
|
||||
scons platform=windows tools=no target=release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=windows tools=no target=release_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
cp bin/godot.windows.opt.64.exe bin/windows_64_release.exe
|
||||
cp bin/godot.windows.opt.debug.64.exe bin/windows_64_debug.exe
|
||||
|
||||
elif [ "$platform" = "macos" ]; then
|
||||
# --- macOS ---
|
||||
# generates osx.zip
|
||||
|
||||
scons platform=osx tools=no target=release arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release_debug arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
lipo -create bin/godot.osx.opt.x86_64 bin/godot.osx.opt.arm64 -output bin/godot.osx.opt.universal
|
||||
lipo -create bin/godot.osx.opt.debug.x86_64 bin/godot.osx.opt.debug.arm64 -output bin/godot.osx.opt.debug.universal
|
||||
strip -S -x bin/godot.osx.opt.universal
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/osx_template.app .
|
||||
mkdir -p osx_template.app/Contents/MacOS
|
||||
cp godot.osx.opt.universal osx_template.app/Contents/MacOS/godot_osx_release.64
|
||||
cp godot.osx.opt.debug.universal osx_template.app/Contents/MacOS/godot_osx_debug.64
|
||||
chmod +x osx_template.app/Contents/MacOS/godot_osx*
|
||||
rm -rf osx.zip
|
||||
zip -q -9 -r osx.zip osx_template.app
|
||||
popd
|
||||
elif [ "$platform" = "ios" ]; then
|
||||
# --- iOS --
|
||||
# generates iphone.zip
|
||||
|
||||
scons p=iphone tools=no target=release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
lipo -create bin/libgodot.iphone.opt.arm64.simulator.a bin/libgodot.iphone.opt.x86_64.simulator.a -output bin/libgodot.iphone.opt.simulator.a
|
||||
lipo -create bin/libgodot.iphone.opt.debug.arm64.simulator.a bin/libgodot.iphone.opt.debug.x86_64.simulator.a -output bin/libgodot.iphone.opt.debug.simulator.a
|
||||
strip -S -x bin/libgodot.iphone.opt.arm64.a
|
||||
strip -S -x bin/libgodot.iphone.opt.simulator.a
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/ios_xcode .
|
||||
cp libgodot.iphone.opt.arm64.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64/libgodot.a
|
||||
cp libgodot.iphone.opt.simulator.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
|
||||
cp libgodot.iphone.opt.debug.arm64.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64/libgodot.a
|
||||
cp libgodot.iphone.opt.debug.simulator.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
|
||||
rm -rf iphone.zip
|
||||
pushd ios_xcode
|
||||
zip -q -9 -r ../iphone.zip *
|
||||
popd
|
||||
popd
|
||||
elif [ "$platform" = "web" ]; then
|
||||
# --- WEB ---
|
||||
# generates webassembly_debug.zip, webassembly_release.zip
|
||||
scons platform=javascript tools=no target=release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=javascript tools=no target=release_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.javascript.opt.zip bin/webassembly_release.zip
|
||||
mv bin/godot.javascript.opt.debug.zip bin/webassembly_debug.zip
|
||||
elif [ "$platform" = "android" ]; then
|
||||
# --- ANROID ---
|
||||
# generates android_release.apk, android_debug.apk, android_source.zip
|
||||
scons platform=android target=release android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release_debug android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release_debug android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
|
||||
pushd platform/android/java
|
||||
chmod a+x gradlew
|
||||
./gradlew generateGodotTemplates
|
||||
popd
|
||||
elif [ "$platform" = "linux" ]; then
|
||||
# --- Linix ---
|
||||
# generates linux_x11_64_release, linux_x11_64_debug
|
||||
scons platform=x11 tools=no target=release bits=64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=x11 tools=no target=release_debug bits=64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
strip bin/godot.x11.opt.64
|
||||
strip bin/godot.x11.opt.debug.64
|
||||
cp bin/godot.x11.opt.64 bin/linux_x11_64_release
|
||||
cp bin/godot.x11.opt.debug.64 bin/linux_x11_64_debug
|
||||
else
|
||||
echo "Unknown platform: $platform"
|
||||
exit 1
|
||||
fi
|
||||
popd
|
||||
70
spine-godot/build/build.sh
Executable file
@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $dir > /dev/null
|
||||
|
||||
if [ ! "$#" -eq 1 ]; then
|
||||
echo "Usage: ./build.sh <target>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./build.sh release_debug"
|
||||
echo " ./build.sh debug"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ../godot ]; then
|
||||
echo "No Godot clone found. Run ./setup.sh <Godot branch or tag> <dev> first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
target="target=${1%/}"
|
||||
dev="false"
|
||||
if [ -f "../godot/custom.py" ]; then
|
||||
dev="true"
|
||||
fi
|
||||
|
||||
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 "CPUS: $cpus"
|
||||
|
||||
pushd ../godot
|
||||
if [ `uname` == 'Darwin' ] && [ $dev = "false" ]; then
|
||||
scons $target arch=x86_64 compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons $target arch=arm64 compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/osx_tools.app .
|
||||
mv osx_tools.app Godot.app
|
||||
mkdir -p Godot.app/Contents/MacOS
|
||||
if [ "$target" = "debug" ]; then
|
||||
lipo -create godot.osx.tools.x86_64 godot.osx.tools.arm64 -output godot.osx.tools.universal
|
||||
strip -S -x godot.osx.tools.universal
|
||||
cp godot.osx.tools.universal Godot.app/Contents/MacOS/Godot
|
||||
else
|
||||
lipo -create godot.osx.opt.tools.x86_64 godot.osx.opt.tools.arm64 -output godot.osx.opt.tools.universal
|
||||
strip -S -x godot.osx.opt.tools.universal
|
||||
cp godot.osx.opt.tools.universal Godot.app/Contents/MacOS/Godot
|
||||
fi
|
||||
chmod +x Godot.app/Contents/MacOS/Godot
|
||||
popd
|
||||
else
|
||||
if [ "$OSTYPE" = "msys" ]; then
|
||||
target="$target vsproj=yes livepp=$LIVEPP"
|
||||
fi
|
||||
scons $target compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
if [ -f "bin/godot.x11.opt.tools.64" ]; then
|
||||
strip bin/godot.x11.opt.tools.64
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
|
||||
popd > /dev/null
|
||||
33
spine-godot/build/custom.py
Normal file
@ -0,0 +1,33 @@
|
||||
# list of disabled modules for faster compilation of the engine
|
||||
module_arkit_enabled = "no"
|
||||
module_assimp_enabled = "no"
|
||||
module_bmp_enabled = "no"
|
||||
module_denoise_enabled = "no"
|
||||
module_bullet_enabled = "no"
|
||||
module_raycast_enabled = "no"
|
||||
module_camera_enabled = "no"
|
||||
module_csg_enabled = "no"
|
||||
module_dds_enabled = "no"
|
||||
module_enet_enabled = "no"
|
||||
module_etc_enabled = "no"
|
||||
module_gdnative_enabled = "no"
|
||||
module_gridmap_enabled = "no"
|
||||
module_hdr_enabled = "no"
|
||||
module_jsonrpc_enabled = "no"
|
||||
module_mbedtls_enabled = "no"
|
||||
module_mobile_vr_enabled = "no"
|
||||
module_opensimplex_enabled = "no"
|
||||
module_opus_enabled = "no"
|
||||
module_pvr_enabled = "no"
|
||||
module_recast_enabled = "no"
|
||||
module_squish_enabled = "no"
|
||||
module_tga_enabled = "no"
|
||||
module_theora_enabled = "no"
|
||||
module_tinyexr_enabled = "no"
|
||||
module_upnp_enabled = "no"
|
||||
module_vhacd_enabled = "no"
|
||||
module_webm_enabled = "no"
|
||||
module_webp_enabled = "no"
|
||||
module_webrtc_enabled = "no"
|
||||
module_websocket_enabled = "no"
|
||||
module_xatlas_unwrap_enabled = "no"
|
||||
124
spine-godot/build/livepp-v4.patch
Normal file
@ -0,0 +1,124 @@
|
||||
diff --git a/methods.py b/methods.py
|
||||
index fe84641e9d0625b4f0c4d90a65839337d6120ff8..51ef8550d3a9def0a2ff88a2fde4fa096c085de9 100644
|
||||
--- a/methods.py
|
||||
+++ b/methods.py
|
||||
@@ -734,6 +734,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 0b18fb74fb145e4d2e88ee91abe99f8f39312a46..04880a8fa8209c4002b49f964d86227974ce9ca8 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),
|
||||
]
|
||||
|
||||
|
||||
@@ -310,6 +311,19 @@ 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":
|
||||
+ 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("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 8de3ef294a99c6f02f6f1380e331e4bb598864ce..8e4c15dd66d1b640a352ed826b25b23917f72cc4 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) {
|
||||
}
|
||||
|
||||
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, "");
|
||||
@@ -179,6 +194,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 8755bc65dce7e4b88fd509d0cbdbec576356c5f5..50e0d8d0b06bf76d5f4d085d010cf6a683a9e64f 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
|
||||
+
|
||||
extern "C" {
|
||||
__declspec(dllexport) DWORD NvOptimusEnablement = 1;
|
||||
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
|
||||
@@ -677,6 +682,9 @@ void OS_Windows::run() {
|
||||
if (Main::iteration()) {
|
||||
break;
|
||||
}
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppSyncPoint(livePP);
|
||||
+#endif
|
||||
}
|
||||
|
||||
main_loop->finalize();
|
||||
123
spine-godot/build/livepp.patch
Normal file
@ -0,0 +1,123 @@
|
||||
diff --git a/methods.py b/methods.py
|
||||
index 9b8cb38c0c1c0fd4ba2917815fdfb7efafb4b646..874e10bcc637632db26b4ac062a5359cd44eaa25 100644
|
||||
--- a/methods.py
|
||||
+++ b/methods.py
|
||||
@@ -688,6 +688,7 @@ def generate_vs_project(env, num_jobs):
|
||||
"target=$(Configuration)",
|
||||
"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 e4facad816b7584fe38dc760356310e0a3937288..2d9da3df65cd3a0b0882ace984002320ebf6c3fc 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 = ""
|
||||
@@ -72,6 +72,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),
|
||||
]
|
||||
|
||||
|
||||
@@ -296,6 +297,18 @@ 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":
|
||||
+ 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("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 d7d9e4eace00a696abbb47cb9632f40e183a4ec4..e362320e51c725cd01f292887bd93442752c1c48 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
|
||||
@@ -136,6 +141,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, "");
|
||||
@@ -170,6 +185,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 8b28cbf1f23d6574aac41a3676fea64ddf786fc4..0124d4ac9652df9ba682ab8cc18b4008461d74cf 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" {
|
||||
@@ -3371,6 +3376,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();
|
||||
39
spine-godot/build/setup.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $dir > /dev/null
|
||||
|
||||
if [ ! "$#" -eq 2 ]; then
|
||||
echo "Usage: ./setup.sh <Godot branch or tag> <dev:true|false>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./setup.sh 3.4.4-stable true"
|
||||
echo " ./setup.sh master false"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
branch=${1%/}
|
||||
dev=${2%/}
|
||||
|
||||
pushd ..
|
||||
rm -rf godot
|
||||
git clone --depth 1 https://github.com/godotengine/godot.git -b $branch
|
||||
if [ $dev = "true" ]; then
|
||||
cp -r .idea godot
|
||||
cp build/custom.py godot
|
||||
rm -rf example/.import
|
||||
rm -rf example/.godot
|
||||
|
||||
if [ "$OSTYPE" = "msys" ]; then
|
||||
pushd godot
|
||||
git apply ../build/livepp.patch
|
||||
git apply ../build/livepp-v4.patch
|
||||
popd
|
||||
fi
|
||||
fi
|
||||
cp -r ../spine-cpp/spine-cpp spine_godot
|
||||
popd
|
||||
|
||||
popd > /dev/null
|
||||
4
spine-godot/build/sources.lst
Normal file
@ -0,0 +1,4 @@
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
|
||||
BIN
spine-godot/example-v4/assets/footstep.ogg
Normal file
16
spine-godot/example-v4/assets/footstep.ogg.import
Normal file
@ -0,0 +1,16 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOGGVorbis"
|
||||
uid="uid://can7k84o8svum"
|
||||
path="res://.godot/imported/footstep.ogg-789c3f1e3c4e0ca3bebcb13f1160f623.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/footstep.ogg"
|
||||
dest_files=["res://.godot/imported/footstep.ogg-789c3f1e3c4e0ca3bebcb13f1160f623.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
@ -0,0 +1,10 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/mix-and-match/mix-and-match.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/mix-and-match/mix-and-match-pro.json" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
animations = null
|
||||
skins = null
|
||||
8001
spine-godot/example-v4/assets/mix-and-match/mix-and-match-pro.json
Normal file
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.json"
|
||||
type="SpineSkeletonFileResource"
|
||||
uid="uid://bijrb2mt3vodc"
|
||||
path="res://.godot/imported/mix-and-match-pro.json-57325a5014e6fd56fc4a86824bc458ea.spjson"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match-pro.json"
|
||||
dest_files=["res://.godot/imported/mix-and-match-pro.json-57325a5014e6fd56fc4a86824bc458ea.spjson"]
|
||||
|
||||
[params]
|
||||
|
||||
362
spine-godot/example-v4/assets/mix-and-match/mix-and-match.atlas
Normal file
@ -0,0 +1,362 @@
|
||||
mix-and-match.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
base-head
|
||||
bounds: 587, 2, 95, 73
|
||||
boy/arm-front
|
||||
bounds: 558, 271, 36, 115
|
||||
boy/backpack
|
||||
bounds: 235, 109, 119, 153
|
||||
boy/backpack-pocket
|
||||
bounds: 328, 73, 34, 62
|
||||
rotate: 90
|
||||
boy/backpack-strap-front
|
||||
bounds: 665, 79, 38, 88
|
||||
boy/backpack-up
|
||||
bounds: 395, 364, 21, 70
|
||||
rotate: 90
|
||||
boy/body
|
||||
bounds: 251, 264, 97, 132
|
||||
rotate: 90
|
||||
boy/boot-ribbon-front
|
||||
bounds: 648, 131, 9, 11
|
||||
boy/collar
|
||||
bounds: 744, 4, 73, 29
|
||||
rotate: 90
|
||||
boy/ear
|
||||
bounds: 383, 109, 19, 23
|
||||
rotate: 90
|
||||
boy/eye-back-low-eyelid
|
||||
bounds: 739, 284, 17, 6
|
||||
rotate: 90
|
||||
boy/eye-back-pupil
|
||||
bounds: 832, 443, 8, 9
|
||||
rotate: 90
|
||||
boy/eye-back-up-eyelid
|
||||
bounds: 558, 264, 23, 5
|
||||
boy/eye-back-up-eyelid-back
|
||||
bounds: 802, 491, 19, 10
|
||||
rotate: 90
|
||||
boy/eye-front-low-eyelid
|
||||
bounds: 386, 363, 22, 7
|
||||
rotate: 90
|
||||
boy/eye-front-pupil
|
||||
bounds: 816, 389, 9, 9
|
||||
boy/eye-front-up-eyelid
|
||||
bounds: 160, 71, 31, 6
|
||||
rotate: 90
|
||||
boy/eye-front-up-eyelid-back
|
||||
bounds: 801, 434, 26, 9
|
||||
rotate: 90
|
||||
boy/eye-iris-back
|
||||
bounds: 618, 264, 17, 17
|
||||
boy/eye-iris-front
|
||||
bounds: 727, 264, 18, 18
|
||||
boy/eye-white-back
|
||||
bounds: 580, 131, 20, 12
|
||||
boy/eye-white-front
|
||||
bounds: 510, 130, 27, 13
|
||||
boy/eyebrow-back
|
||||
bounds: 751, 88, 20, 11
|
||||
rotate: 90
|
||||
boy/eyebrow-front
|
||||
bounds: 483, 130, 25, 11
|
||||
boy/hair-back
|
||||
bounds: 494, 388, 122, 81
|
||||
rotate: 90
|
||||
boy/hair-bangs
|
||||
bounds: 667, 284, 70, 37
|
||||
boy/hair-side
|
||||
bounds: 789, 374, 25, 43
|
||||
boy/hand-backfingers
|
||||
bounds: 467, 364, 19, 21
|
||||
boy/hand-front-fingers
|
||||
bounds: 488, 364, 19, 21
|
||||
boy/hat
|
||||
bounds: 615, 417, 93, 56
|
||||
rotate: 90
|
||||
boy/leg-front
|
||||
bounds: 138, 104, 31, 158
|
||||
boy/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl-blue-cape/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl-spring-dress/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
boy/mouth-smile
|
||||
bounds: 705, 79, 29, 7
|
||||
boy/nose
|
||||
bounds: 836, 473, 17, 10
|
||||
rotate: 90
|
||||
boy/pompom
|
||||
bounds: 747, 273, 48, 43
|
||||
rotate: 90
|
||||
boy/zip
|
||||
bounds: 648, 144, 14, 23
|
||||
girl-blue-cape/back-eyebrow
|
||||
bounds: 602, 131, 18, 12
|
||||
girl-blue-cape/body-dress
|
||||
bounds: 2, 264, 109, 246
|
||||
girl-blue-cape/body-ribbon
|
||||
bounds: 615, 283, 50, 38
|
||||
girl-blue-cape/cape-back
|
||||
bounds: 2, 69, 134, 193
|
||||
girl-blue-cape/cape-back-up
|
||||
bounds: 386, 387, 123, 106
|
||||
rotate: 90
|
||||
girl-blue-cape/cape-ribbon
|
||||
bounds: 675, 264, 50, 18
|
||||
girl-blue-cape/cape-shoulder-back
|
||||
bounds: 751, 110, 49, 59
|
||||
girl-blue-cape/cape-shoulder-front
|
||||
bounds: 113, 264, 62, 76
|
||||
rotate: 90
|
||||
girl-blue-cape/cape-up-front
|
||||
bounds: 399, 264, 98, 117
|
||||
rotate: 90
|
||||
girl-blue-cape/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl-spring-dress/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl-blue-cape/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl-spring-dress/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl-blue-cape/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl-spring-dress/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl-blue-cape/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl-spring-dress/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl-blue-cape/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl-spring-dress/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl-blue-cape/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl-spring-dress/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl-blue-cape/eye-iris-back
|
||||
bounds: 637, 264, 17, 17
|
||||
girl-blue-cape/eye-iris-front
|
||||
bounds: 802, 471, 18, 18
|
||||
girl-blue-cape/eye-white-back
|
||||
bounds: 596, 264, 20, 16
|
||||
girl-spring-dress/eye-white-back
|
||||
bounds: 596, 264, 20, 16
|
||||
girl-blue-cape/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl-blue-cape/front-eyebrow
|
||||
bounds: 608, 149, 18, 12
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-back
|
||||
bounds: 508, 145, 117, 98
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-bangs
|
||||
bounds: 673, 419, 91, 40
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-head-side-back
|
||||
bounds: 196, 331, 30, 52
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-head-side-front
|
||||
bounds: 738, 323, 41, 42
|
||||
girl-blue-cape/hair-side
|
||||
bounds: 473, 3, 36, 71
|
||||
girl-blue-cape/hand-front-fingers
|
||||
bounds: 509, 365, 19, 21
|
||||
girl-spring-dress/hand-front-fingers
|
||||
bounds: 509, 365, 19, 21
|
||||
girl-blue-cape/leg-front
|
||||
bounds: 168, 72, 30, 158
|
||||
rotate: 90
|
||||
girl-blue-cape/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl-spring-dress/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl-blue-cape/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl-spring-dress/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl-blue-cape/sleeve-back
|
||||
bounds: 767, 79, 42, 29
|
||||
girl-blue-cape/sleeve-front
|
||||
bounds: 408, 76, 52, 119
|
||||
rotate: 90
|
||||
girl-spring-dress/arm-front
|
||||
bounds: 596, 282, 17, 111
|
||||
girl-spring-dress/back-eyebrow
|
||||
bounds: 801, 420, 18, 12
|
||||
girl-spring-dress/body-up
|
||||
bounds: 179, 4, 64, 66
|
||||
girl-spring-dress/cloak-down
|
||||
bounds: 775, 27, 50, 50
|
||||
girl-spring-dress/cloak-up
|
||||
bounds: 360, 7, 64, 58
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-iris-back
|
||||
bounds: 656, 264, 17, 17
|
||||
girl-spring-dress/eye-iris-front
|
||||
bounds: 814, 492, 18, 18
|
||||
girl-spring-dress/front-eyebrow
|
||||
bounds: 822, 472, 18, 12
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-back
|
||||
bounds: 196, 363, 147, 93
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-bangs
|
||||
bounds: 696, 326, 91, 40
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-head-side-back
|
||||
bounds: 529, 76, 30, 52
|
||||
girl-spring-dress/hair-head-side-front
|
||||
bounds: 781, 323, 41, 42
|
||||
girl-spring-dress/hair-side
|
||||
bounds: 511, 3, 36, 71
|
||||
girl-spring-dress/leg-front
|
||||
bounds: 171, 104, 30, 158
|
||||
girl-spring-dress/neck
|
||||
bounds: 138, 70, 20, 32
|
||||
girl-spring-dress/shoulder-ribbon
|
||||
bounds: 622, 131, 36, 24
|
||||
rotate: 90
|
||||
girl-spring-dress/skirt
|
||||
bounds: 113, 328, 182, 81
|
||||
rotate: 90
|
||||
girl-spring-dress/underskirt
|
||||
bounds: 2, 2, 175, 65
|
||||
girl/arm-front
|
||||
bounds: 577, 395, 36, 115
|
||||
girl/back-eyebrow
|
||||
bounds: 834, 492, 18, 12
|
||||
rotate: 90
|
||||
girl/bag-base
|
||||
bounds: 191, 264, 62, 58
|
||||
rotate: 90
|
||||
girl/bag-strap-front
|
||||
bounds: 385, 265, 12, 96
|
||||
girl/bag-top
|
||||
bounds: 738, 367, 49, 50
|
||||
girl/body
|
||||
bounds: 356, 130, 97, 132
|
||||
girl/boot-ribbon-front
|
||||
bounds: 539, 130, 13, 13
|
||||
girl/eye-iris-back
|
||||
bounds: 821, 424, 17, 17
|
||||
girl/eye-iris-front
|
||||
bounds: 812, 443, 18, 18
|
||||
girl/eye-white-back
|
||||
bounds: 814, 5, 20, 16
|
||||
rotate: 90
|
||||
girl/front-eyebrow
|
||||
bounds: 816, 400, 18, 12
|
||||
rotate: 90
|
||||
girl/hair-back
|
||||
bounds: 291, 363, 147, 93
|
||||
rotate: 90
|
||||
girl/hair-bangs
|
||||
bounds: 715, 419, 91, 40
|
||||
rotate: 90
|
||||
girl/hair-flap-down-front
|
||||
bounds: 288, 5, 70, 65
|
||||
girl/hair-head-side-back
|
||||
bounds: 561, 77, 30, 52
|
||||
girl/hair-head-side-front
|
||||
bounds: 757, 419, 41, 42
|
||||
rotate: 90
|
||||
girl/hair-patch
|
||||
bounds: 245, 4, 66, 41
|
||||
rotate: 90
|
||||
girl/hair-side
|
||||
bounds: 549, 3, 36, 71
|
||||
girl/hair-strand-back-1
|
||||
bounds: 684, 3, 58, 74
|
||||
girl/hair-strand-back-2
|
||||
bounds: 692, 171, 91, 58
|
||||
rotate: 90
|
||||
girl/hair-strand-back-3
|
||||
bounds: 615, 323, 92, 79
|
||||
rotate: 90
|
||||
girl/hair-strand-front-1
|
||||
bounds: 518, 269, 38, 94
|
||||
girl/hair-strand-front-2
|
||||
bounds: 593, 79, 70, 50
|
||||
girl/hair-strand-front-3
|
||||
bounds: 705, 88, 44, 81
|
||||
girl/hand-front-fingers
|
||||
bounds: 530, 365, 19, 21
|
||||
girl/hat
|
||||
bounds: 608, 169, 93, 82
|
||||
rotate: 90
|
||||
girl/leg-front
|
||||
bounds: 203, 104, 30, 158
|
||||
girl/pompom
|
||||
bounds: 757, 462, 48, 43
|
||||
rotate: 90
|
||||
girl/scarf
|
||||
bounds: 455, 143, 119, 51
|
||||
rotate: 90
|
||||
girl/scarf-back
|
||||
bounds: 420, 2, 72, 51
|
||||
rotate: 90
|
||||
girl/zip
|
||||
bounds: 356, 109, 19, 25
|
||||
rotate: 90
|
||||
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
uid="uid://cvu8lycjkd245"
|
||||
path="res://.godot/imported/mix-and-match.atlas-3d349b543ecdcc01fb29033adaef0841.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match.atlas"
|
||||
dest_files=["res://.godot/imported/mix-and-match.atlas-3d349b543ecdcc01fb29033adaef0841.spatlas"]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
BIN
spine-godot/example-v4/assets/mix-and-match/mix-and-match.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dkpeve6qcxa70"
|
||||
path="res://.godot/imported/mix-and-match.png-c2d8e28d9f2efc380ff8b95a22dadcc3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match.png"
|
||||
dest_files=["res://.godot/imported/mix-and-match.png-c2d8e28d9f2efc380ff8b95a22dadcc3.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@ -0,0 +1,16 @@
|
||||
Raggedy Spineboy.png
|
||||
size: 256, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
arm
|
||||
bounds: 2, 140, 71, 75
|
||||
rotate: 90
|
||||
head
|
||||
bounds: 2, 2, 136, 187
|
||||
rotate: 90
|
||||
leg
|
||||
bounds: 2, 213, 36, 99
|
||||
rotate: 90
|
||||
torso
|
||||
bounds: 103, 187, 62, 95
|
||||
rotate: 90
|
||||
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
uid="uid://c75mtwn6dnkwp"
|
||||
path="res://.godot/imported/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.atlas"
|
||||
dest_files=["res://.godot/imported/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas"]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
|
After Width: | Height: | Size: 31 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://couyrsq850nh6"
|
||||
path="res://.godot/imported/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.png"
|
||||
dest_files=["res://.godot/imported/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@ -0,0 +1,8 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/raggedyspineboy/Raggedy Spineboy.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/raggedyspineboy/raggedy spineboy.json" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
@ -0,0 +1,304 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "ukmbgK+14T0",
|
||||
"spine": "4.1.23-beta",
|
||||
"x": -78.45,
|
||||
"y": -9.66,
|
||||
"width": 157.48,
|
||||
"height": 364.98,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "hip", "parent": "root", "x": -0.79, "y": 82.38 },
|
||||
{ "name": "abdomen", "parent": "hip", "length": 33.5, "rotation": 89.55, "y": -0.1 },
|
||||
{ "name": "chest", "parent": "abdomen", "length": 29.58, "x": 38.08, "y": 0.73 },
|
||||
{ "name": "L-arm", "parent": "chest", "length": 32.68, "rotation": -121.23, "x": 24.64, "y": -16.69 },
|
||||
{ "name": "L-thigh", "parent": "hip", "length": 29.76, "rotation": -81.94, "x": 17.32, "y": -5.2 },
|
||||
{ "name": "L-foot", "parent": "L-thigh", "length": 37.25, "rotation": -6.29, "x": 37.36, "y": -1.79 },
|
||||
{ "name": "L-forearm", "parent": "L-arm", "length": 33.69, "rotation": -12.09, "x": 39.1, "y": -2.35 },
|
||||
{ "name": "R-arm", "parent": "chest", "length": 36.76, "rotation": 133.38, "x": 26, "y": 13.63 },
|
||||
{ "name": "R-thigh", "parent": "hip", "length": 29.49, "rotation": -93.16, "x": -18.19, "y": -6.06 },
|
||||
{ "name": "R-foot", "parent": "R-thigh", "length": 39.99, "rotation": -1.8, "x": 36.41, "y": 0.27 },
|
||||
{ "name": "R-forearm", "parent": "R-arm", "length": 36.13, "rotation": 2.73, "x": 41.66, "y": 0.28 },
|
||||
{ "name": "head", "parent": "chest", "length": 94.23, "rotation": -2.25, "x": 41.02, "y": -0.11 },
|
||||
{ "name": "scalp", "parent": "head", "length": 31.95, "rotation": -29.89, "x": 129.34, "y": 15.1 },
|
||||
{ "name": "hair1", "parent": "scalp", "length": 23.01, "rotation": 68.49, "x": 36.51, "y": 4.13 },
|
||||
{ "name": "hair2", "parent": "hair1", "length": 23.5, "rotation": 59.56, "x": 29.03, "y": 1.58 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "R-arm", "bone": "R-arm", "attachment": "arm" },
|
||||
{ "name": "L-arm", "bone": "L-arm", "attachment": "arm" },
|
||||
{ "name": "L-leg", "bone": "L-thigh", "attachment": "leg" },
|
||||
{ "name": "R-leg", "bone": "R-thigh", "attachment": "leg" },
|
||||
{ "name": "torso", "bone": "abdomen", "attachment": "torso" },
|
||||
{ "name": "head", "bone": "head", "attachment": "head" }
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"head": {
|
||||
"head": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.60755, 0.01864, 0.64146, 0.03355, 0.70227, 0.06028, 0.76687, 0.08869, 0.80696, 0.14524, 0.84158, 0.19407, 1, 0.41294, 1, 0.78562, 0.67349, 1, 0.38214, 1, 0.13935, 0.8937, 0.07949, 0.78808, 0.05899, 0.7519, 0, 0.64781, 0, 0.40213, 0.15055, 0.27784, 0.25632, 0.21734, 0.28424, 0.20137, 0.31117, 0.18597, 0.32034, 0.16739, 0.32984, 0.14814, 0.3317, 0.12798, 0.33358, 0.1076, 0.29623, 0.08869, 0.21779, 0.06978, 0.2514, 0.03195, 0.32659, 0.01699, 0.37521, 0.00732, 0.41202, 0, 0.45684, 0, 0.49046, 0, 0.53155, 0, 0.56517, 0, 0.55023, 0.1049, 0.46058, 0.06437, 0.38587, 0.05086, 0.31117, 0.04816, 0.54649, 0.17516, 0.35973, 0.28865, 0.14308, 0.41294, 0.13188, 0.57777, 0.24767, 0.43186, 0.43817, 0.37511, 0.59878, 0.3616, 0.78181, 0.43726, 0.89761, 0.53994, 0.87616, 0.37787 ],
|
||||
"triangles": [ 36, 25, 26, 35, 27, 28, 23, 25, 36, 24, 25, 23, 26, 35, 36, 35, 26, 27, 22, 36, 35, 23, 36, 22, 28, 29, 34, 35, 28, 34, 21, 35, 34, 35, 21, 22, 37, 20, 34, 37, 38, 20, 19, 20, 38, 18, 19, 38, 17, 18, 38, 2, 4, 37, 4, 2, 3, 43, 4, 5, 43, 37, 4, 42, 38, 37, 43, 42, 37, 6, 46, 5, 44, 43, 5, 39, 14, 15, 41, 15, 16, 39, 15, 41, 16, 17, 38, 41, 16, 38, 41, 38, 42, 46, 44, 5, 45, 46, 6, 44, 46, 45, 40, 14, 39, 40, 39, 41, 13, 14, 40, 12, 13, 40, 45, 6, 7, 11, 12, 40, 9, 10, 40, 11, 40, 10, 9, 41, 42, 9, 40, 41, 8, 9, 42, 42, 43, 8, 44, 8, 43, 8, 44, 45, 8, 45, 7, 34, 29, 30, 33, 31, 32, 33, 32, 0, 31, 34, 30, 34, 20, 21, 31, 33, 34, 37, 34, 33, 1, 33, 0, 2, 33, 1, 33, 2, 37 ],
|
||||
"vertices": [ 1, 14, 17.04, -22.66, 1, 3, 14, 11.42, -25.02, 0.97438, 12, 187.6, -11.93, 0.00182, 13, 63.98, 5.58, 0.02381, 2, 14, 1.36, -29.25, 0.37005, 12, 182.37, -21.52, 0.62995, 3, 14, -9.34, -33.75, 0.09775, 12, 176.82, -31.71, 0.82289, 13, 64.49, -16.93, 0.07936, 3, 14, -22.66, -31.7, 0.05494, 12, 165.13, -38.42, 0.86351, 13, 57.7, -28.58, 0.08156, 3, 14, -34.17, -29.93, 0.01796, 12, 155.03, -44.22, 0.89858, 13, 51.83, -38.64, 0.08345, 1, 12, 109.81, -70.7, 1, 1, 12, 30.84, -74.45, 1, 1, 12, -16.96, -26.55, 1, 1, 12, -19.08, 18.11, 1, 1, 12, 1.68, 56.4, 1, 1, 12, 23.63, 66.63, 1, 1, 12, 31.14, 70.14, 1, 1, 12, 52.77, 80.23, 1, 2, 12, 104.83, 82.69, 0.99074, 13, -54.93, 46.39, 0.00926, 3, 12, 132.26, 60.87, 0.88784, 13, -20.27, 41.13, 0.11168, 15, 48.07, 46.13, 4.7E-4, 4, 14, 14.49, 45.72, 0.00833, 12, 145.85, 45.26, 0.85196, 13, -0.71, 34.37, 0.12365, 15, 30.69, 34.9, 0.01605, 4, 14, 14.72, 40.26, 0.01053, 12, 149.44, 41.14, 0.84249, 13, 4.45, 32.59, 0.12681, 15, 26.1, 31.94, 0.02016, 4, 14, 14.94, 35, 0.01266, 12, 152.9, 37.17, 0.83336, 13, 9.43, 30.87, 0.12986, 15, 21.68, 29.08, 0.02412, 4, 14, 17.31, 31.55, 0.05833, 12, 156.9, 35.95, 0.60487, 13, 13.51, 31.8, 0.21603, 15, 19.9, 25.29, 0.12077, 4, 14, 19.76, 27.97, 0.10569, 12, 161.05, 34.68, 0.368, 13, 17.74, 32.78, 0.30535, 15, 18.06, 21.36, 0.22096, 4, 14, 23.06, 25.24, 0.1279, 12, 165.34, 34.6, 0.18497, 13, 21.49, 34.84, 0.23674, 15, 17.37, 17.13, 0.45039, 3, 14, 26.39, 22.47, 0.15034, 13, 25.29, 36.92, 0.16741, 15, 16.67, 12.86, 0.68225, 3, 14, 33.01, 24.76, 0.02128, 13, 25.58, 43.92, 0.03309, 15, 22, 8.32, 0.94563, 1, 15, 33.6, 3.18, 1, 1, 15, 27.7, -4.32, 1, 1, 15, 15.91, -6.38, 1, 1, 15, 8.29, -7.71, 1, 1, 15, 2.52, -8.72, 1, 2, 14, 33.8, -6.24, 0.33703, 15, -4.33, -8.07, 0.66297, 2, 14, 30.77, -10.42, 0.58778, 15, -9.46, -7.58, 0.41222, 2, 14, 27.08, -15.53, 0.81447, 15, -15.74, -6.98, 0.18553, 2, 14, 24.05, -19.7, 0.97838, 15, -20.88, -6.49, 0.02162, 1, 14, 7.37, -4.8, 1, 1, 14, 22.4, 1.3, 1, 1, 15, 7.54, 1.64, 1, 3, 14, 38.63, 17.86, 0.0046, 13, 34.06, 46.62, 0.01618, 15, 18.9, -0.03, 0.97922, 1, 13, 30.82, 1.68, 1, 3, 14, -7.07, 41.74, 7.0E-5, 12, 131.49, 28.69, 0.99828, 15, 16.34, 51.47, 0.00165, 1, 12, 103.58, 60.65, 1, 1, 12, 68.57, 60.72, 1, 1, 12, 100.33, 44.43, 1, 1, 12, 113.74, 15.8, 1, 1, 12, 117.77, -8.69, 1, 1, 12, 103.07, -37.5, 1, 1, 12, 82.15, -56.28, 1, 3, 14, -68.87, -11.37, 0.00371, 12, 116.34, -51.37, 0.97904, 13, 21.84, -64.11, 0.01725 ],
|
||||
"hull": 33,
|
||||
"edges": [ 16, 14, 16, 18, 18, 20, 26, 28, 28, 30, 44, 46, 46, 48, 48, 50, 14, 12, 10, 12, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 2, 0, 0, 64, 2, 4, 4, 6, 20, 22, 22, 24, 24, 26, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 12, 80, 26, 34, 36, 30, 32, 32, 34, 36, 38, 38, 40, 40, 42, 42, 44, 12, 92, 6, 8, 8, 10 ],
|
||||
"width": 136,
|
||||
"height": 187
|
||||
}
|
||||
},
|
||||
"L-arm": {
|
||||
"arm": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.16418, 0.90368, 0.30178, 0.80735, 0.43938, 0.75345, 0.50664, 0.71536, 0.55417, 0.66561, 0.61626, 0.63234, 0.65778, 0.59417, 0.7054, 0.45366, 0.8527, 0.31316, 1, 0.15658, 1, 0, 1, 0, 0.71458, 0.13235, 0.59074, 0.26471, 0.4669, 0.34675, 0.39836, 0.39153, 0.36096, 0.43008, 0.32876, 0.4689, 0.29633, 0.52302, 0.25113, 0.59417, 0.1917, 0.72983, 0.09585, 0.86549, 0, 1, 0, 0.15703, 0.83582, 0.46722, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.3843 ],
|
||||
"triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 27, 14, 7, 25, 6, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 1, 26, 0, 20, 21, 26, 26, 22, 0, 26, 21, 22, 22, 23, 0, 25, 14, 15 ],
|
||||
"vertices": [ 1, 4, -11.38, 11.41, 1, 1, 4, 0.99, 11.79, 1, 1, 4, 13.36, 12.18, 1, 1, 4, 19.69, 11.97, 1, 2, 4, 24.16, 11.83, 0.91748, 7, -17.58, 10.73, 0.08252, 2, 4, 30, 11.64, 0.75238, 7, -11.83, 11.77, 0.24762, 2, 4, 33.91, 11.51, 0.44551, 7, -7.98, 12.46, 0.55449, 2, 4, 38.39, 11.36, 0.2127, 7, -3.57, 13.26, 0.7873, 2, 4, 53.17, 9.61, 0.07308, 7, 11.25, 14.65, 0.92692, 2, 4, 67.95, 7.86, 0.00873, 7, 26.07, 16.03, 0.99127, 1, 7, 34.26, 8.51, 1, 1, 7, 42.44, 0.99, 1, 1, 7, 27.96, -14.77, 1, 2, 4, 50.33, -20.36, 0.05494, 7, 14.76, -15.25, 0.94506, 2, 4, 37.32, -18.06, 0.23231, 7, 1.56, -15.74, 0.76769, 2, 4, 29.76, -16.28, 0.47868, 7, -6.21, -15.58, 0.52132, 2, 4, 25.63, -15.31, 0.71242, 7, -10.45, -15.5, 0.28758, 2, 4, 22.08, -14.47, 0.81876, 7, -14.1, -15.42, 0.18124, 2, 4, 18.5, -13.63, 0.9506, 7, -17.77, -15.35, 0.0494, 2, 4, 13.51, -12.45, 0.97879, 7, -22.9, -15.25, 0.02121, 2, 4, 6.96, -10.91, 0.99704, 7, -29.63, -15.11, 0.00296, 1, 4, -4.48, -7.2, 1, 1, 4, -15.91, -3.5, 1, 1, 4, -21.43, 4.29, 1, 1, 7, 25.9, -0.53, 1, 2, 4, 31.99, -4.22, 0.80128, 7, -6.56, -3.32, 0.19872, 1, 4, 0.98, 1.89, 1, 1, 7, 9.92, 1.3, 1, 1, 4, 17.32, -0.55, 1 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ],
|
||||
"width": 71,
|
||||
"height": 75
|
||||
}
|
||||
},
|
||||
"L-leg": {
|
||||
"leg": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.23129, 1, 0.29498, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65976, 1, 0.71766, 1, 0.87399, 0.73924, 1, 0.22971, 1, 0, 0.89715, 0, 0.64818, 0.01978, 0.59915, 0.08517, 0.43712, 0.10542, 0.38694, 0.13057, 0.32459, 0.15317, 0.26859, 0.178, 0.20707, 0.26155, 0, 1, 0, 0.61186, 0.12128, 0.51632, 0.54396 ],
|
||||
"triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ],
|
||||
"vertices": [ 1, 5, 11.02, 15.15, 1, 1, 5, 17.32, 14.75, 1, 2, 5, 24.75, 14.29, 0.95577, 6, -14.29, 14.6, 0.04423, 2, 5, 32.19, 13.83, 0.71874, 6, -6.84, 14.96, 0.28126, 2, 5, 38.49, 13.44, 0.37177, 6, -0.55, 15.26, 0.62823, 2, 5, 53.36, 12.51, 0.00736, 6, 14.34, 15.96, 0.99264, 1, 6, 20.07, 16.24, 1, 1, 6, 35.53, 16.97, 1, 1, 6, 48.43, 8.19, 1, 1, 6, 49.31, -10.13, 1, 1, 6, 39.53, -18.88, 1, 2, 5, 49.98, -23.35, 0.00313, 6, 14.91, -20.05, 0.99687, 2, 5, 45.18, -22.34, 0.02543, 6, 10.03, -19.57, 0.97457, 2, 5, 29.32, -18.99, 0.4709, 6, -6.11, -17.98, 0.5291, 2, 5, 24.4, -17.96, 0.69968, 6, -11.11, -17.49, 0.30032, 2, 5, 18.3, -16.67, 0.89625, 6, -17.32, -16.88, 0.10375, 2, 5, 12.82, -15.51, 0.9779, 6, -22.89, -16.33, 0.0221, 1, 5, 6.79, -14.24, 1, 1, 5, -13.48, -9.97, 1, 1, 5, -11.83, 16.57, 1, 1, 5, -0.72, 1.88, 1, 1, 6, 3.72, -1.97, 1 ],
|
||||
"hull": 20,
|
||||
"edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ],
|
||||
"width": 36,
|
||||
"height": 99
|
||||
}
|
||||
},
|
||||
"R-arm": {
|
||||
"arm": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.16418, 0.90368, 0.30178, 0.80735, 0.43938, 0.75345, 0.50664, 0.71536, 0.55417, 0.66561, 0.61626, 0.63234, 0.65778, 0.59417, 0.7054, 0.45366, 0.8527, 0.31316, 1, 0.15658, 1, 0, 1, 0, 0.71458, 0.13235, 0.59074, 0.26471, 0.4669, 0.34675, 0.39836, 0.39153, 0.36096, 0.43008, 0.32876, 0.4689, 0.29633, 0.52302, 0.25113, 0.59417, 0.1917, 0.72983, 0.09585, 0.86549, 0, 1, 0, 0.15703, 0.83582, 0.46722, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.3843 ],
|
||||
"triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 14, 15, 25, 27, 14, 7, 25, 6, 22, 23, 0, 26, 22, 0, 1, 26, 0, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 20, 21, 26, 26, 21, 22 ],
|
||||
"vertices": [ 1, 8, -6.97, 5.03, 1, 1, 8, 5.06, 7.93, 1, 1, 8, 17.1, 10.83, 1, 2, 8, 23.34, 11.91, 0.99563, 11, -17.75, 12.49, 0.00437, 2, 8, 27.74, 12.68, 0.95467, 11, -13.31, 13.04, 0.04533, 2, 8, 33.5, 13.69, 0.75827, 11, -7.51, 13.77, 0.24173, 2, 8, 37.35, 14.36, 0.53963, 11, -3.63, 14.26, 0.46037, 2, 8, 41.77, 15.13, 0.29363, 11, 0.82, 14.82, 0.70637, 2, 8, 56.6, 16.42, 4.0E-4, 11, 15.69, 15.41, 0.9996, 1, 11, 30.56, 16, 1, 1, 11, 38.34, 8.05, 1, 1, 11, 46.11, 0.1, 1, 1, 11, 30.8, -14.86, 1, 2, 8, 59.92, -13.5, 4.8E-4, 11, 17.59, -14.64, 0.99952, 2, 8, 46.72, -13.9, 0.17385, 11, 4.38, -14.41, 0.82615, 2, 8, 38.95, -13.7, 0.5683, 11, -3.37, -13.84, 0.4317, 2, 8, 34.71, -13.59, 0.79613, 11, -7.6, -13.53, 0.20387, 2, 8, 31.06, -13.49, 0.92362, 11, -11.24, -13.26, 0.07638, 2, 8, 27.39, -13.4, 0.98278, 11, -14.9, -12.99, 0.01722, 1, 8, 22.26, -13.26, 1, 1, 8, 15.53, -13.09, 1, 1, 8, 3.58, -11.79, 1, 1, 8, -8.37, -10.49, 1, 1, 8, -15.36, -3.99, 1, 1, 11, 29.51, -0.54, 1, 2, 8, 38.68, -1.43, 0.57762, 11, -3.06, -1.58, 0.42238, 1, 8, 7.07, -1.77, 1, 1, 11, 13.64, 2.15, 1, 1, 8, 23.56, -0.83, 1 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ],
|
||||
"width": 71,
|
||||
"height": 75
|
||||
}
|
||||
},
|
||||
"R-leg": {
|
||||
"leg": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.23129, 1, 0.29498, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65976, 1, 0.71766, 1, 0.87399, 0.73924, 1, 0.22971, 1, 0, 0.89715, 0, 0.64818, 0.01978, 0.59915, 0.08517, 0.43712, 0.10542, 0.38694, 0.13057, 0.32459, 0.15317, 0.26859, 0.178, 0.20707, 0.26155, 0, 1, 0, 0.61186, 0.12128, 0.51632, 0.54396 ],
|
||||
"triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ],
|
||||
"vertices": [ 1, 9, 7.41, 14.89, 1, 2, 9, 13.71, 15.24, 0.99432, 10, -23.16, 14.24, 0.00568, 2, 9, 21.15, 15.65, 0.91831, 10, -15.74, 14.89, 0.08169, 2, 9, 28.59, 16.06, 0.65731, 10, -8.32, 15.53, 0.34269, 2, 9, 34.88, 16.4, 0.33128, 10, -2.03, 16.08, 0.66872, 2, 9, 49.77, 17.22, 0.00401, 10, 12.81, 17.36, 0.99599, 1, 10, 18.52, 17.86, 1, 1, 10, 33.94, 19.2, 1, 1, 10, 47.18, 10.92, 1, 1, 10, 48.77, -7.35, 1, 1, 10, 39.34, -16.47, 1, 2, 9, 50.6, -18.79, 0.01347, 10, 14.78, -18.6, 0.98653, 2, 9, 45.72, -18.34, 0.05687, 10, 9.88, -18.31, 0.94313, 2, 9, 29.57, -16.87, 0.66681, 10, -6.3, -17.35, 0.33319, 2, 9, 24.57, -16.42, 0.86313, 10, -11.31, -17.05, 0.13687, 2, 9, 18.36, -15.85, 0.97673, 10, -17.54, -16.68, 0.02327, 2, 9, 12.77, -15.35, 0.99935, 10, -23.13, -16.35, 6.5E-4, 1, 9, 6.64, -14.79, 1, 2, 9, -13.99, -12.91, 0.99999, 10, -49.96, -14.76, 1.0E-5, 1, 9, -15.45, 13.63, 1, 1, 9, -2.7, 0.34, 1, 2, 9, 39.28, -0.79, 0.02735, 10, 2.9, -0.97, 0.97265 ],
|
||||
"hull": 20,
|
||||
"edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ],
|
||||
"width": 36,
|
||||
"height": 99
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"torso": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.87097, 0.13351, 1, 0.26703, 1, 0.45027, 1, 0.63351, 1, 0.81676, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.72402, 0, 0.44805, 0.09823, 0.22402, 0.19646, 0, 0.4692, 0, 0.74195, 0, 0.58869, 0.13132, 0.401, 0.46063, 0.8354, 0.50156, 0.42394, 0.2675, 0.36228, 0.63166, 0.58839, 0.76773, 0.71972, 0.25773, 0.84058, 0.76485, 0.57726, 0.50305, 0.24069, 0.44016, 0.19158, 0.8008, 0.29695, 0.12289, 0.37843, 0.84006, 0.71037, 0.63433, 0.15889, 0.60896 ],
|
||||
"triangles": [ 8, 26, 28, 8, 28, 7, 9, 26, 8, 9, 10, 26, 23, 4, 5, 6, 23, 5, 7, 21, 6, 6, 21, 23, 23, 3, 4, 7, 28, 21, 26, 20, 28, 28, 20, 21, 10, 30, 26, 26, 30, 20, 20, 24, 21, 21, 29, 23, 21, 24, 29, 29, 18, 23, 23, 18, 3, 10, 11, 30, 29, 24, 18, 18, 2, 3, 30, 25, 20, 20, 17, 24, 20, 25, 17, 30, 11, 25, 2, 18, 1, 11, 12, 25, 22, 19, 16, 22, 0, 1, 19, 14, 16, 19, 27, 14, 22, 15, 0, 22, 16, 15, 12, 13, 27, 16, 14, 15, 27, 13, 14, 22, 24, 19, 1, 18, 22, 25, 27, 19, 25, 12, 27, 17, 19, 24, 24, 22, 18, 17, 25, 19 ],
|
||||
"vertices": [ 1, 3, 31.69, -23.15, 1, 2, 3, 19.07, -31.25, 0.60494, 2, 57.15, -30.53, 0.39506, 2, 3, 1.66, -31.39, 0.39506, 2, 39.74, -30.66, 0.60494, 2, 3, -15.75, -31.53, 0.20988, 2, 22.33, -30.8, 0.79012, 1, 5, -7.76, 14.89, 1, 1, 5, 9.48, 12.45, 1, 1, 5, 7.3, -2.9, 1, 2, 5, 5.13, -18.25, 0.488, 9, 5.77, 18.5, 0.512, 2, 5, 2.96, -33.59, 0.16267, 9, 6.62, 3.03, 0.83733, 3, 3, -51.05, 30.2, 0.06996, 2, -12.97, 30.92, 0.26337, 9, 7.46, -12.45, 0.66667, 1, 9, -18.72, -13.88, 1, 2, 3, 1.38, 30.61, 0.39506, 2, 39.46, 31.34, 0.60494, 2, 3, 22.71, 24.69, 0.60494, 2, 60.79, 25.41, 0.39506, 1, 3, 44.04, 18.76, 1, 1, 3, 44.18, 1.86, 1, 1, 3, 44.31, -15.05, 1, 1, 3, 31.76, -5.65, 1, 2, 3, 0.38, 5.74, 0.448, 2, 38.46, 6.47, 0.552, 2, 3, -3.29, -21.22, 0.448, 2, 34.79, -20.5, 0.552, 1, 3, 18.74, 4.46, 1, 1, 2, 22.2, 8.74, 1, 2, 2, 9.38, -5.38, 0.52, 5, -15.95, -9.73, 0.48, 1, 3, 19.82, -13.87, 1, 2, 2, 9.78, -21.01, 0.52, 5, -14.03, 5.79, 0.48, 2, 3, -3.56, -5.22, 0.448, 2, 34.52, -4.49, 0.552, 2, 3, 2.25, 15.69, 0.448, 2, 40.33, 16.42, 0.552, 2, 2, 6.04, 19.2, 0.584, 9, -12.08, -1.62, 0.416, 1, 3, 32.42, 12.44, 1, 2, 2, 2.41, 7.58, 0.584, 9, -8.99, 10.15, 0.416, 1, 2, 22.11, -12.84, 1, 1, 2, 24.25, 21.37, 1 ],
|
||||
"hull": 16,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ],
|
||||
"width": 62,
|
||||
"height": 95
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"animation": {
|
||||
"bones": {
|
||||
"abdomen": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.075, 0, 0.112, 6.52 ]
|
||||
},
|
||||
{ "time": 0.3, "value": 6.52 },
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"chest": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.092, 0, 0.137, 13.73 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3667,
|
||||
"value": 13.73,
|
||||
"curve": [ 0.469, 13.73, 0.562, 13.32 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6667,
|
||||
"value": 12.78,
|
||||
"curve": [ 0.77, 12.78, 0.842, 9.11 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9,
|
||||
"value": 9.11,
|
||||
"curve": [ 1.092, 9.11, 1.225, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"head": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.035, 0, 0.061, -5.44 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1,
|
||||
"value": -10.88,
|
||||
"curve": [ 0.183, -10.88, 0.35, 6.77 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": 6.77,
|
||||
"curve": [ 1.157, 6.77, 0.966, 0.14 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"R-arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.042, 0, 0.125, -26.35 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1667,
|
||||
"value": -26.35,
|
||||
"curve": [ 0.233, -26.35, 0.367, -6.09 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": -6.09,
|
||||
"curve": [ 0.658, -6.09, 1.108, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"L-arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.083, 0, 0.125, 53.01 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": 53.01,
|
||||
"curve": [ 0.477, 52.83, 0.538, 35.12 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6,
|
||||
"value": 35.12,
|
||||
"curve": [ 0.682, 35.12, 0.754, 56.78 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"value": 56.78,
|
||||
"curve": [ 1.128, 56.78, 1.181, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"R-forearm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.116, 0, 0.203, 4.89 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": 9.78,
|
||||
"curve": [ 0.583, 9.78, 0.804, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"L-forearm": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": 14.9,
|
||||
"curve": [ 0.143, -80.79, 0.229, 32.08 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": 32.08,
|
||||
"curve": [ 0.562, 32.08, 0.497, -11.74 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"value": -11.74,
|
||||
"curve": [ 0.814, -11.74, 0.749, 58 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9333,
|
||||
"value": 58,
|
||||
"curve": [ 1.033, 58, 1.185, 14.9 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": 14.9 }
|
||||
]
|
||||
},
|
||||
"scalp": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": -7.01,
|
||||
"curve": [ 0.095, -7.01, 0.171, -0.43 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"value": 7.61,
|
||||
"curve": [ 0.35, 4.26, 0.458, 0 ]
|
||||
},
|
||||
{ "time": 0.6667 },
|
||||
{ "time": 1.3333, "value": -7.01 }
|
||||
]
|
||||
},
|
||||
"hair1": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": -8.8,
|
||||
"curve": [ 0.067, -8.8, 0.1, -16.02 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"value": -16.02,
|
||||
"curve": [ 0.333, -16.02, 0.41, 29.39 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5333,
|
||||
"value": 29.39,
|
||||
"curve": [ 0.733, 29.39, 0.885, -8.8 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": -8.8 }
|
||||
]
|
||||
},
|
||||
"hair2": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": 4.65,
|
||||
"curve": [ 0.141, 4.65, 0.125, -17.96 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": -17.96,
|
||||
"curve": [ 0.408, -17.96, 0.494, 6.63 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"value": 6.63,
|
||||
"curve": [ 0.808, 6.63, 0.941, 4.65 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": 4.65 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.json"
|
||||
type="SpineSkeletonFileResource"
|
||||
uid="uid://bulrbalpjr863"
|
||||
path="res://.godot/imported/raggedy spineboy.json-a7000cc987b23355ac0b09613918efcc.spjson"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raggedyspineboy/raggedy spineboy.json"
|
||||
dest_files=["res://.godot/imported/raggedy spineboy.json-a7000cc987b23355ac0b09613918efcc.spjson"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
spine-godot/example-v4/assets/raptor/light-sprite.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
34
spine-godot/example-v4/assets/raptor/light-sprite.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cggfs567rn1ay"
|
||||
path="res://.godot/imported/light-sprite.png-346e910021b52658f1de723e4c80e05e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raptor/light-sprite.png"
|
||||
dest_files=["res://.godot/imported/light-sprite.png-346e910021b52658f1de723e4c80e05e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
spine-godot/example-v4/assets/raptor/n_raptor.png
Normal file
|
After Width: | Height: | Size: 518 KiB |
34
spine-godot/example-v4/assets/raptor/n_raptor.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dnjt8gyvsw0l8"
|
||||
path="res://.godot/imported/n_raptor.png-d9af68b4a56af2b4319bb485e366dc90.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raptor/n_raptor.png"
|
||||
dest_files=["res://.godot/imported/n_raptor.png-d9af68b4a56af2b4319bb485e366dc90.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
9
spine-godot/example-v4/assets/raptor/raptor-data.tres
Normal file
@ -0,0 +1,9 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/raptor/raptor.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/raptor/raptor-pro.skel" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
default_mix = 0.2
|
||||
BIN
spine-godot/example-v4/assets/raptor/raptor-pro.skel
Normal file
14
spine-godot/example-v4/assets/raptor/raptor-pro.skel.import
Normal file
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.skel"
|
||||
type="SpineSkeletonFileResource"
|
||||
uid="uid://dor8huwld4f84"
|
||||
path="res://.godot/imported/raptor-pro.skel-022e23a5f5581547a2d7faa9fb2c54e3.spskel"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raptor/raptor-pro.skel"
|
||||
dest_files=["res://.godot/imported/raptor-pro.skel-022e23a5f5581547a2d7faa9fb2c54e3.spskel"]
|
||||
|
||||
[params]
|
||||
|
||||
100
spine-godot/example-v4/assets/raptor/raptor.atlas
Normal file
@ -0,0 +1,100 @@
|
||||
raptor.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
back-arm
|
||||
bounds: 829, 88, 46, 25
|
||||
rotate: 90
|
||||
back-bracer
|
||||
bounds: 195, 238, 39, 28
|
||||
rotate: 90
|
||||
back-hand
|
||||
bounds: 724, 140, 36, 34
|
||||
rotate: 90
|
||||
back-knee
|
||||
bounds: 760, 131, 49, 67
|
||||
rotate: 90
|
||||
back-thigh
|
||||
bounds: 225, 238, 39, 24
|
||||
rotate: 90
|
||||
eyes-open
|
||||
bounds: 975, 204, 47, 45
|
||||
front-arm
|
||||
bounds: 969, 112, 48, 26
|
||||
front-bracer
|
||||
bounds: 724, 97, 41, 29
|
||||
rotate: 90
|
||||
front-hand
|
||||
bounds: 251, 239, 41, 38
|
||||
front-open-hand
|
||||
bounds: 856, 76, 43, 44
|
||||
rotate: 90
|
||||
front-thigh
|
||||
bounds: 729, 178, 57, 29
|
||||
rotate: 90
|
||||
gun
|
||||
bounds: 894, 251, 107, 103
|
||||
gun-nohand
|
||||
bounds: 764, 241, 105, 102
|
||||
head
|
||||
bounds: 756, 345, 136, 149
|
||||
lower-leg
|
||||
bounds: 475, 237, 73, 98
|
||||
rotate: 90
|
||||
mouth-grind
|
||||
bounds: 975, 172, 47, 30
|
||||
mouth-smile
|
||||
bounds: 975, 140, 47, 30
|
||||
neck
|
||||
bounds: 366, 282, 18, 21
|
||||
raptor-back-arm
|
||||
bounds: 636, 97, 82, 86
|
||||
rotate: 90
|
||||
raptor-body
|
||||
bounds: 2, 2, 632, 233
|
||||
raptor-front-arm
|
||||
bounds: 871, 168, 81, 102
|
||||
rotate: 90
|
||||
raptor-front-leg
|
||||
bounds: 2, 237, 191, 257
|
||||
raptor-hindleg-back
|
||||
bounds: 195, 279, 169, 215
|
||||
raptor-horn
|
||||
bounds: 431, 312, 182, 80
|
||||
rotate: 90
|
||||
raptor-horn-back
|
||||
bounds: 513, 318, 176, 77
|
||||
rotate: 90
|
||||
raptor-jaw
|
||||
bounds: 894, 356, 126, 138
|
||||
raptor-jaw-tooth
|
||||
bounds: 294, 240, 37, 48
|
||||
rotate: 90
|
||||
raptor-mouth-inside
|
||||
bounds: 344, 241, 36, 41
|
||||
rotate: 90
|
||||
raptor-saddle-strap-back
|
||||
bounds: 575, 242, 54, 74
|
||||
raptor-saddle-strap-front
|
||||
bounds: 764, 182, 57, 95
|
||||
rotate: 90
|
||||
raptor-saddle-w-shadow
|
||||
bounds: 592, 323, 162, 171
|
||||
raptor-tail-shadow
|
||||
bounds: 366, 305, 189, 63
|
||||
rotate: 90
|
||||
raptor-tongue
|
||||
bounds: 387, 239, 86, 64
|
||||
stirrup-back
|
||||
bounds: 829, 136, 44, 35
|
||||
rotate: 90
|
||||
stirrup-front
|
||||
bounds: 866, 121, 45, 50
|
||||
rotate: 90
|
||||
stirrup-strap
|
||||
bounds: 918, 120, 49, 46
|
||||
torso
|
||||
bounds: 636, 181, 54, 91
|
||||
rotate: 90
|
||||
visor
|
||||
bounds: 631, 237, 131, 84
|
||||
15
spine-godot/example-v4/assets/raptor/raptor.atlas.import
Normal file
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
uid="uid://dhtyf5vltqsjg"
|
||||
path="res://.godot/imported/raptor.atlas-66da4b831eebf404341993162ba3ddb8.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raptor/raptor.atlas"
|
||||
dest_files=["res://.godot/imported/raptor.atlas-66da4b831eebf404341993162ba3ddb8.spatlas"]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
BIN
spine-godot/example-v4/assets/raptor/raptor.png
Normal file
|
After Width: | Height: | Size: 411 KiB |
34
spine-godot/example-v4/assets/raptor/raptor.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ucvdpil67hul"
|
||||
path="res://.godot/imported/raptor.png-505be50f63fd1d0fb9175a9efbb9776c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raptor/raptor.png"
|
||||
dest_files=["res://.godot/imported/raptor.png-505be50f63fd1d0fb9175a9efbb9776c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@ -0,0 +1,20 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://assets/spineboy/spineboy.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/spineboy/spineboy-pro.json" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[sub_resource type="SpineAnimationMix" id=1]
|
||||
from = "idle"
|
||||
to = "run"
|
||||
mix = 0.2
|
||||
|
||||
[sub_resource type="SpineAnimationMix" id=2]
|
||||
from = "run"
|
||||
to = "idle"
|
||||
mix = 0.2
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
default_mix = 0.1
|
||||
animation_mixes = [ SubResource( 1 ), SubResource( 2 ) ]
|
||||
8707
spine-godot/example-v4/assets/spineboy/spineboy-pro.json
Normal file
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.json"
|
||||
type="SpineSkeletonFileResource"
|
||||
uid="uid://drl0og0imdkla"
|
||||
path="res://.godot/imported/spineboy-pro.json-60444223fe3960c6d4c33b92d7495419.spjson"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/spineboy/spineboy-pro.json"
|
||||
dest_files=["res://.godot/imported/spineboy-pro.json-60444223fe3960c6d4c33b92d7495419.spjson"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
spine-godot/example-v4/assets/spineboy/spineboy-pro.skel
Normal file
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.skel"
|
||||
type="SpineSkeletonFileResource"
|
||||
uid="uid://cth0eypg16cgi"
|
||||
path="res://.godot/imported/spineboy-pro.skel-52781a88227740d2a80cb8d7636ea22e.spskel"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/spineboy/spineboy-pro.skel"
|
||||
dest_files=["res://.godot/imported/spineboy-pro.skel-52781a88227740d2a80cb8d7636ea22e.spskel"]
|
||||
|
||||
[params]
|
||||
|
||||
101
spine-godot/example-v4/assets/spineboy/spineboy.atlas
Normal file
@ -0,0 +1,101 @@
|
||||
spineboy.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
crosshair
|
||||
bounds: 813, 160, 45, 45
|
||||
eye-indifferent
|
||||
bounds: 569, 2, 47, 45
|
||||
eye-surprised
|
||||
bounds: 643, 7, 47, 45
|
||||
rotate: 90
|
||||
front-bracer
|
||||
bounds: 811, 51, 29, 40
|
||||
front-fist-closed
|
||||
bounds: 807, 93, 38, 41
|
||||
front-fist-open
|
||||
bounds: 815, 210, 43, 44
|
||||
front-foot
|
||||
bounds: 706, 64, 63, 35
|
||||
rotate: 90
|
||||
front-shin
|
||||
bounds: 80, 11, 41, 92
|
||||
front-thigh
|
||||
bounds: 754, 12, 23, 56
|
||||
front-upper-arm
|
||||
bounds: 618, 5, 23, 49
|
||||
goggles
|
||||
bounds: 214, 20, 131, 83
|
||||
gun
|
||||
bounds: 347, 14, 105, 102
|
||||
rotate: 90
|
||||
head
|
||||
bounds: 80, 105, 136, 149
|
||||
hoverboard-board
|
||||
bounds: 2, 8, 246, 76
|
||||
rotate: 90
|
||||
hoverboard-thruster
|
||||
bounds: 478, 2, 30, 32
|
||||
hoverglow-small
|
||||
bounds: 218, 117, 137, 38
|
||||
rotate: 90
|
||||
mouth-grind
|
||||
bounds: 775, 80, 47, 30
|
||||
rotate: 90
|
||||
mouth-oooo
|
||||
bounds: 779, 31, 47, 30
|
||||
rotate: 90
|
||||
mouth-smile
|
||||
bounds: 783, 207, 47, 30
|
||||
rotate: 90
|
||||
muzzle-glow
|
||||
bounds: 779, 4, 25, 25
|
||||
muzzle-ring
|
||||
bounds: 451, 14, 25, 105
|
||||
muzzle01
|
||||
bounds: 664, 60, 67, 40
|
||||
rotate: 90
|
||||
muzzle02
|
||||
bounds: 580, 56, 68, 42
|
||||
rotate: 90
|
||||
muzzle03
|
||||
bounds: 478, 36, 83, 53
|
||||
rotate: 90
|
||||
muzzle04
|
||||
bounds: 533, 49, 75, 45
|
||||
rotate: 90
|
||||
muzzle05
|
||||
bounds: 624, 56, 68, 38
|
||||
rotate: 90
|
||||
neck
|
||||
bounds: 806, 8, 18, 21
|
||||
portal-bg
|
||||
bounds: 258, 121, 133, 133
|
||||
portal-flare1
|
||||
bounds: 690, 2, 56, 30
|
||||
rotate: 90
|
||||
portal-flare2
|
||||
bounds: 510, 3, 57, 31
|
||||
portal-flare3
|
||||
bounds: 722, 4, 58, 30
|
||||
rotate: 90
|
||||
portal-shade
|
||||
bounds: 393, 121, 133, 133
|
||||
portal-streaks1
|
||||
bounds: 528, 126, 126, 128
|
||||
portal-streaks2
|
||||
bounds: 656, 129, 125, 125
|
||||
rear-bracer
|
||||
bounds: 826, 13, 28, 36
|
||||
rear-foot
|
||||
bounds: 743, 70, 57, 30
|
||||
rotate: 90
|
||||
rear-shin
|
||||
bounds: 174, 14, 38, 89
|
||||
rear-thigh
|
||||
bounds: 783, 158, 28, 47
|
||||
rear-upper-arm
|
||||
bounds: 783, 136, 20, 44
|
||||
rotate: 90
|
||||
torso
|
||||
bounds: 123, 13, 49, 90
|
||||
15
spine-godot/example-v4/assets/spineboy/spineboy.atlas.import
Normal file
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
uid="uid://dt2kctrit34y0"
|
||||
path="res://.godot/imported/spineboy.atlas-54c12b5ff1cdaaa1b4e452a7d0d868c9.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/spineboy/spineboy.atlas"
|
||||
dest_files=["res://.godot/imported/spineboy.atlas-54c12b5ff1cdaaa1b4e452a7d0d868c9.spatlas"]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
BIN
spine-godot/example-v4/assets/spineboy/spineboy.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
34
spine-godot/example-v4/assets/spineboy/spineboy.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bh5imhdfuc6m0"
|
||||
path="res://.godot/imported/spineboy.png-436dbd6da2b707b6828ede17b7871f43.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/spineboy/spineboy.png"
|
||||
dest_files=["res://.godot/imported/spineboy.png-436dbd6da2b707b6828ede17b7871f43.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
7
spine-godot/example-v4/default_env.tres
Normal file
@ -0,0 +1,7 @@
|
||||
[gd_resource type="Environment" load_steps=2 format=2]
|
||||
|
||||
[sub_resource type="ProceduralSky" id=1]
|
||||
|
||||
[resource]
|
||||
background_mode = 2
|
||||
background_sky = SubResource( 1 )
|
||||
@ -0,0 +1,18 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://d0v5rhv2ysej8"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/01-helloworld/spineboy-helloworld.gd" id="1"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="3"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(505, 466)
|
||||
scale = Vector2(0.466832, 0.466832)
|
||||
skeleton_data_res = ExtResource( "3" )
|
||||
bones_color = Color(0.968627, 1, 0, 0.501961)
|
||||
paths_color = Color(1, 0.498039, 0, 0.466667)
|
||||
paths_clipping = Color(0.8, 0, 0, 0.5)
|
||||
preview_animation = "run"
|
||||
preview_frame = true
|
||||
preview_time = 0.24
|
||||
script = ExtResource( "1" )
|
||||
@ -0,0 +1,4 @@
|
||||
extends SpineSprite
|
||||
|
||||
func _ready():
|
||||
get_animation_state().set_animation("walk", true, 0)
|
||||
@ -0,0 +1,38 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var footstep_audio: AudioStreamPlayer = $FootstepAudio
|
||||
|
||||
func _animation_started(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
|
||||
print("Animation started: " + track_entry.get_animation().get_name())
|
||||
|
||||
func _animation_interrupted(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
|
||||
print("Animation interrupted: " + track_entry.get_animation().get_name())
|
||||
|
||||
func _animation_ended(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
|
||||
print("Animation ended: " + track_entry.get_animation().get_name())
|
||||
|
||||
func _animation_completed(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
|
||||
print("Animation completed: " + track_entry.get_animation().get_name())
|
||||
|
||||
func _animation_disposed(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
|
||||
print("Animation disposed: " + track_entry.get_animation().get_name())
|
||||
|
||||
func _animation_event(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry, event: SpineEvent):
|
||||
print("Animation event: " + track_entry.get_animation().get_name() + ", " + event.get_data().get_event_name())
|
||||
if (event.get_data().get_event_name() == "footstep"):
|
||||
footstep_audio.play()
|
||||
|
||||
func _ready():
|
||||
var spineboy = $Spineboy
|
||||
var animation_state = spineboy.get_animation_state()
|
||||
animation_state.set_animation("jump", false, 0)
|
||||
animation_state.add_animation("walk", 0, true, 0)
|
||||
animation_state.add_animation("run", 2, true, 0)
|
||||
|
||||
spineboy.animation_started.connect(_animation_started)
|
||||
spineboy.animation_interrupted.connect(_animation_interrupted)
|
||||
spineboy.animation_ended.connect(_animation_ended)
|
||||
spineboy.animation_completed.connect(_animation_completed)
|
||||
spineboy.animation_disposed.connect(_animation_disposed)
|
||||
spineboy.animation_event.connect(_animation_event)
|
||||
pass
|
||||
@ -0,0 +1,19 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c738i3nbdkn0h"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/02-animation-state-listeners/animation-state-listeners.gd" id="1"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="2"]
|
||||
[ext_resource type="AudioStream" uid="uid://can7k84o8svum" path="res://assets/footstep.ogg" id="3"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "1" )
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(473, 487)
|
||||
scale = Vector2(0.575051, 0.575051)
|
||||
skeleton_data_res = ExtResource( "2" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="FootstepAudio" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( "3" )
|
||||
@ -0,0 +1,22 @@
|
||||
extends SpineSprite
|
||||
|
||||
func _ready():
|
||||
var data = get_skeleton().get_data()
|
||||
var custom_skin = new_skin("custom-skin")
|
||||
var skin_base = data.find_skin("skin-base")
|
||||
custom_skin.add_skin(skin_base)
|
||||
custom_skin.add_skin(data.find_skin("nose/short"))
|
||||
custom_skin.add_skin(data.find_skin("eyelids/girly"))
|
||||
custom_skin.add_skin(data.find_skin("eyes/violet"))
|
||||
custom_skin.add_skin(data.find_skin("hair/brown"))
|
||||
custom_skin.add_skin(data.find_skin("clothes/hoodie-orange"))
|
||||
custom_skin.add_skin(data.find_skin("legs/pants-jeans"))
|
||||
custom_skin.add_skin(data.find_skin("accessories/bag"))
|
||||
custom_skin.add_skin(data.find_skin("accessories/hat-red-yellow"))
|
||||
get_skeleton().set_skin(custom_skin);
|
||||
|
||||
for el in custom_skin.get_attachments():
|
||||
var entry: SpineSkinEntry = el
|
||||
print(str(entry.get_slot_index()) + " " + entry.get_name())
|
||||
|
||||
get_animation_state().set_animation("dance", true, 0)
|
||||
@ -0,0 +1,15 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dodvuj07fsynd"]
|
||||
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/mix-and-match/mix-and-match-data.tres" id="1"]
|
||||
[ext_resource type="Script" path="res://examples/03-mix-and-match/mix-and-match.gd" id="2"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="MixAndMatch" type="SpineSprite" parent="."]
|
||||
position = Vector2(532.982, 480.287)
|
||||
scale = Vector2(0.441932, 0.441932)
|
||||
skeleton_data_res = ExtResource( "1" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( "2" )
|
||||
@ -0,0 +1,15 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bgdpghp11j3kg"]
|
||||
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="1"]
|
||||
[ext_resource type="Script" path="res://examples/04-simple-input/spineboy-simple-input.gd" id="2"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(501.503, 472.035)
|
||||
scale = Vector2(0.518624, 0.518624)
|
||||
skeleton_data_res = ExtResource( "1" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( "2" )
|
||||
@ -0,0 +1,19 @@
|
||||
extends SpineSprite
|
||||
|
||||
func _ready():
|
||||
get_animation_state().set_animation("idle", true, 0)
|
||||
|
||||
func _process(_delta):
|
||||
if Input.is_action_just_pressed("ui_left"):
|
||||
get_animation_state().set_animation("run", true, 0)
|
||||
get_skeleton().set_scale_x(-1)
|
||||
|
||||
if Input.is_action_just_released("ui_left"):
|
||||
get_animation_state().set_animation("idle", true, 0)
|
||||
|
||||
if (Input.is_action_just_pressed("ui_right")):
|
||||
get_animation_state().set_animation("run", true, 0)
|
||||
get_skeleton().set_scale_x(1)
|
||||
|
||||
if Input.is_action_just_released("ui_right"):
|
||||
get_animation_state().set_animation("idle", true, 0)
|
||||
@ -0,0 +1,11 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var spineboy: SpineSprite = $Spineboy
|
||||
@onready var crosshair_bone: SpineBoneNode = $Spineboy/CrosshairBone
|
||||
|
||||
func _ready():
|
||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||
spineboy.get_animation_state().set_animation("aim", true, 1)
|
||||
|
||||
func _process(_delta):
|
||||
crosshair_bone.global_position = get_viewport().get_mouse_position()
|
||||
@ -0,0 +1,22 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://borp2l17n5xw1"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/05-mouse-following/mouse-following.gd" id="1"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="2"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "1" )
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(481, 457)
|
||||
scale = Vector2(0.5, 0.5)
|
||||
skeleton_data_res = ExtResource( "2" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="CrosshairBone" type="SpineBoneNode" parent="Spineboy"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(302.333, -569.714)
|
||||
rotation = -0.000872665
|
||||
bone_name = "crosshair"
|
||||
bone_mode = 1
|
||||
@ -0,0 +1,5 @@
|
||||
extends Node2D
|
||||
|
||||
func _ready():
|
||||
var spineboy: SpineSprite = $Spineboy
|
||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||
@ -0,0 +1,25 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bir7yvf0qwdge"]
|
||||
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="1"]
|
||||
[ext_resource type="Script" path="res://examples/06-bone-following/bone-following.gd" id="2"]
|
||||
[ext_resource type="Texture2D" uid="uid://8ud5n2ywp5ba" path="res://icon.png" id="3"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "2" )
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(478, 483)
|
||||
scale = Vector2(0.58461, 0.58461)
|
||||
skeleton_data_res = ExtResource( "1" )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="GunTipBone" type="SpineBoneNode" parent="Spineboy"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(214.298, -162.047)
|
||||
rotation = 0.713316
|
||||
bone_name = "gun-tip"
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="Spineboy/GunTipBone"]
|
||||
texture = ExtResource( "3" )
|
||||
11
spine-godot/example-v4/examples/07-slot-node/slot-node.gd
Normal file
@ -0,0 +1,11 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var spineboy: SpineSprite = $Spineboy
|
||||
@onready var raptor: SpineSprite = $Spineboy/GunSlot/Raptor
|
||||
@onready var tiny_spineboy: SpineSprite = $Spineboy/FrontFistSlot/TinySpineboy
|
||||
|
||||
func _ready():
|
||||
var entry = spineboy.get_animation_state().set_animation("run", true, 0)
|
||||
entry.set_time_scale(0.1)
|
||||
raptor.get_animation_state().set_animation("walk", true, 0)
|
||||
tiny_spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||
56
spine-godot/example-v4/examples/07-slot-node/slot-node.tscn
Normal file
@ -0,0 +1,56 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bhht8dees2pyq"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/07-slot-node/slot-node.gd" id="1"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="2"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/raptor/raptor-data.tres" id="3"]
|
||||
[ext_resource type="Texture2D" uid="uid://8ud5n2ywp5ba" path="res://icon.png" id="4"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "1" )
|
||||
|
||||
[node name="Spineboy" type="SpineSprite" parent="."]
|
||||
position = Vector2(474, 506)
|
||||
scale = Vector2(0.560712, 0.560712)
|
||||
skeleton_data_res = ExtResource( "2" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="GunSlot" type="SpineSlotNode" parent="Spineboy"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(40.8753, -276.036)
|
||||
rotation = 0.837234
|
||||
slot_name = "gun"
|
||||
|
||||
[node name="Raptor" type="SpineSprite" parent="Spineboy/GunSlot"]
|
||||
position = Vector2(84.6909, -67.9174)
|
||||
scale = Vector2(0.193472, 0.193472)
|
||||
skeleton_data_res = ExtResource( "3" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="EyeSlot" type="SpineSlotNode" parent="Spineboy"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(-23.4598, -402.301)
|
||||
rotation = -1.71793
|
||||
slot_name = "eye"
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="Spineboy/EyeSlot"]
|
||||
position = Vector2(84.4734, 43.4469)
|
||||
rotation = 1.66344
|
||||
texture = ExtResource( "4" )
|
||||
|
||||
[node name="FrontFistSlot" type="SpineSlotNode" parent="Spineboy"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(-29.0298, -241.577)
|
||||
rotation = 0.995187
|
||||
slot_name = "front-fist"
|
||||
|
||||
[node name="TinySpineboy" type="SpineSprite" parent="Spineboy/FrontFistSlot"]
|
||||
position = Vector2(-2.64624, -10.8111)
|
||||
scale = Vector2(0.193389, 0.193389)
|
||||
skeleton_data_res = ExtResource( "2" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
@ -0,0 +1,33 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var player = $AnimationPlayer
|
||||
@onready var spineboy = $Spineboy
|
||||
|
||||
var speed = 400;
|
||||
var velocity_x = 0;
|
||||
|
||||
func _ready():
|
||||
player.play("cutscene")
|
||||
pass
|
||||
|
||||
func _process(delta):
|
||||
if (!player.is_playing()):
|
||||
if Input.is_action_just_released("ui_left"):
|
||||
spineboy.get_animation_state().set_animation("idle", true, 0)
|
||||
velocity_x = 0
|
||||
|
||||
if Input.is_action_just_released("ui_right"):
|
||||
spineboy.get_animation_state().set_animation("idle", true, 0)
|
||||
velocity_x = 0
|
||||
|
||||
if (Input.is_action_just_pressed("ui_right")):
|
||||
spineboy.get_animation_state().set_animation("run", true, 0)
|
||||
spineboy.get_skeleton().set_scale_x(1)
|
||||
velocity_x = 1
|
||||
|
||||
if Input.is_action_just_pressed("ui_left"):
|
||||
spineboy.get_animation_state().set_animation("run", true, 0)
|
||||
spineboy.get_skeleton().set_scale_x(-1)
|
||||
velocity_x = -1
|
||||
|
||||
spineboy.position.x += velocity_x * speed * delta
|
||||
@ -0,0 +1,43 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://b4p2vn7bwm52a"]
|
||||
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="1"]
|
||||
|
||||
[sub_resource type="Shader" id="1"]
|
||||
code = "shader_type canvas_item;
|
||||
|
||||
void fragment() {
|
||||
COLOR = texture(TEXTURE, UV);
|
||||
COLOR.r = 0.0;
|
||||
}"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="2"]
|
||||
shader = SubResource( "1" )
|
||||
|
||||
[sub_resource type="Shader" id="3"]
|
||||
code = "shader_type canvas_item;
|
||||
|
||||
void fragment() {
|
||||
COLOR = texture(TEXTURE, UV);
|
||||
COLOR.b = 0.0;
|
||||
}"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="4"]
|
||||
shader = SubResource( "3" )
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
position = Vector2(501, 507)
|
||||
scale = Vector2(0.546374, 0.546373)
|
||||
skeleton_data_res = ExtResource( "1" )
|
||||
normal_material = SubResource( "2" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="GunSlot" type="SpineSlotNode" parent="SpineSprite"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(40.8753, -276.036)
|
||||
rotation = 0.837234
|
||||
slot_name = "gun"
|
||||
normal_material = SubResource( "4" )
|
||||
@ -0,0 +1,4 @@
|
||||
extends Node2D
|
||||
|
||||
func _ready():
|
||||
$SpineSprite.get_animation_state().set_animation("walk");
|
||||
@ -0,0 +1,25 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://rt2llskmx7xm"]
|
||||
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/raptor/raptor-data.tres" id="1"]
|
||||
[ext_resource type="Texture2D" uid="uid://cggfs567rn1ay" path="res://assets/raptor/light-sprite.png" id="2"]
|
||||
[ext_resource type="Script" path="res://examples/10-2d-lighting/2d-lighting.gd" id="3"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "3" )
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
position = Vector2(576, 506)
|
||||
scale = Vector2(0.458967, 0.458967)
|
||||
skeleton_data_res = ExtResource( "1" )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="Light2D" type="PointLight2D" parent="."]
|
||||
position = Vector2(822, 270)
|
||||
scale = Vector2(1.51563, 1.51563)
|
||||
color = Color(1, 0.0117647, 0.0117647, 1)
|
||||
texture = ExtResource( "2" )
|
||||
|
||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||
color = Color(0.145098, 0.0980392, 0.0980392, 1)
|
||||
19
spine-godot/example-v4/examples/11-bone-node/bone-node.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var spineboy = $SpineSprite
|
||||
@onready var center_bone = $SpineSprite/HoverboardCenterBone
|
||||
@onready var center_ray = $SpineSprite/HoverboardCenterBone/RayCast2D
|
||||
@onready var target_bone = $SpineSprite/HoverboardTargetBone
|
||||
@onready var target_ray = $SpineSprite/HoverboardTargetBone/RayCast2D
|
||||
|
||||
func _ready():
|
||||
spineboy.get_animation_state().set_animation("hoverboard", true, 0)
|
||||
|
||||
func _physics_process(delta):
|
||||
if target_ray.is_colliding():
|
||||
target_bone.global_position.y = target_ray.get_collision_point().y - 50
|
||||
if center_ray.is_colliding():
|
||||
center_bone.global_position.y = center_ray.get_collision_point().y - 50
|
||||
|
||||
spineboy.global_position.x += delta * 150;
|
||||
spineboy.global_position.y = center_bone.global_position.y
|
||||
47
spine-godot/example-v4/examples/11-bone-node/bone-node.tscn
Normal file
@ -0,0 +1,47 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://chrw4i0nksphn"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/11-bone-node/bone-node.gd" id="1"]
|
||||
[ext_resource type="SpineSkeletonDataResource" path="res://assets/spineboy/spineboy-data-res.tres" id="2"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( "1" )
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
position = Vector2(8, 553)
|
||||
scale = Vector2(0.278096, 0.278096)
|
||||
skeleton_data_res = ExtResource( "2" )
|
||||
update_mode = 1
|
||||
preview_animation = "hoverboard"
|
||||
preview_frame = true
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="HoverboardCenterBone" type="SpineBoneNode" parent="SpineSprite"]
|
||||
show_behind_parent = true
|
||||
bone_name = "hoverboard-controller"
|
||||
bone_mode = 1
|
||||
|
||||
[node name="RayCast2D" type="RayCast2D" parent="SpineSprite/HoverboardCenterBone"]
|
||||
|
||||
[node name="HoverboardTargetBone" type="SpineBoneNode" parent="SpineSprite"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(262.499, 0)
|
||||
rotation = -0.000872665
|
||||
bone_name = "board-ik"
|
||||
bone_mode = 1
|
||||
|
||||
[node name="RayCast2D" type="RayCast2D" parent="SpineSprite/HoverboardTargetBone"]
|
||||
|
||||
[node name="HipBone" type="SpineBoneNode" parent="SpineSprite"]
|
||||
show_behind_parent = true
|
||||
position = Vector2(0, -169.006)
|
||||
rotation = -0.000872665
|
||||
bone_name = "hip"
|
||||
bone_mode = 1
|
||||
|
||||
[node name="Polygon2D" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 596, 309, 471, 516, 515, 762, 447, 984, 504, 1023, 505, 1024, 596)
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="Polygon2D"]
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Polygon2D/StaticBody2D"]
|
||||
polygon = PackedVector2Array(3, 592, 304, 469, 516, 514, 762, 443, 984, 499, 1252, 498, 1280, 596)
|
||||
BIN
spine-godot/example-v4/icon.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
34
spine-godot/example-v4/icon.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://8ud5n2ywp5ba"
|
||||
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.png"
|
||||
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
35
spine-godot/example-v4/project.godot
Normal file
@ -0,0 +1,35 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="spine-godot-examples"
|
||||
run/main_scene="res://examples/08-animation-player/animation-player.tscn"
|
||||
run/low_processor_mode=true
|
||||
config/icon="res://icon.png"
|
||||
config/features=PackedStringArray("4.0")
|
||||
|
||||
[global]
|
||||
|
||||
batch=false
|
||||
|
||||
[physics]
|
||||
|
||||
common/enable_pause_aware_picking=true
|
||||
|
||||
[rendering]
|
||||
|
||||
batching/parameters/max_join_item_commands=100
|
||||
batching/parameters/batch_buffer_size=65535
|
||||
batching/parameters/item_reordering_lookahead=100
|
||||
quality/driver/driver_name="GLES2"
|
||||
vram_compression/import_etc=true
|
||||
vram_compression/import_etc2=false
|
||||
environment/default_environment="res://default_env.tres"
|
||||
4
spine-godot/example-v4/tests/batch-test.gd
Normal file
@ -0,0 +1,4 @@
|
||||
extends SpineSprite
|
||||
|
||||
func _ready():
|
||||
get_animation_state().set_animation("walk", true)
|
||||
871
spine-godot/example-v4/tests/batch-test.tscn
Normal file
@ -0,0 +1,871 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/spineboy/spineboy-data-res.tres" type="SpineSkeletonDataResource" id=1]
|
||||
[ext_resource path="res://tests/batch-test.gd" type="Script" id=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
rotation = -3.67884e-05
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
position = Vector2( 53.8037, 119.483 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite2" type="SpineSprite" parent="."]
|
||||
position = Vector2( 111.488, 119.485 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite3" type="SpineSprite" parent="."]
|
||||
position = Vector2( 164.678, 119.487 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = true
|
||||
preview_time = 2.36477e-39
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite4" type="SpineSprite" parent="."]
|
||||
position = Vector2( 217.119, 121.736 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = true
|
||||
preview_time = 6.85235e-43
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite5" type="SpineSprite" parent="."]
|
||||
position = Vector2( 277.051, 120.989 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite6" type="SpineSprite" parent="."]
|
||||
position = Vector2( 337.733, 118.744 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite7" type="SpineSprite" parent="."]
|
||||
position = Vector2( 403.658, 120.994 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite8" type="SpineSprite" parent="."]
|
||||
position = Vector2( 464.34, 120.996 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite9" type="SpineSprite" parent="."]
|
||||
position = Vector2( 525.021, 120.998 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 51.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite10" type="SpineSprite" parent="."]
|
||||
position = Vector2( 589.448, 121.001 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite11" type="SpineSprite" parent="."]
|
||||
position = Vector2( 649.381, 121.752 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite12" type="SpineSprite" parent="."]
|
||||
position = Vector2( 709.313, 123.253 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite13" type="SpineSprite" parent="."]
|
||||
position = Vector2( 769.245, 119.509 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite14" type="SpineSprite" parent="."]
|
||||
position = Vector2( 830.676, 119.511 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite15" type="SpineSprite" parent="."]
|
||||
position = Vector2( 892.106, 121.761 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite16" type="SpineSprite" parent="."]
|
||||
position = Vector2( 953.537, 121.763 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite17" type="SpineSprite" parent="."]
|
||||
position = Vector2( 56.0478, 207.883 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite18" type="SpineSprite" parent="."]
|
||||
position = Vector2( 113.733, 207.885 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite19" type="SpineSprite" parent="."]
|
||||
position = Vector2( 166.923, 207.887 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite20" type="SpineSprite" parent="."]
|
||||
position = Vector2( 219.363, 210.136 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite21" type="SpineSprite" parent="."]
|
||||
position = Vector2( 279.295, 209.389 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite22" type="SpineSprite" parent="."]
|
||||
position = Vector2( 339.977, 207.144 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite23" type="SpineSprite" parent="."]
|
||||
position = Vector2( 405.902, 209.394 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite24" type="SpineSprite" parent="."]
|
||||
position = Vector2( 466.584, 209.396 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite25" type="SpineSprite" parent="."]
|
||||
position = Vector2( 527.265, 209.399 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite26" type="SpineSprite" parent="."]
|
||||
position = Vector2( 591.692, 209.401 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite27" type="SpineSprite" parent="."]
|
||||
position = Vector2( 651.625, 210.152 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite28" type="SpineSprite" parent="."]
|
||||
position = Vector2( 711.557, 211.653 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite29" type="SpineSprite" parent="."]
|
||||
position = Vector2( 771.489, 207.909 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite30" type="SpineSprite" parent="."]
|
||||
position = Vector2( 832.92, 207.911 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite31" type="SpineSprite" parent="."]
|
||||
position = Vector2( 894.351, 210.161 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite32" type="SpineSprite" parent="."]
|
||||
position = Vector2( 955.781, 210.163 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite33" type="SpineSprite" parent="."]
|
||||
position = Vector2( 60.5394, 300.778 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite34" type="SpineSprite" parent="."]
|
||||
position = Vector2( 118.224, 300.78 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite35" type="SpineSprite" parent="."]
|
||||
position = Vector2( 171.414, 300.782 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite36" type="SpineSprite" parent="."]
|
||||
position = Vector2( 223.855, 303.032 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite37" type="SpineSprite" parent="."]
|
||||
position = Vector2( 283.787, 302.285 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite38" type="SpineSprite" parent="."]
|
||||
position = Vector2( 344.468, 300.039 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite39" type="SpineSprite" parent="."]
|
||||
position = Vector2( 410.394, 302.289 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite40" type="SpineSprite" parent="."]
|
||||
position = Vector2( 471.075, 302.292 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite41" type="SpineSprite" parent="."]
|
||||
position = Vector2( 531.757, 302.294 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite42" type="SpineSprite" parent="."]
|
||||
position = Vector2( 596.184, 302.296 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite43" type="SpineSprite" parent="."]
|
||||
position = Vector2( 656.116, 303.047 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite44" type="SpineSprite" parent="."]
|
||||
position = Vector2( 716.048, 304.548 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite45" type="SpineSprite" parent="."]
|
||||
position = Vector2( 775.981, 300.804 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite46" type="SpineSprite" parent="."]
|
||||
position = Vector2( 837.411, 300.807 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite47" type="SpineSprite" parent="."]
|
||||
position = Vector2( 898.842, 303.056 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite48" type="SpineSprite" parent="."]
|
||||
position = Vector2( 960.273, 303.059 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite49" type="SpineSprite" parent="."]
|
||||
position = Vector2( 60.5361, 389.178 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite50" type="SpineSprite" parent="."]
|
||||
position = Vector2( 118.221, 389.18 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite51" type="SpineSprite" parent="."]
|
||||
position = Vector2( 171.411, 389.182 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite52" type="SpineSprite" parent="."]
|
||||
position = Vector2( 223.851, 391.432 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite53" type="SpineSprite" parent="."]
|
||||
position = Vector2( 283.784, 390.685 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite54" type="SpineSprite" parent="."]
|
||||
position = Vector2( 344.465, 388.44 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite55" type="SpineSprite" parent="."]
|
||||
position = Vector2( 410.391, 390.689 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite56" type="SpineSprite" parent="."]
|
||||
position = Vector2( 471.072, 390.692 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite57" type="SpineSprite" parent="."]
|
||||
position = Vector2( 531.753, 390.694 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite58" type="SpineSprite" parent="."]
|
||||
position = Vector2( 596.181, 390.696 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite59" type="SpineSprite" parent="."]
|
||||
position = Vector2( 656.113, 391.448 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite60" type="SpineSprite" parent="."]
|
||||
position = Vector2( 716.045, 392.948 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite61" type="SpineSprite" parent="."]
|
||||
position = Vector2( 775.978, 389.204 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite62" type="SpineSprite" parent="."]
|
||||
position = Vector2( 837.408, 389.207 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite63" type="SpineSprite" parent="."]
|
||||
position = Vector2( 898.839, 391.456 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite64" type="SpineSprite" parent="."]
|
||||
position = Vector2( 960.269, 391.459 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite65" type="SpineSprite" parent="."]
|
||||
position = Vector2( 62.0311, 477.578 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite66" type="SpineSprite" parent="."]
|
||||
position = Vector2( 119.716, 477.581 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite67" type="SpineSprite" parent="."]
|
||||
position = Vector2( 172.906, 477.583 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite68" type="SpineSprite" parent="."]
|
||||
position = Vector2( 225.346, 479.832 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite69" type="SpineSprite" parent="."]
|
||||
position = Vector2( 285.279, 479.085 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite70" type="SpineSprite" parent="."]
|
||||
position = Vector2( 345.96, 476.84 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite71" type="SpineSprite" parent="."]
|
||||
position = Vector2( 411.886, 479.09 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite72" type="SpineSprite" parent="."]
|
||||
position = Vector2( 472.567, 479.092 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite73" type="SpineSprite" parent="."]
|
||||
position = Vector2( 533.248, 479.094 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite74" type="SpineSprite" parent="."]
|
||||
position = Vector2( 597.676, 479.096 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite75" type="SpineSprite" parent="."]
|
||||
position = Vector2( 657.608, 479.848 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite76" type="SpineSprite" parent="."]
|
||||
position = Vector2( 717.54, 481.348 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite77" type="SpineSprite" parent="."]
|
||||
position = Vector2( 777.473, 477.605 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite78" type="SpineSprite" parent="."]
|
||||
position = Vector2( 838.903, 477.607 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite79" type="SpineSprite" parent="."]
|
||||
position = Vector2( 900.334, 479.857 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite80" type="SpineSprite" parent="."]
|
||||
position = Vector2( 961.765, 479.859 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite81" type="SpineSprite" parent="."]
|
||||
position = Vector2( 66.5229, 562.233 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite82" type="SpineSprite" parent="."]
|
||||
position = Vector2( 124.208, 562.235 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite83" type="SpineSprite" parent="."]
|
||||
position = Vector2( 177.398, 562.237 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite84" type="SpineSprite" parent="."]
|
||||
position = Vector2( 229.838, 564.486 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite85" type="SpineSprite" parent="."]
|
||||
position = Vector2( 289.77, 563.74 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite86" type="SpineSprite" parent="."]
|
||||
position = Vector2( 350.452, 561.494 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite87" type="SpineSprite" parent="."]
|
||||
position = Vector2( 416.377, 563.744 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite88" type="SpineSprite" parent="."]
|
||||
position = Vector2( 477.059, 563.746 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite89" type="SpineSprite" parent="."]
|
||||
position = Vector2( 537.74, 563.749 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite90" type="SpineSprite" parent="."]
|
||||
position = Vector2( 602.167, 563.751 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite91" type="SpineSprite" parent="."]
|
||||
position = Vector2( 662.1, 564.502 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite92" type="SpineSprite" parent="."]
|
||||
position = Vector2( 722.032, 566.003 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite93" type="SpineSprite" parent="."]
|
||||
position = Vector2( 781.964, 562.259 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite94" type="SpineSprite" parent="."]
|
||||
position = Vector2( 843.395, 562.261 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite95" type="SpineSprite" parent="."]
|
||||
position = Vector2( 904.826, 564.511 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="SpineSprite96" type="SpineSprite" parent="."]
|
||||
position = Vector2( 966.256, 564.513 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
script = ExtResource( 2 )
|
||||
53
spine-godot/example-v4/tests/ragdoll.tscn
Normal file
@ -0,0 +1,53 @@
|
||||
[gd_scene format=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="A" type="RigidBody2D" parent="."]
|
||||
position = Vector2( 483, 158 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="A"]
|
||||
position = Vector2( 6, 17 )
|
||||
polygon = PoolVector2Array( -38, 6, 28, 6, 28, -45, -40, -45 )
|
||||
__meta__ = {
|
||||
"_edit_lock_": true
|
||||
}
|
||||
|
||||
[node name="B" type="RigidBody2D" parent="."]
|
||||
position = Vector2( 484, 228 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="B"]
|
||||
position = Vector2( 6, 17 )
|
||||
polygon = PoolVector2Array( -38, 6, 28, 6, 28, -45, -40, -45 )
|
||||
__meta__ = {
|
||||
"_edit_lock_": true
|
||||
}
|
||||
|
||||
[node name="C" type="RigidBody2D" parent="."]
|
||||
position = Vector2( 485, 296 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="C"]
|
||||
position = Vector2( 6, 17 )
|
||||
polygon = PoolVector2Array( -38, 6, 28, 6, 28, -45, -40, -45 )
|
||||
__meta__ = {
|
||||
"_edit_lock_": true
|
||||
}
|
||||
|
||||
[node name="PinJoint2D" type="PinJoint2D" parent="."]
|
||||
position = Vector2( 484, 189 )
|
||||
node_a = NodePath("../A")
|
||||
node_b = NodePath("../B")
|
||||
bias = 0.9
|
||||
disable_collision = false
|
||||
|
||||
[node name="PinJoint2D2" type="PinJoint2D" parent="."]
|
||||
position = Vector2( 486, 257 )
|
||||
node_a = NodePath("../B")
|
||||
node_b = NodePath("../C")
|
||||
bias = 0.9
|
||||
disable_collision = false
|
||||
|
||||
[node name="Ground" type="StaticBody2D" parent="."]
|
||||
position = Vector2( 489, 478 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Ground"]
|
||||
polygon = PoolVector2Array( -116, -4, 128, -100, 204, 34, -156, 48 )
|
||||
26
spine-godot/example-v4/tests/transforms.tscn
Normal file
@ -0,0 +1,26 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/spineboy/spineboy-data-res.tres" type="SpineSkeletonDataResource" id=1]
|
||||
[ext_resource path="res://icon.png" type="Texture" id=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
position = Vector2( 459.397, 501.236 )
|
||||
scale = Vector2( 0.742335, 0.742335 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = "aim"
|
||||
preview_frame = true
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="SpineBoneNode" type="SpineBoneNode" parent="SpineSprite"]
|
||||
position = Vector2( 40.8752, -276.036 )
|
||||
rotation = 0.837234
|
||||
bone_name = "gun"
|
||||
bone_mode = 1
|
||||
enabled = false
|
||||
color = Color( 0, 1, 0.0627451, 0.466667 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="SpineSprite/SpineBoneNode"]
|
||||
visible = false
|
||||
texture = ExtResource( 2 )
|
||||
39
spine-godot/example-v4/tests/unit-tests.gd
Normal file
@ -0,0 +1,39 @@
|
||||
extends SpineSprite
|
||||
|
||||
func test_spine_animation():
|
||||
var walkAnim: SpineAnimation = get_skeleton().get_data().find_animation("walk")
|
||||
assert(walkAnim.get_name() == "walk")
|
||||
var duration = walkAnim.get_duration()
|
||||
walkAnim.set_duration(duration + 1)
|
||||
assert(walkAnim.get_duration() == duration + 1)
|
||||
assert(walkAnim.get_timelines().size() == 39)
|
||||
var timeline: SpineTimeline = walkAnim.get_timelines()[0]
|
||||
var propertyIds = timeline.get_property_ids()
|
||||
assert(walkAnim.has_timeline(propertyIds))
|
||||
assert(!walkAnim.has_timeline([0]))
|
||||
|
||||
func test_spine_timeline():
|
||||
var walkAnim: SpineAnimation = get_skeleton().get_data().find_animation("walk")
|
||||
var timeline: SpineTimeline = walkAnim.get_timelines()[0]
|
||||
assert(timeline.get_duration() == 1)
|
||||
assert(timeline.get_property_ids() == [4294967300])
|
||||
assert(timeline.get_type() == "RotateTimeline")
|
||||
|
||||
func test_spine_object_invalidation():
|
||||
var skeleton_data = get_skeleton().get_data()
|
||||
var bone_data = skeleton_data.find_bone("gun");
|
||||
var old_bone_data_x = bone_data.get_x();
|
||||
var bone = get_skeleton().find_bone("gun")
|
||||
var old_bone_x = bone.get_x()
|
||||
skeleton_data_res = null
|
||||
assert(old_bone_x != bone.get_x())
|
||||
assert(old_bone_data_x == bone_data.get_x())
|
||||
skeleton_data.atlas_res = null;
|
||||
assert(old_bone_data_x != bone_data.get_x())
|
||||
|
||||
func _ready():
|
||||
|
||||
test_spine_animation()
|
||||
test_spine_timeline()
|
||||
test_spine_object_invalidation()
|
||||
print("All tests passed")
|
||||
12
spine-godot/example-v4/tests/unit-tests.tscn
Normal file
@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://tests/unit-tests.gd" type="Script" id=1]
|
||||
[ext_resource path="res://assets/spineboy/spineboy-data-res.tres" type="SpineSkeletonDataResource" id=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
position = Vector2( 496.659, 431.634 )
|
||||
scale = Vector2( 0.7, 0.7 )
|
||||
|
||||
[node name="SpineSprite" type="SpineSprite" parent="."]
|
||||
skeleton_data_res = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
BIN
spine-godot/example/assets/footstep.ogg
Normal file
15
spine-godot/example/assets/footstep.ogg.import
Normal file
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/footstep.ogg-789c3f1e3c4e0ca3bebcb13f1160f623.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/footstep.ogg"
|
||||
dest_files=[ "res://.import/footstep.ogg-789c3f1e3c4e0ca3bebcb13f1160f623.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
@ -0,0 +1,10 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/mix-and-match/mix-and-match.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/mix-and-match/mix-and-match-pro.json" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
animations = null
|
||||
skins = null
|
||||
8001
spine-godot/example/assets/mix-and-match/mix-and-match-pro.json
Normal file
@ -0,0 +1,13 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.json"
|
||||
type="SpineSkeletonFileResource"
|
||||
path="res://.import/mix-and-match-pro.json-57325a5014e6fd56fc4a86824bc458ea.spjson"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match-pro.json"
|
||||
dest_files=[ "res://.import/mix-and-match-pro.json-57325a5014e6fd56fc4a86824bc458ea.spjson" ]
|
||||
|
||||
[params]
|
||||
|
||||
362
spine-godot/example/assets/mix-and-match/mix-and-match.atlas
Normal file
@ -0,0 +1,362 @@
|
||||
mix-and-match.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
base-head
|
||||
bounds: 587, 2, 95, 73
|
||||
boy/arm-front
|
||||
bounds: 558, 271, 36, 115
|
||||
boy/backpack
|
||||
bounds: 235, 109, 119, 153
|
||||
boy/backpack-pocket
|
||||
bounds: 328, 73, 34, 62
|
||||
rotate: 90
|
||||
boy/backpack-strap-front
|
||||
bounds: 665, 79, 38, 88
|
||||
boy/backpack-up
|
||||
bounds: 395, 364, 21, 70
|
||||
rotate: 90
|
||||
boy/body
|
||||
bounds: 251, 264, 97, 132
|
||||
rotate: 90
|
||||
boy/boot-ribbon-front
|
||||
bounds: 648, 131, 9, 11
|
||||
boy/collar
|
||||
bounds: 744, 4, 73, 29
|
||||
rotate: 90
|
||||
boy/ear
|
||||
bounds: 383, 109, 19, 23
|
||||
rotate: 90
|
||||
boy/eye-back-low-eyelid
|
||||
bounds: 739, 284, 17, 6
|
||||
rotate: 90
|
||||
boy/eye-back-pupil
|
||||
bounds: 832, 443, 8, 9
|
||||
rotate: 90
|
||||
boy/eye-back-up-eyelid
|
||||
bounds: 558, 264, 23, 5
|
||||
boy/eye-back-up-eyelid-back
|
||||
bounds: 802, 491, 19, 10
|
||||
rotate: 90
|
||||
boy/eye-front-low-eyelid
|
||||
bounds: 386, 363, 22, 7
|
||||
rotate: 90
|
||||
boy/eye-front-pupil
|
||||
bounds: 816, 389, 9, 9
|
||||
boy/eye-front-up-eyelid
|
||||
bounds: 160, 71, 31, 6
|
||||
rotate: 90
|
||||
boy/eye-front-up-eyelid-back
|
||||
bounds: 801, 434, 26, 9
|
||||
rotate: 90
|
||||
boy/eye-iris-back
|
||||
bounds: 618, 264, 17, 17
|
||||
boy/eye-iris-front
|
||||
bounds: 727, 264, 18, 18
|
||||
boy/eye-white-back
|
||||
bounds: 580, 131, 20, 12
|
||||
boy/eye-white-front
|
||||
bounds: 510, 130, 27, 13
|
||||
boy/eyebrow-back
|
||||
bounds: 751, 88, 20, 11
|
||||
rotate: 90
|
||||
boy/eyebrow-front
|
||||
bounds: 483, 130, 25, 11
|
||||
boy/hair-back
|
||||
bounds: 494, 388, 122, 81
|
||||
rotate: 90
|
||||
boy/hair-bangs
|
||||
bounds: 667, 284, 70, 37
|
||||
boy/hair-side
|
||||
bounds: 789, 374, 25, 43
|
||||
boy/hand-backfingers
|
||||
bounds: 467, 364, 19, 21
|
||||
boy/hand-front-fingers
|
||||
bounds: 488, 364, 19, 21
|
||||
boy/hat
|
||||
bounds: 615, 417, 93, 56
|
||||
rotate: 90
|
||||
boy/leg-front
|
||||
bounds: 138, 104, 31, 158
|
||||
boy/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl-blue-cape/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl-spring-dress/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
girl/mouth-close
|
||||
bounds: 551, 365, 21, 5
|
||||
rotate: 90
|
||||
boy/mouth-smile
|
||||
bounds: 705, 79, 29, 7
|
||||
boy/nose
|
||||
bounds: 836, 473, 17, 10
|
||||
rotate: 90
|
||||
boy/pompom
|
||||
bounds: 747, 273, 48, 43
|
||||
rotate: 90
|
||||
boy/zip
|
||||
bounds: 648, 144, 14, 23
|
||||
girl-blue-cape/back-eyebrow
|
||||
bounds: 602, 131, 18, 12
|
||||
girl-blue-cape/body-dress
|
||||
bounds: 2, 264, 109, 246
|
||||
girl-blue-cape/body-ribbon
|
||||
bounds: 615, 283, 50, 38
|
||||
girl-blue-cape/cape-back
|
||||
bounds: 2, 69, 134, 193
|
||||
girl-blue-cape/cape-back-up
|
||||
bounds: 386, 387, 123, 106
|
||||
rotate: 90
|
||||
girl-blue-cape/cape-ribbon
|
||||
bounds: 675, 264, 50, 18
|
||||
girl-blue-cape/cape-shoulder-back
|
||||
bounds: 751, 110, 49, 59
|
||||
girl-blue-cape/cape-shoulder-front
|
||||
bounds: 113, 264, 62, 76
|
||||
rotate: 90
|
||||
girl-blue-cape/cape-up-front
|
||||
bounds: 399, 264, 98, 117
|
||||
rotate: 90
|
||||
girl-blue-cape/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl-spring-dress/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl/ear
|
||||
bounds: 775, 2, 19, 23
|
||||
girl-blue-cape/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl-spring-dress/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl/eye-back-low-eyelid
|
||||
bounds: 802, 463, 17, 6
|
||||
girl-blue-cape/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl-spring-dress/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl/eye-back-pupil
|
||||
bounds: 816, 367, 8, 9
|
||||
girl-blue-cape/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl-spring-dress/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl/eye-back-up-eyelid
|
||||
bounds: 554, 131, 24, 12
|
||||
girl-blue-cape/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl/eye-back-up-eyelid-back
|
||||
bounds: 832, 453, 17, 11
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl/eye-front-low-eyelid
|
||||
bounds: 739, 303, 18, 6
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl-spring-dress/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl/eye-front-pupil
|
||||
bounds: 816, 378, 9, 9
|
||||
girl-blue-cape/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl/eye-front-up-eyelid
|
||||
bounds: 392, 77, 30, 14
|
||||
rotate: 90
|
||||
girl-blue-cape/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl-spring-dress/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl/eye-front-up-eyelid-back
|
||||
bounds: 455, 130, 26, 11
|
||||
girl-blue-cape/eye-iris-back
|
||||
bounds: 637, 264, 17, 17
|
||||
girl-blue-cape/eye-iris-front
|
||||
bounds: 802, 471, 18, 18
|
||||
girl-blue-cape/eye-white-back
|
||||
bounds: 596, 264, 20, 16
|
||||
girl-spring-dress/eye-white-back
|
||||
bounds: 596, 264, 20, 16
|
||||
girl-blue-cape/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl/eye-white-front
|
||||
bounds: 796, 5, 20, 16
|
||||
rotate: 90
|
||||
girl-blue-cape/front-eyebrow
|
||||
bounds: 608, 149, 18, 12
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-back
|
||||
bounds: 508, 145, 117, 98
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-bangs
|
||||
bounds: 673, 419, 91, 40
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-head-side-back
|
||||
bounds: 196, 331, 30, 52
|
||||
rotate: 90
|
||||
girl-blue-cape/hair-head-side-front
|
||||
bounds: 738, 323, 41, 42
|
||||
girl-blue-cape/hair-side
|
||||
bounds: 473, 3, 36, 71
|
||||
girl-blue-cape/hand-front-fingers
|
||||
bounds: 509, 365, 19, 21
|
||||
girl-spring-dress/hand-front-fingers
|
||||
bounds: 509, 365, 19, 21
|
||||
girl-blue-cape/leg-front
|
||||
bounds: 168, 72, 30, 158
|
||||
rotate: 90
|
||||
girl-blue-cape/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl-spring-dress/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl/mouth-smile
|
||||
bounds: 736, 79, 29, 7
|
||||
girl-blue-cape/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl-spring-dress/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl/nose
|
||||
bounds: 747, 264, 11, 7
|
||||
girl-blue-cape/sleeve-back
|
||||
bounds: 767, 79, 42, 29
|
||||
girl-blue-cape/sleeve-front
|
||||
bounds: 408, 76, 52, 119
|
||||
rotate: 90
|
||||
girl-spring-dress/arm-front
|
||||
bounds: 596, 282, 17, 111
|
||||
girl-spring-dress/back-eyebrow
|
||||
bounds: 801, 420, 18, 12
|
||||
girl-spring-dress/body-up
|
||||
bounds: 179, 4, 64, 66
|
||||
girl-spring-dress/cloak-down
|
||||
bounds: 775, 27, 50, 50
|
||||
girl-spring-dress/cloak-up
|
||||
bounds: 360, 7, 64, 58
|
||||
rotate: 90
|
||||
girl-spring-dress/eye-iris-back
|
||||
bounds: 656, 264, 17, 17
|
||||
girl-spring-dress/eye-iris-front
|
||||
bounds: 814, 492, 18, 18
|
||||
girl-spring-dress/front-eyebrow
|
||||
bounds: 822, 472, 18, 12
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-back
|
||||
bounds: 196, 363, 147, 93
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-bangs
|
||||
bounds: 696, 326, 91, 40
|
||||
rotate: 90
|
||||
girl-spring-dress/hair-head-side-back
|
||||
bounds: 529, 76, 30, 52
|
||||
girl-spring-dress/hair-head-side-front
|
||||
bounds: 781, 323, 41, 42
|
||||
girl-spring-dress/hair-side
|
||||
bounds: 511, 3, 36, 71
|
||||
girl-spring-dress/leg-front
|
||||
bounds: 171, 104, 30, 158
|
||||
girl-spring-dress/neck
|
||||
bounds: 138, 70, 20, 32
|
||||
girl-spring-dress/shoulder-ribbon
|
||||
bounds: 622, 131, 36, 24
|
||||
rotate: 90
|
||||
girl-spring-dress/skirt
|
||||
bounds: 113, 328, 182, 81
|
||||
rotate: 90
|
||||
girl-spring-dress/underskirt
|
||||
bounds: 2, 2, 175, 65
|
||||
girl/arm-front
|
||||
bounds: 577, 395, 36, 115
|
||||
girl/back-eyebrow
|
||||
bounds: 834, 492, 18, 12
|
||||
rotate: 90
|
||||
girl/bag-base
|
||||
bounds: 191, 264, 62, 58
|
||||
rotate: 90
|
||||
girl/bag-strap-front
|
||||
bounds: 385, 265, 12, 96
|
||||
girl/bag-top
|
||||
bounds: 738, 367, 49, 50
|
||||
girl/body
|
||||
bounds: 356, 130, 97, 132
|
||||
girl/boot-ribbon-front
|
||||
bounds: 539, 130, 13, 13
|
||||
girl/eye-iris-back
|
||||
bounds: 821, 424, 17, 17
|
||||
girl/eye-iris-front
|
||||
bounds: 812, 443, 18, 18
|
||||
girl/eye-white-back
|
||||
bounds: 814, 5, 20, 16
|
||||
rotate: 90
|
||||
girl/front-eyebrow
|
||||
bounds: 816, 400, 18, 12
|
||||
rotate: 90
|
||||
girl/hair-back
|
||||
bounds: 291, 363, 147, 93
|
||||
rotate: 90
|
||||
girl/hair-bangs
|
||||
bounds: 715, 419, 91, 40
|
||||
rotate: 90
|
||||
girl/hair-flap-down-front
|
||||
bounds: 288, 5, 70, 65
|
||||
girl/hair-head-side-back
|
||||
bounds: 561, 77, 30, 52
|
||||
girl/hair-head-side-front
|
||||
bounds: 757, 419, 41, 42
|
||||
rotate: 90
|
||||
girl/hair-patch
|
||||
bounds: 245, 4, 66, 41
|
||||
rotate: 90
|
||||
girl/hair-side
|
||||
bounds: 549, 3, 36, 71
|
||||
girl/hair-strand-back-1
|
||||
bounds: 684, 3, 58, 74
|
||||
girl/hair-strand-back-2
|
||||
bounds: 692, 171, 91, 58
|
||||
rotate: 90
|
||||
girl/hair-strand-back-3
|
||||
bounds: 615, 323, 92, 79
|
||||
rotate: 90
|
||||
girl/hair-strand-front-1
|
||||
bounds: 518, 269, 38, 94
|
||||
girl/hair-strand-front-2
|
||||
bounds: 593, 79, 70, 50
|
||||
girl/hair-strand-front-3
|
||||
bounds: 705, 88, 44, 81
|
||||
girl/hand-front-fingers
|
||||
bounds: 530, 365, 19, 21
|
||||
girl/hat
|
||||
bounds: 608, 169, 93, 82
|
||||
rotate: 90
|
||||
girl/leg-front
|
||||
bounds: 203, 104, 30, 158
|
||||
girl/pompom
|
||||
bounds: 757, 462, 48, 43
|
||||
rotate: 90
|
||||
girl/scarf
|
||||
bounds: 455, 143, 119, 51
|
||||
rotate: 90
|
||||
girl/scarf-back
|
||||
bounds: 420, 2, 72, 51
|
||||
rotate: 90
|
||||
girl/zip
|
||||
bounds: 356, 109, 19, 25
|
||||
rotate: 90
|
||||
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
path="res://.import/mix-and-match.atlas-3d349b543ecdcc01fb29033adaef0841.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match.atlas"
|
||||
dest_files=[ "res://.import/mix-and-match.atlas-3d349b543ecdcc01fb29033adaef0841.spatlas" ]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
BIN
spine-godot/example/assets/mix-and-match/mix-and-match.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/mix-and-match.png-c2d8e28d9f2efc380ff8b95a22dadcc3.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/mix-and-match/mix-and-match.png"
|
||||
dest_files=[ "res://.import/mix-and-match.png-c2d8e28d9f2efc380ff8b95a22dadcc3.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
@ -0,0 +1,16 @@
|
||||
Raggedy Spineboy.png
|
||||
size: 256, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
arm
|
||||
bounds: 2, 140, 71, 75
|
||||
rotate: 90
|
||||
head
|
||||
bounds: 2, 2, 136, 187
|
||||
rotate: 90
|
||||
leg
|
||||
bounds: 2, 213, 36, 99
|
||||
rotate: 90
|
||||
torso
|
||||
bounds: 103, 187, 62, 95
|
||||
rotate: 90
|
||||
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="spine.atlas"
|
||||
type="SpineAtlasResource"
|
||||
path="res://.import/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.atlas"
|
||||
dest_files=[ "res://.import/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas" ]
|
||||
|
||||
[params]
|
||||
|
||||
normal_map_prefix="n"
|
||||
BIN
spine-godot/example/assets/raggedyspineboy/Raggedy Spineboy.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.png"
|
||||
dest_files=[ "res://.import/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
@ -0,0 +1,8 @@
|
||||
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/raggedyspineboy/Raggedy Spineboy.atlas" type="SpineAtlasResource" id=1]
|
||||
[ext_resource path="res://assets/raggedyspineboy/raggedy spineboy.json" type="SpineSkeletonFileResource" id=2]
|
||||
|
||||
[resource]
|
||||
atlas_res = ExtResource( 1 )
|
||||
skeleton_file_res = ExtResource( 2 )
|
||||
304
spine-godot/example/assets/raggedyspineboy/raggedy spineboy.json
Normal file
@ -0,0 +1,304 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "ukmbgK+14T0",
|
||||
"spine": "4.1.23-beta",
|
||||
"x": -78.45,
|
||||
"y": -9.66,
|
||||
"width": 157.48,
|
||||
"height": 364.98,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "hip", "parent": "root", "x": -0.79, "y": 82.38 },
|
||||
{ "name": "abdomen", "parent": "hip", "length": 33.5, "rotation": 89.55, "y": -0.1 },
|
||||
{ "name": "chest", "parent": "abdomen", "length": 29.58, "x": 38.08, "y": 0.73 },
|
||||
{ "name": "L-arm", "parent": "chest", "length": 32.68, "rotation": -121.23, "x": 24.64, "y": -16.69 },
|
||||
{ "name": "L-thigh", "parent": "hip", "length": 29.76, "rotation": -81.94, "x": 17.32, "y": -5.2 },
|
||||
{ "name": "L-foot", "parent": "L-thigh", "length": 37.25, "rotation": -6.29, "x": 37.36, "y": -1.79 },
|
||||
{ "name": "L-forearm", "parent": "L-arm", "length": 33.69, "rotation": -12.09, "x": 39.1, "y": -2.35 },
|
||||
{ "name": "R-arm", "parent": "chest", "length": 36.76, "rotation": 133.38, "x": 26, "y": 13.63 },
|
||||
{ "name": "R-thigh", "parent": "hip", "length": 29.49, "rotation": -93.16, "x": -18.19, "y": -6.06 },
|
||||
{ "name": "R-foot", "parent": "R-thigh", "length": 39.99, "rotation": -1.8, "x": 36.41, "y": 0.27 },
|
||||
{ "name": "R-forearm", "parent": "R-arm", "length": 36.13, "rotation": 2.73, "x": 41.66, "y": 0.28 },
|
||||
{ "name": "head", "parent": "chest", "length": 94.23, "rotation": -2.25, "x": 41.02, "y": -0.11 },
|
||||
{ "name": "scalp", "parent": "head", "length": 31.95, "rotation": -29.89, "x": 129.34, "y": 15.1 },
|
||||
{ "name": "hair1", "parent": "scalp", "length": 23.01, "rotation": 68.49, "x": 36.51, "y": 4.13 },
|
||||
{ "name": "hair2", "parent": "hair1", "length": 23.5, "rotation": 59.56, "x": 29.03, "y": 1.58 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "R-arm", "bone": "R-arm", "attachment": "arm" },
|
||||
{ "name": "L-arm", "bone": "L-arm", "attachment": "arm" },
|
||||
{ "name": "L-leg", "bone": "L-thigh", "attachment": "leg" },
|
||||
{ "name": "R-leg", "bone": "R-thigh", "attachment": "leg" },
|
||||
{ "name": "torso", "bone": "abdomen", "attachment": "torso" },
|
||||
{ "name": "head", "bone": "head", "attachment": "head" }
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"head": {
|
||||
"head": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.60755, 0.01864, 0.64146, 0.03355, 0.70227, 0.06028, 0.76687, 0.08869, 0.80696, 0.14524, 0.84158, 0.19407, 1, 0.41294, 1, 0.78562, 0.67349, 1, 0.38214, 1, 0.13935, 0.8937, 0.07949, 0.78808, 0.05899, 0.7519, 0, 0.64781, 0, 0.40213, 0.15055, 0.27784, 0.25632, 0.21734, 0.28424, 0.20137, 0.31117, 0.18597, 0.32034, 0.16739, 0.32984, 0.14814, 0.3317, 0.12798, 0.33358, 0.1076, 0.29623, 0.08869, 0.21779, 0.06978, 0.2514, 0.03195, 0.32659, 0.01699, 0.37521, 0.00732, 0.41202, 0, 0.45684, 0, 0.49046, 0, 0.53155, 0, 0.56517, 0, 0.55023, 0.1049, 0.46058, 0.06437, 0.38587, 0.05086, 0.31117, 0.04816, 0.54649, 0.17516, 0.35973, 0.28865, 0.14308, 0.41294, 0.13188, 0.57777, 0.24767, 0.43186, 0.43817, 0.37511, 0.59878, 0.3616, 0.78181, 0.43726, 0.89761, 0.53994, 0.87616, 0.37787 ],
|
||||
"triangles": [ 36, 25, 26, 35, 27, 28, 23, 25, 36, 24, 25, 23, 26, 35, 36, 35, 26, 27, 22, 36, 35, 23, 36, 22, 28, 29, 34, 35, 28, 34, 21, 35, 34, 35, 21, 22, 37, 20, 34, 37, 38, 20, 19, 20, 38, 18, 19, 38, 17, 18, 38, 2, 4, 37, 4, 2, 3, 43, 4, 5, 43, 37, 4, 42, 38, 37, 43, 42, 37, 6, 46, 5, 44, 43, 5, 39, 14, 15, 41, 15, 16, 39, 15, 41, 16, 17, 38, 41, 16, 38, 41, 38, 42, 46, 44, 5, 45, 46, 6, 44, 46, 45, 40, 14, 39, 40, 39, 41, 13, 14, 40, 12, 13, 40, 45, 6, 7, 11, 12, 40, 9, 10, 40, 11, 40, 10, 9, 41, 42, 9, 40, 41, 8, 9, 42, 42, 43, 8, 44, 8, 43, 8, 44, 45, 8, 45, 7, 34, 29, 30, 33, 31, 32, 33, 32, 0, 31, 34, 30, 34, 20, 21, 31, 33, 34, 37, 34, 33, 1, 33, 0, 2, 33, 1, 33, 2, 37 ],
|
||||
"vertices": [ 1, 14, 17.04, -22.66, 1, 3, 14, 11.42, -25.02, 0.97438, 12, 187.6, -11.93, 0.00182, 13, 63.98, 5.58, 0.02381, 2, 14, 1.36, -29.25, 0.37005, 12, 182.37, -21.52, 0.62995, 3, 14, -9.34, -33.75, 0.09775, 12, 176.82, -31.71, 0.82289, 13, 64.49, -16.93, 0.07936, 3, 14, -22.66, -31.7, 0.05494, 12, 165.13, -38.42, 0.86351, 13, 57.7, -28.58, 0.08156, 3, 14, -34.17, -29.93, 0.01796, 12, 155.03, -44.22, 0.89858, 13, 51.83, -38.64, 0.08345, 1, 12, 109.81, -70.7, 1, 1, 12, 30.84, -74.45, 1, 1, 12, -16.96, -26.55, 1, 1, 12, -19.08, 18.11, 1, 1, 12, 1.68, 56.4, 1, 1, 12, 23.63, 66.63, 1, 1, 12, 31.14, 70.14, 1, 1, 12, 52.77, 80.23, 1, 2, 12, 104.83, 82.69, 0.99074, 13, -54.93, 46.39, 0.00926, 3, 12, 132.26, 60.87, 0.88784, 13, -20.27, 41.13, 0.11168, 15, 48.07, 46.13, 4.7E-4, 4, 14, 14.49, 45.72, 0.00833, 12, 145.85, 45.26, 0.85196, 13, -0.71, 34.37, 0.12365, 15, 30.69, 34.9, 0.01605, 4, 14, 14.72, 40.26, 0.01053, 12, 149.44, 41.14, 0.84249, 13, 4.45, 32.59, 0.12681, 15, 26.1, 31.94, 0.02016, 4, 14, 14.94, 35, 0.01266, 12, 152.9, 37.17, 0.83336, 13, 9.43, 30.87, 0.12986, 15, 21.68, 29.08, 0.02412, 4, 14, 17.31, 31.55, 0.05833, 12, 156.9, 35.95, 0.60487, 13, 13.51, 31.8, 0.21603, 15, 19.9, 25.29, 0.12077, 4, 14, 19.76, 27.97, 0.10569, 12, 161.05, 34.68, 0.368, 13, 17.74, 32.78, 0.30535, 15, 18.06, 21.36, 0.22096, 4, 14, 23.06, 25.24, 0.1279, 12, 165.34, 34.6, 0.18497, 13, 21.49, 34.84, 0.23674, 15, 17.37, 17.13, 0.45039, 3, 14, 26.39, 22.47, 0.15034, 13, 25.29, 36.92, 0.16741, 15, 16.67, 12.86, 0.68225, 3, 14, 33.01, 24.76, 0.02128, 13, 25.58, 43.92, 0.03309, 15, 22, 8.32, 0.94563, 1, 15, 33.6, 3.18, 1, 1, 15, 27.7, -4.32, 1, 1, 15, 15.91, -6.38, 1, 1, 15, 8.29, -7.71, 1, 1, 15, 2.52, -8.72, 1, 2, 14, 33.8, -6.24, 0.33703, 15, -4.33, -8.07, 0.66297, 2, 14, 30.77, -10.42, 0.58778, 15, -9.46, -7.58, 0.41222, 2, 14, 27.08, -15.53, 0.81447, 15, -15.74, -6.98, 0.18553, 2, 14, 24.05, -19.7, 0.97838, 15, -20.88, -6.49, 0.02162, 1, 14, 7.37, -4.8, 1, 1, 14, 22.4, 1.3, 1, 1, 15, 7.54, 1.64, 1, 3, 14, 38.63, 17.86, 0.0046, 13, 34.06, 46.62, 0.01618, 15, 18.9, -0.03, 0.97922, 1, 13, 30.82, 1.68, 1, 3, 14, -7.07, 41.74, 7.0E-5, 12, 131.49, 28.69, 0.99828, 15, 16.34, 51.47, 0.00165, 1, 12, 103.58, 60.65, 1, 1, 12, 68.57, 60.72, 1, 1, 12, 100.33, 44.43, 1, 1, 12, 113.74, 15.8, 1, 1, 12, 117.77, -8.69, 1, 1, 12, 103.07, -37.5, 1, 1, 12, 82.15, -56.28, 1, 3, 14, -68.87, -11.37, 0.00371, 12, 116.34, -51.37, 0.97904, 13, 21.84, -64.11, 0.01725 ],
|
||||
"hull": 33,
|
||||
"edges": [ 16, 14, 16, 18, 18, 20, 26, 28, 28, 30, 44, 46, 46, 48, 48, 50, 14, 12, 10, 12, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 2, 0, 0, 64, 2, 4, 4, 6, 20, 22, 22, 24, 24, 26, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 12, 80, 26, 34, 36, 30, 32, 32, 34, 36, 38, 38, 40, 40, 42, 42, 44, 12, 92, 6, 8, 8, 10 ],
|
||||
"width": 136,
|
||||
"height": 187
|
||||
}
|
||||
},
|
||||
"L-arm": {
|
||||
"arm": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.16418, 0.90368, 0.30178, 0.80735, 0.43938, 0.75345, 0.50664, 0.71536, 0.55417, 0.66561, 0.61626, 0.63234, 0.65778, 0.59417, 0.7054, 0.45366, 0.8527, 0.31316, 1, 0.15658, 1, 0, 1, 0, 0.71458, 0.13235, 0.59074, 0.26471, 0.4669, 0.34675, 0.39836, 0.39153, 0.36096, 0.43008, 0.32876, 0.4689, 0.29633, 0.52302, 0.25113, 0.59417, 0.1917, 0.72983, 0.09585, 0.86549, 0, 1, 0, 0.15703, 0.83582, 0.46722, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.3843 ],
|
||||
"triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 27, 14, 7, 25, 6, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 1, 26, 0, 20, 21, 26, 26, 22, 0, 26, 21, 22, 22, 23, 0, 25, 14, 15 ],
|
||||
"vertices": [ 1, 4, -11.38, 11.41, 1, 1, 4, 0.99, 11.79, 1, 1, 4, 13.36, 12.18, 1, 1, 4, 19.69, 11.97, 1, 2, 4, 24.16, 11.83, 0.91748, 7, -17.58, 10.73, 0.08252, 2, 4, 30, 11.64, 0.75238, 7, -11.83, 11.77, 0.24762, 2, 4, 33.91, 11.51, 0.44551, 7, -7.98, 12.46, 0.55449, 2, 4, 38.39, 11.36, 0.2127, 7, -3.57, 13.26, 0.7873, 2, 4, 53.17, 9.61, 0.07308, 7, 11.25, 14.65, 0.92692, 2, 4, 67.95, 7.86, 0.00873, 7, 26.07, 16.03, 0.99127, 1, 7, 34.26, 8.51, 1, 1, 7, 42.44, 0.99, 1, 1, 7, 27.96, -14.77, 1, 2, 4, 50.33, -20.36, 0.05494, 7, 14.76, -15.25, 0.94506, 2, 4, 37.32, -18.06, 0.23231, 7, 1.56, -15.74, 0.76769, 2, 4, 29.76, -16.28, 0.47868, 7, -6.21, -15.58, 0.52132, 2, 4, 25.63, -15.31, 0.71242, 7, -10.45, -15.5, 0.28758, 2, 4, 22.08, -14.47, 0.81876, 7, -14.1, -15.42, 0.18124, 2, 4, 18.5, -13.63, 0.9506, 7, -17.77, -15.35, 0.0494, 2, 4, 13.51, -12.45, 0.97879, 7, -22.9, -15.25, 0.02121, 2, 4, 6.96, -10.91, 0.99704, 7, -29.63, -15.11, 0.00296, 1, 4, -4.48, -7.2, 1, 1, 4, -15.91, -3.5, 1, 1, 4, -21.43, 4.29, 1, 1, 7, 25.9, -0.53, 1, 2, 4, 31.99, -4.22, 0.80128, 7, -6.56, -3.32, 0.19872, 1, 4, 0.98, 1.89, 1, 1, 7, 9.92, 1.3, 1, 1, 4, 17.32, -0.55, 1 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ],
|
||||
"width": 71,
|
||||
"height": 75
|
||||
}
|
||||
},
|
||||
"L-leg": {
|
||||
"leg": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.23129, 1, 0.29498, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65976, 1, 0.71766, 1, 0.87399, 0.73924, 1, 0.22971, 1, 0, 0.89715, 0, 0.64818, 0.01978, 0.59915, 0.08517, 0.43712, 0.10542, 0.38694, 0.13057, 0.32459, 0.15317, 0.26859, 0.178, 0.20707, 0.26155, 0, 1, 0, 0.61186, 0.12128, 0.51632, 0.54396 ],
|
||||
"triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ],
|
||||
"vertices": [ 1, 5, 11.02, 15.15, 1, 1, 5, 17.32, 14.75, 1, 2, 5, 24.75, 14.29, 0.95577, 6, -14.29, 14.6, 0.04423, 2, 5, 32.19, 13.83, 0.71874, 6, -6.84, 14.96, 0.28126, 2, 5, 38.49, 13.44, 0.37177, 6, -0.55, 15.26, 0.62823, 2, 5, 53.36, 12.51, 0.00736, 6, 14.34, 15.96, 0.99264, 1, 6, 20.07, 16.24, 1, 1, 6, 35.53, 16.97, 1, 1, 6, 48.43, 8.19, 1, 1, 6, 49.31, -10.13, 1, 1, 6, 39.53, -18.88, 1, 2, 5, 49.98, -23.35, 0.00313, 6, 14.91, -20.05, 0.99687, 2, 5, 45.18, -22.34, 0.02543, 6, 10.03, -19.57, 0.97457, 2, 5, 29.32, -18.99, 0.4709, 6, -6.11, -17.98, 0.5291, 2, 5, 24.4, -17.96, 0.69968, 6, -11.11, -17.49, 0.30032, 2, 5, 18.3, -16.67, 0.89625, 6, -17.32, -16.88, 0.10375, 2, 5, 12.82, -15.51, 0.9779, 6, -22.89, -16.33, 0.0221, 1, 5, 6.79, -14.24, 1, 1, 5, -13.48, -9.97, 1, 1, 5, -11.83, 16.57, 1, 1, 5, -0.72, 1.88, 1, 1, 6, 3.72, -1.97, 1 ],
|
||||
"hull": 20,
|
||||
"edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ],
|
||||
"width": 36,
|
||||
"height": 99
|
||||
}
|
||||
},
|
||||
"R-arm": {
|
||||
"arm": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.16418, 0.90368, 0.30178, 0.80735, 0.43938, 0.75345, 0.50664, 0.71536, 0.55417, 0.66561, 0.61626, 0.63234, 0.65778, 0.59417, 0.7054, 0.45366, 0.8527, 0.31316, 1, 0.15658, 1, 0, 1, 0, 0.71458, 0.13235, 0.59074, 0.26471, 0.4669, 0.34675, 0.39836, 0.39153, 0.36096, 0.43008, 0.32876, 0.4689, 0.29633, 0.52302, 0.25113, 0.59417, 0.1917, 0.72983, 0.09585, 0.86549, 0, 1, 0, 0.15703, 0.83582, 0.46722, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.3843 ],
|
||||
"triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 14, 15, 25, 27, 14, 7, 25, 6, 22, 23, 0, 26, 22, 0, 1, 26, 0, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 20, 21, 26, 26, 21, 22 ],
|
||||
"vertices": [ 1, 8, -6.97, 5.03, 1, 1, 8, 5.06, 7.93, 1, 1, 8, 17.1, 10.83, 1, 2, 8, 23.34, 11.91, 0.99563, 11, -17.75, 12.49, 0.00437, 2, 8, 27.74, 12.68, 0.95467, 11, -13.31, 13.04, 0.04533, 2, 8, 33.5, 13.69, 0.75827, 11, -7.51, 13.77, 0.24173, 2, 8, 37.35, 14.36, 0.53963, 11, -3.63, 14.26, 0.46037, 2, 8, 41.77, 15.13, 0.29363, 11, 0.82, 14.82, 0.70637, 2, 8, 56.6, 16.42, 4.0E-4, 11, 15.69, 15.41, 0.9996, 1, 11, 30.56, 16, 1, 1, 11, 38.34, 8.05, 1, 1, 11, 46.11, 0.1, 1, 1, 11, 30.8, -14.86, 1, 2, 8, 59.92, -13.5, 4.8E-4, 11, 17.59, -14.64, 0.99952, 2, 8, 46.72, -13.9, 0.17385, 11, 4.38, -14.41, 0.82615, 2, 8, 38.95, -13.7, 0.5683, 11, -3.37, -13.84, 0.4317, 2, 8, 34.71, -13.59, 0.79613, 11, -7.6, -13.53, 0.20387, 2, 8, 31.06, -13.49, 0.92362, 11, -11.24, -13.26, 0.07638, 2, 8, 27.39, -13.4, 0.98278, 11, -14.9, -12.99, 0.01722, 1, 8, 22.26, -13.26, 1, 1, 8, 15.53, -13.09, 1, 1, 8, 3.58, -11.79, 1, 1, 8, -8.37, -10.49, 1, 1, 8, -15.36, -3.99, 1, 1, 11, 29.51, -0.54, 1, 2, 8, 38.68, -1.43, 0.57762, 11, -3.06, -1.58, 0.42238, 1, 8, 7.07, -1.77, 1, 1, 11, 13.64, 2.15, 1, 1, 8, 23.56, -0.83, 1 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ],
|
||||
"width": 71,
|
||||
"height": 75
|
||||
}
|
||||
},
|
||||
"R-leg": {
|
||||
"leg": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.23129, 1, 0.29498, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65976, 1, 0.71766, 1, 0.87399, 0.73924, 1, 0.22971, 1, 0, 0.89715, 0, 0.64818, 0.01978, 0.59915, 0.08517, 0.43712, 0.10542, 0.38694, 0.13057, 0.32459, 0.15317, 0.26859, 0.178, 0.20707, 0.26155, 0, 1, 0, 0.61186, 0.12128, 0.51632, 0.54396 ],
|
||||
"triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ],
|
||||
"vertices": [ 1, 9, 7.41, 14.89, 1, 2, 9, 13.71, 15.24, 0.99432, 10, -23.16, 14.24, 0.00568, 2, 9, 21.15, 15.65, 0.91831, 10, -15.74, 14.89, 0.08169, 2, 9, 28.59, 16.06, 0.65731, 10, -8.32, 15.53, 0.34269, 2, 9, 34.88, 16.4, 0.33128, 10, -2.03, 16.08, 0.66872, 2, 9, 49.77, 17.22, 0.00401, 10, 12.81, 17.36, 0.99599, 1, 10, 18.52, 17.86, 1, 1, 10, 33.94, 19.2, 1, 1, 10, 47.18, 10.92, 1, 1, 10, 48.77, -7.35, 1, 1, 10, 39.34, -16.47, 1, 2, 9, 50.6, -18.79, 0.01347, 10, 14.78, -18.6, 0.98653, 2, 9, 45.72, -18.34, 0.05687, 10, 9.88, -18.31, 0.94313, 2, 9, 29.57, -16.87, 0.66681, 10, -6.3, -17.35, 0.33319, 2, 9, 24.57, -16.42, 0.86313, 10, -11.31, -17.05, 0.13687, 2, 9, 18.36, -15.85, 0.97673, 10, -17.54, -16.68, 0.02327, 2, 9, 12.77, -15.35, 0.99935, 10, -23.13, -16.35, 6.5E-4, 1, 9, 6.64, -14.79, 1, 2, 9, -13.99, -12.91, 0.99999, 10, -49.96, -14.76, 1.0E-5, 1, 9, -15.45, 13.63, 1, 1, 9, -2.7, 0.34, 1, 2, 9, 39.28, -0.79, 0.02735, 10, 2.9, -0.97, 0.97265 ],
|
||||
"hull": 20,
|
||||
"edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ],
|
||||
"width": 36,
|
||||
"height": 99
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"torso": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.87097, 0.13351, 1, 0.26703, 1, 0.45027, 1, 0.63351, 1, 0.81676, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.72402, 0, 0.44805, 0.09823, 0.22402, 0.19646, 0, 0.4692, 0, 0.74195, 0, 0.58869, 0.13132, 0.401, 0.46063, 0.8354, 0.50156, 0.42394, 0.2675, 0.36228, 0.63166, 0.58839, 0.76773, 0.71972, 0.25773, 0.84058, 0.76485, 0.57726, 0.50305, 0.24069, 0.44016, 0.19158, 0.8008, 0.29695, 0.12289, 0.37843, 0.84006, 0.71037, 0.63433, 0.15889, 0.60896 ],
|
||||
"triangles": [ 8, 26, 28, 8, 28, 7, 9, 26, 8, 9, 10, 26, 23, 4, 5, 6, 23, 5, 7, 21, 6, 6, 21, 23, 23, 3, 4, 7, 28, 21, 26, 20, 28, 28, 20, 21, 10, 30, 26, 26, 30, 20, 20, 24, 21, 21, 29, 23, 21, 24, 29, 29, 18, 23, 23, 18, 3, 10, 11, 30, 29, 24, 18, 18, 2, 3, 30, 25, 20, 20, 17, 24, 20, 25, 17, 30, 11, 25, 2, 18, 1, 11, 12, 25, 22, 19, 16, 22, 0, 1, 19, 14, 16, 19, 27, 14, 22, 15, 0, 22, 16, 15, 12, 13, 27, 16, 14, 15, 27, 13, 14, 22, 24, 19, 1, 18, 22, 25, 27, 19, 25, 12, 27, 17, 19, 24, 24, 22, 18, 17, 25, 19 ],
|
||||
"vertices": [ 1, 3, 31.69, -23.15, 1, 2, 3, 19.07, -31.25, 0.60494, 2, 57.15, -30.53, 0.39506, 2, 3, 1.66, -31.39, 0.39506, 2, 39.74, -30.66, 0.60494, 2, 3, -15.75, -31.53, 0.20988, 2, 22.33, -30.8, 0.79012, 1, 5, -7.76, 14.89, 1, 1, 5, 9.48, 12.45, 1, 1, 5, 7.3, -2.9, 1, 2, 5, 5.13, -18.25, 0.488, 9, 5.77, 18.5, 0.512, 2, 5, 2.96, -33.59, 0.16267, 9, 6.62, 3.03, 0.83733, 3, 3, -51.05, 30.2, 0.06996, 2, -12.97, 30.92, 0.26337, 9, 7.46, -12.45, 0.66667, 1, 9, -18.72, -13.88, 1, 2, 3, 1.38, 30.61, 0.39506, 2, 39.46, 31.34, 0.60494, 2, 3, 22.71, 24.69, 0.60494, 2, 60.79, 25.41, 0.39506, 1, 3, 44.04, 18.76, 1, 1, 3, 44.18, 1.86, 1, 1, 3, 44.31, -15.05, 1, 1, 3, 31.76, -5.65, 1, 2, 3, 0.38, 5.74, 0.448, 2, 38.46, 6.47, 0.552, 2, 3, -3.29, -21.22, 0.448, 2, 34.79, -20.5, 0.552, 1, 3, 18.74, 4.46, 1, 1, 2, 22.2, 8.74, 1, 2, 2, 9.38, -5.38, 0.52, 5, -15.95, -9.73, 0.48, 1, 3, 19.82, -13.87, 1, 2, 2, 9.78, -21.01, 0.52, 5, -14.03, 5.79, 0.48, 2, 3, -3.56, -5.22, 0.448, 2, 34.52, -4.49, 0.552, 2, 3, 2.25, 15.69, 0.448, 2, 40.33, 16.42, 0.552, 2, 2, 6.04, 19.2, 0.584, 9, -12.08, -1.62, 0.416, 1, 3, 32.42, 12.44, 1, 2, 2, 2.41, 7.58, 0.584, 9, -8.99, 10.15, 0.416, 1, 2, 22.11, -12.84, 1, 1, 2, 24.25, 21.37, 1 ],
|
||||
"hull": 16,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ],
|
||||
"width": 62,
|
||||
"height": 95
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"animation": {
|
||||
"bones": {
|
||||
"abdomen": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.075, 0, 0.112, 6.52 ]
|
||||
},
|
||||
{ "time": 0.3, "value": 6.52 },
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"chest": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.092, 0, 0.137, 13.73 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3667,
|
||||
"value": 13.73,
|
||||
"curve": [ 0.469, 13.73, 0.562, 13.32 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6667,
|
||||
"value": 12.78,
|
||||
"curve": [ 0.77, 12.78, 0.842, 9.11 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9,
|
||||
"value": 9.11,
|
||||
"curve": [ 1.092, 9.11, 1.225, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"head": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.035, 0, 0.061, -5.44 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1,
|
||||
"value": -10.88,
|
||||
"curve": [ 0.183, -10.88, 0.35, 6.77 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": 6.77,
|
||||
"curve": [ 1.157, 6.77, 0.966, 0.14 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"R-arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.042, 0, 0.125, -26.35 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1667,
|
||||
"value": -26.35,
|
||||
"curve": [ 0.233, -26.35, 0.367, -6.09 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": -6.09,
|
||||
"curve": [ 0.658, -6.09, 1.108, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"L-arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.083, 0, 0.125, 53.01 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": 53.01,
|
||||
"curve": [ 0.477, 52.83, 0.538, 35.12 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6,
|
||||
"value": 35.12,
|
||||
"curve": [ 0.682, 35.12, 0.754, 56.78 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"value": 56.78,
|
||||
"curve": [ 1.128, 56.78, 1.181, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"R-forearm": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.116, 0, 0.203, 4.89 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": 9.78,
|
||||
"curve": [ 0.583, 9.78, 0.804, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 }
|
||||
]
|
||||
},
|
||||
"L-forearm": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": 14.9,
|
||||
"curve": [ 0.143, -80.79, 0.229, 32.08 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": 32.08,
|
||||
"curve": [ 0.562, 32.08, 0.497, -11.74 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"value": -11.74,
|
||||
"curve": [ 0.814, -11.74, 0.749, 58 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9333,
|
||||
"value": 58,
|
||||
"curve": [ 1.033, 58, 1.185, 14.9 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": 14.9 }
|
||||
]
|
||||
},
|
||||
"scalp": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": -7.01,
|
||||
"curve": [ 0.095, -7.01, 0.171, -0.43 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"value": 7.61,
|
||||
"curve": [ 0.35, 4.26, 0.458, 0 ]
|
||||
},
|
||||
{ "time": 0.6667 },
|
||||
{ "time": 1.3333, "value": -7.01 }
|
||||
]
|
||||
},
|
||||
"hair1": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": -8.8,
|
||||
"curve": [ 0.067, -8.8, 0.1, -16.02 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"value": -16.02,
|
||||
"curve": [ 0.333, -16.02, 0.41, 29.39 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5333,
|
||||
"value": 29.39,
|
||||
"curve": [ 0.733, 29.39, 0.885, -8.8 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": -8.8 }
|
||||
]
|
||||
},
|
||||
"hair2": {
|
||||
"rotate": [
|
||||
{
|
||||
"value": 4.65,
|
||||
"curve": [ 0.141, 4.65, 0.125, -17.96 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"value": -17.96,
|
||||
"curve": [ 0.408, -17.96, 0.494, 6.63 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"value": 6.63,
|
||||
"curve": [ 0.808, 6.63, 0.941, 4.65 ]
|
||||
},
|
||||
{ "time": 1.3333, "value": 4.65 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||