Merge branch '4.2' into 4.3-beta
# Conflicts: # spine-ts/package.json # spine-unity/Assets/Spine/package.json
@ -95,7 +95,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-macos-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/macos/macos.framework/*
|
||||
path: spine-godot/example-v4-extension/bin/macos/**/*
|
||||
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
@ -117,7 +117,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-ios-${{ env.GODOT_TAG }}
|
||||
path: spine-godot/example-v4-extension/bin/ios/*.xcframework/**/*
|
||||
path: spine-godot/example-v4-extension/bin/ios/**/*
|
||||
|
||||
build-android:
|
||||
runs-on: ubuntu-latest
|
||||
@ -252,7 +252,7 @@ jobs:
|
||||
# Move artifacts to their correct locations
|
||||
mv gdextension-windows-$GODOT_TAG/* bin/windows/
|
||||
mv gdextension-linux-x86_64-$GODOT_TAG/* bin/linux/
|
||||
mv gdextension-macos-$GODOT_TAG/* bin/macos/macos.framework/
|
||||
mv gdextension-macos-$GODOT_TAG/* bin/macos/
|
||||
mv gdextension-ios-$GODOT_TAG/* bin/ios/
|
||||
mv gdextension-android-$GODOT_TAG/* bin/android/
|
||||
mv gdextension-web-$GODOT_TAG/* bin/web/
|
||||
|
||||
1
.gitignore
vendored
@ -144,6 +144,7 @@ spine-ts/spine-core/dist
|
||||
spine-ts/spine-canvas/dist
|
||||
spine-ts/spine-webgl/dist
|
||||
spine-ts/spine-player/dist
|
||||
spine-ts/spine-webcomponents/dist
|
||||
spine-ts/spine-threejs/dist
|
||||
spine-ts/spine-phaser-v3/dist
|
||||
spine-ts/spine-phaser-v4/dist
|
||||
|
||||
@ -409,291 +409,110 @@ cp -f ../snowglobe/export/* "$ROOT/spine-sfml/cpp/data/"
|
||||
cp -f ../cloud-pot/export/* "$ROOT/spine-sfml/cpp/data/"
|
||||
|
||||
echo "spine-ts"
|
||||
rm "$ROOT/spine-ts/spine-webgl/example/assets/"*
|
||||
cp -f ../coin/export/coin-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
rm "$ROOT/spine-ts/assets/"*
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../chibi-stickers/export/chibi-stickers.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../chibi-stickers/export/chibi-stickers.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../chibi-stickers/export/chibi-stickers.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../chibi-stickers/export/chibi-stickers-pma* "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../goblins/export/goblins-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../goblins/export/goblins-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../goblins/export/goblins-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../goblins/export/goblins-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../dragon/export/dragon-ess.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../dragon/export/dragon-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../dragon/export/dragon-pma*.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../coin/export/coin-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../dragon/export/dragon-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../dragon/export/dragon-pma*.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../goblins/export/goblins-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../goblins/export/goblins-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../goblins/export/goblins-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../goblins/export/goblins-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../tank/export/tank-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../tank/export/tank-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../tank/export/tank-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../tank/export/tank-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../vine/export/vine-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../vine/export/vine-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../vine/export/vine-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../vine/export/vine-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../owl/export/owl-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../owl/export/owl-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../owl/export/owl-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../owl/export/owl-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../owl/export/owl-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../owl/export/owl-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../owl/export/owl-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../owl/export/owl-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/export/raptor-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy-ess.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-webgl/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-canvas/example/assets/"*
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-canvas/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-ess.json "$ROOT/spine-ts/spine-canvas/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-canvas/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-canvas/example/assets/"
|
||||
cp -f ../tank/export/tank-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../tank/export/tank-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../tank/export/tank-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../tank/export/tank-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-canvaskit/example/assets/"*
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../vine/export/vine-pro.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../vine/export/vine-pro.skel "$ROOT/spine-ts/assets/"
|
||||
cp -f ../vine/export/vine-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../vine/export/vine-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/celestial-circus-pro.json "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus.atlas "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
cp -f ../celestial-circus/export/celestial-circus.png "$ROOT/spine-ts/spine-canvaskit/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-threejs/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.json "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-threejs/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-player/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-player/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-phaser-v3/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../windmill/export/windmill-ess.json "$ROOT/spine-ts/assets/"
|
||||
cp -f ../windmill/export/windmill-pma.atlas "$ROOT/spine-ts/assets/"
|
||||
cp -f ../windmill/export/windmill-pma.png "$ROOT/spine-ts/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/spine-phaser-v3/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-phaser-v4/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../raptor/export/raptor-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack.atlas "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../sack/export/sack.png "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-ts/spine-phaser-v4/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-pixi-v7/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-pixi-v7/example/assets/"
|
||||
|
||||
rm "$ROOT/spine-ts/spine-pixi-v8/example/assets/"*
|
||||
cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/export/raptor.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/export/raptor.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../raptor/images/raptor-jaw-tooth.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/typescript/assets/"
|
||||
|
||||
cp -f ../coin/export/coin-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../coin/export/coin-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../dragon/export/dragon-ess.json "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon.atlas "$ROOT/spine-pixi-v8/example/assets/"
|
||||
cp -f ../dragon/export/dragon*.png "$ROOT/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../stretchyman/export/stretchyman-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../stretchyman/export/stretchyman-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../celestial-circus/export/* "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../cloud-pot/export/cloud-pot-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../sack/export/sack-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.atlas "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../sack/export/sack-pma.png "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
cp -f ../snowglobe/export/snowglobe-pma* "$ROOT/spine-ts/spine-pixi-v8/example/assets/"
|
||||
|
||||
echo "spine-monogame"
|
||||
rm "$ROOT/spine-monogame/spine-monogame-example/data/"*
|
||||
|
||||
@ -852,10 +852,11 @@ spAnimationState_addAnimation(spAnimationState *self, int trackIndex, spAnimatio
|
||||
if (!last) {
|
||||
_spAnimationState_setCurrent(self, trackIndex, entry, 1);
|
||||
_spEventQueue_drain(internal->queue);
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last->next = entry;
|
||||
entry->previous = last;
|
||||
if (delay <= 0) delay += spTrackEntry_getTrackComplete(last) - entry->mixDuration;
|
||||
if (delay <= 0) delay = MAX(delay + spTrackEntry_getTrackComplete(last) - entry->mixDuration, 0);
|
||||
}
|
||||
|
||||
entry->delay = delay;
|
||||
@ -872,7 +873,7 @@ spTrackEntry *spAnimationState_setEmptyAnimation(spAnimationState *self, int tra
|
||||
spTrackEntry *
|
||||
spAnimationState_addEmptyAnimation(spAnimationState *self, int trackIndex, float mixDuration, float delay) {
|
||||
spTrackEntry *entry = spAnimationState_addAnimation(self, trackIndex, SP_EMPTY_ANIMATION, 0, delay);
|
||||
if (delay <= 0) entry->delay += entry->mixDuration - mixDuration;
|
||||
if (delay <= 0) entry->delay = MAX(entry->delay + entry->mixDuration - mixDuration, 0);
|
||||
entry->mixDuration = mixDuration;
|
||||
entry->trackEnd = mixDuration;
|
||||
return entry;
|
||||
@ -1061,7 +1062,12 @@ float spTrackEntry_getTrackComplete(spTrackEntry *entry) {
|
||||
|
||||
void spTrackEntry_setMixDuration(spTrackEntry *entry, float mixDuration, float delay) {
|
||||
entry->mixDuration = mixDuration;
|
||||
if (entry->previous && delay <= 0) delay += spTrackEntry_getTrackComplete(entry) - mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (entry->previous)
|
||||
delay = MAX(delay + spTrackEntry_getTrackComplete(entry->previous) - mixDuration, 0);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
entry->delay = delay;
|
||||
}
|
||||
|
||||
|
||||
@ -39,6 +39,9 @@ namespace spine {
|
||||
template<typename T>
|
||||
class SP_API Vector : public SpineObject {
|
||||
public:
|
||||
using size_type = size_t;
|
||||
using value_type = T;
|
||||
|
||||
Vector() : _size(0), _capacity(0), _buffer(NULL) {
|
||||
}
|
||||
|
||||
@ -77,7 +80,11 @@ namespace spine {
|
||||
size_t oldSize = _size;
|
||||
_size = newSize;
|
||||
if (_capacity < newSize) {
|
||||
_capacity = (int) (_size * 1.75f);
|
||||
if (_capacity == 0) {
|
||||
_capacity = _size;
|
||||
} else {
|
||||
_capacity = (int) (_size * 1.75f);
|
||||
}
|
||||
if (_capacity < 8) _capacity = 8;
|
||||
_buffer = spine::SpineExtension::realloc<T>(_buffer, _capacity, __FILE__, __LINE__);
|
||||
}
|
||||
@ -114,14 +121,14 @@ namespace spine {
|
||||
}
|
||||
}
|
||||
|
||||
inline void addAll(Vector<T> &inValue) {
|
||||
inline void addAll(const Vector<T> &inValue) {
|
||||
ensureCapacity(this->size() + inValue.size());
|
||||
for (size_t i = 0; i < inValue.size(); i++) {
|
||||
add(inValue[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void clearAndAddAll(Vector<T> &inValue) {
|
||||
inline void clearAndAddAll(const Vector<T> &inValue) {
|
||||
this->clear();
|
||||
this->addAll(inValue);
|
||||
}
|
||||
@ -168,6 +175,12 @@ namespace spine {
|
||||
return _buffer[inIndex];
|
||||
}
|
||||
|
||||
inline const T &operator[](size_t inIndex) const {
|
||||
assert(inIndex < _size);
|
||||
|
||||
return _buffer[inIndex];
|
||||
}
|
||||
|
||||
inline friend bool operator==(Vector<T> &lhs, Vector<T> &rhs) {
|
||||
if (lhs.size() != rhs.size()) {
|
||||
return false;
|
||||
@ -186,6 +199,13 @@ namespace spine {
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
Vector &operator=(const Vector &inVector) {
|
||||
if (this != &inVector) {
|
||||
clearAndAddAll(inVector);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline T *buffer() {
|
||||
return _buffer;
|
||||
}
|
||||
@ -219,7 +239,6 @@ namespace spine {
|
||||
buffer->~T();
|
||||
}
|
||||
|
||||
// Vector &operator=(const Vector &inVector) {};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -164,7 +164,12 @@ void TrackEntry::setMixDuration(float inValue) { _mixDuration = inValue; }
|
||||
|
||||
void TrackEntry::setMixDuration(float mixDuration, float delay) {
|
||||
_mixDuration = mixDuration;
|
||||
if (_previous && delay <= 0) delay += _previous->getTrackComplete() - mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (_previous != nullptr)
|
||||
delay = MathUtil::max(delay + _previous->getTrackComplete() - mixDuration, 0.0f);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
this->_delay = delay;
|
||||
}
|
||||
|
||||
@ -606,10 +611,11 @@ TrackEntry *AnimationState::addAnimation(size_t trackIndex, Animation *animation
|
||||
if (last == NULL) {
|
||||
setCurrent(trackIndex, entry, true);
|
||||
_queue->drain();
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last->_next = entry;
|
||||
entry->_previous = last;
|
||||
if (delay <= 0) delay += last->getTrackComplete() - entry->_mixDuration;
|
||||
if (delay <= 0) delay = MathUtil::max(delay + last->getTrackComplete() - entry->_mixDuration, 0.0f);
|
||||
}
|
||||
|
||||
entry->_delay = delay;
|
||||
@ -625,7 +631,7 @@ TrackEntry *AnimationState::setEmptyAnimation(size_t trackIndex, float mixDurati
|
||||
|
||||
TrackEntry *AnimationState::addEmptyAnimation(size_t trackIndex, float mixDuration, float delay) {
|
||||
TrackEntry *entry = addAnimation(trackIndex, AnimationState::getEmptyAnimation(), false, delay);
|
||||
if (delay <= 0) entry->_delay += entry->_mixDuration - mixDuration;
|
||||
if (delay <= 0) entry->_delay = MathUtil::max(entry->_delay + entry->_mixDuration - mixDuration, 0.0f);
|
||||
entry->_mixDuration = mixDuration;
|
||||
entry->_trackEnd = mixDuration;
|
||||
return entry;
|
||||
|
||||
17
spine-godot/.vscode/launch.json
vendored
@ -46,6 +46,23 @@
|
||||
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppvsdbg",
|
||||
"request": "launch",
|
||||
"name": "debug scene extension",
|
||||
"program": "godot/bin/godot.windows.editor.dev.x86_64.exe",
|
||||
"args": ["--path", "example-v4-extension", "examples/13-load-from-disk/load-from-disk.tscn"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"preLaunchTask": "build-extension",
|
||||
"linux": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.linux.editor.dev.x86_64"
|
||||
},
|
||||
"osx": {
|
||||
"type": "lldb",
|
||||
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppvsdbg",
|
||||
"request": "launch",
|
||||
|
||||
24
spine-godot/Info.ios.plist
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${BUNDLE_LIBRARY}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${BUNDLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>${MIN_IOS_VERSION}</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
</dict>
|
||||
</plist>
|
||||
26
spine-godot/Info.macos.plist
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${BUNDLE_LIBRARY}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${BUNDLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${BUNDLE_VERSION}</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MIN_MACOS_VERSION}</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
from methods import print_error
|
||||
|
||||
@ -112,12 +113,13 @@ if env["target"] in ["editor", "template_debug"]:
|
||||
except AttributeError:
|
||||
print("Not including class reference as we're targeting a pre-4.3 baseline.")
|
||||
|
||||
file = "{}{}{}".format(libname, env["suffix"], env["SHLIBSUFFIX"])
|
||||
file = "lib{}{}{}".format(libname, env["suffix"], env["SHLIBSUFFIX"])
|
||||
filepath = ""
|
||||
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
filepath = "{}.framework/".format(env["platform"])
|
||||
file = "{}.{}.{}".format(libname, env["platform"], env["target"])
|
||||
filepath = "lib{}.{}.{}.framework/".format(libname, env["platform"], env["target"])
|
||||
file = "lib{}.{}.{}".format(libname, env["platform"], env["target"])
|
||||
env.Append(LINKFLAGS=["-Wl,-install_name,@rpath/{}{}".format(filepath, file)])
|
||||
|
||||
libraryfile = "bin/{}/{}{}".format(env["platform"], filepath, file)
|
||||
library = env.SharedLibrary(
|
||||
@ -125,9 +127,40 @@ library = env.SharedLibrary(
|
||||
source=sources,
|
||||
)
|
||||
|
||||
copy = env.InstallAs("{}/bin/{}/{}lib{}".format(projectdir, env["platform"], filepath, file), library)
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
plist_subst = {
|
||||
"${BUNDLE_LIBRARY}": file,
|
||||
"${BUNDLE_NAME}": "spine-godot",
|
||||
"${BUNDLE_IDENTIFIER}": "com.esotericsoftware.spine.spine-godot",
|
||||
"${BUNDLE_VERSION}": subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode('utf-8').strip().split('-')[0] + '.0',
|
||||
"${MIN_MACOS_VERSION}": "10.12",
|
||||
"${MIN_IOS_VERSION}": "12.0"
|
||||
}
|
||||
|
||||
if env["platform"] == "macos":
|
||||
plist_file = "bin/macos/{}Resources/Info.plist".format(filepath)
|
||||
plist = env.Substfile(
|
||||
target=plist_file,
|
||||
source="Info.macos.plist",
|
||||
SUBST_DICT=plist_subst
|
||||
)
|
||||
elif env["platform"] == "ios":
|
||||
plist_file = "bin/ios/{}Info.plist".format(filepath)
|
||||
plist = env.Substfile(
|
||||
target=plist_file,
|
||||
source="Info.ios.plist",
|
||||
SUBST_DICT=plist_subst
|
||||
)
|
||||
|
||||
env.Depends(library, plist)
|
||||
|
||||
copy = env.InstallAs("{}/{}".format(projectdir, libraryfile), library)
|
||||
default_args = [library, copy]
|
||||
|
||||
if env["platform"] == "macos" or env["platform"] == "ios":
|
||||
copy_plist = env.InstallAs("{}/{}".format(projectdir, plist_file), plist_file)
|
||||
default_args.append(copy_plist)
|
||||
|
||||
if localEnv.get("compiledb", False):
|
||||
default_args += [compilation_db]
|
||||
Default(*default_args)
|
||||
@ -57,87 +57,7 @@ echo "CPUS: $cpus"
|
||||
|
||||
pushd ..
|
||||
|
||||
if [ "$raw_platform" == "ios" ]; then
|
||||
BINDIR="example-v4-extension/bin/ios"
|
||||
mkdir -p $BINDIR
|
||||
|
||||
# Step 1: Build simulator binaries
|
||||
echo "Building for iOS simulator..."
|
||||
scons -j $cpus $options $platform target=template_debug arch=universal ios_simulator=yes
|
||||
mv $BINDIR/ios.framework/libspine_godot.ios.template_debug $BINDIR/libspine_godot.ios.template_debug.simulator.a
|
||||
|
||||
scons -j $cpus $options $platform target=template_release arch=universal ios_simulator=yes
|
||||
mv $BINDIR/ios.framework/libspine_godot.ios.template_release $BINDIR/libspine_godot.ios.template_release.simulator.a
|
||||
|
||||
# Step 2: Build device binaries
|
||||
echo "Building for iOS device..."
|
||||
scons -j $cpus $options $platform target=template_debug arch=arm64 ios_simulator=no
|
||||
mv $BINDIR/ios.framework/libspine_godot.ios.template_debug $BINDIR/libspine_godot.ios.template_debug.a
|
||||
|
||||
scons -j $cpus $options $platform target=template_release arch=arm64 ios_simulator=no
|
||||
mv $BINDIR/ios.framework/libspine_godot.ios.template_release $BINDIR/libspine_godot.ios.template_release.a
|
||||
|
||||
# Step 3: Create xcframeworks
|
||||
echo "Creating xcframeworks..."
|
||||
|
||||
xcodebuild -create-xcframework \
|
||||
-library $BINDIR/libspine_godot.ios.template_debug.a \
|
||||
-library $BINDIR/libspine_godot.ios.template_debug.simulator.a \
|
||||
-output $BINDIR/libspine_godot.ios.template_debug.xcframework
|
||||
|
||||
xcodebuild -create-xcframework \
|
||||
-library $BINDIR/libspine_godot.ios.template_release.a \
|
||||
-library $BINDIR/libspine_godot.ios.template_release.simulator.a \
|
||||
-output $BINDIR/libspine_godot.ios.template_release.xcframework
|
||||
|
||||
# Cleanup intermediate files
|
||||
rm -f $BINDIR/*.a
|
||||
rm -rf $BINDIR/ios.framework
|
||||
|
||||
elif [ "$raw_platform" == "macos" ]; then
|
||||
BINDIR="example-v4-extension/bin/macos/macos.framework"
|
||||
TMPDIR="example-v4-extension/bin/macos/tmp"
|
||||
mkdir -p $BINDIR $TMPDIR
|
||||
|
||||
# Build x86_64 binaries
|
||||
echo "Building for macOS x86_64..."
|
||||
scons -j $cpus $options $platform target=editor arch=x86_64
|
||||
mv $BINDIR/libspine_godot.macos.editor $TMPDIR/libspine_godot.macos.editor.x86_64
|
||||
scons -j $cpus $options $platform target=template_debug arch=x86_64
|
||||
mv $BINDIR/libspine_godot.macos.template_debug $TMPDIR/libspine_godot.macos.template_debug.x86_64
|
||||
scons -j $cpus $options $platform target=template_release arch=x86_64
|
||||
mv $BINDIR/libspine_godot.macos.template_release $TMPDIR/libspine_godot.macos.template_release.x86_64
|
||||
|
||||
# Build arm64 binaries
|
||||
echo "Building for macOS arm64..."
|
||||
scons -j $cpus $options $platform target=editor arch=arm64
|
||||
mv $BINDIR/libspine_godot.macos.editor $TMPDIR/libspine_godot.macos.editor.arm64
|
||||
scons -j $cpus $options $platform target=template_debug arch=arm64
|
||||
mv $BINDIR/libspine_godot.macos.template_debug $TMPDIR/libspine_godot.macos.template_debug.arm64
|
||||
scons -j $cpus $options $platform target=template_release arch=arm64
|
||||
mv $BINDIR/libspine_godot.macos.template_release $TMPDIR/libspine_godot.macos.template_release.arm64
|
||||
|
||||
# Create universal binaries
|
||||
echo "Creating universal binaries..."
|
||||
lipo -create \
|
||||
$TMPDIR/libspine_godot.macos.editor.x86_64 \
|
||||
$TMPDIR/libspine_godot.macos.editor.arm64 \
|
||||
-output $BINDIR/libspine_godot.macos.editor
|
||||
|
||||
lipo -create \
|
||||
$TMPDIR/libspine_godot.macos.template_debug.x86_64 \
|
||||
$TMPDIR/libspine_godot.macos.template_debug.arm64 \
|
||||
-output $BINDIR/libspine_godot.macos.template_debug
|
||||
|
||||
lipo -create \
|
||||
$TMPDIR/libspine_godot.macos.template_release.x86_64 \
|
||||
$TMPDIR/libspine_godot.macos.template_release.arm64 \
|
||||
-output $BINDIR/libspine_godot.macos.template_release
|
||||
|
||||
# Cleanup intermediate files
|
||||
rm -rf $TMPDIR
|
||||
|
||||
elif [ "$raw_platform" == "web" ]; then
|
||||
if [ "$raw_platform" == "web" ]; then
|
||||
BINDIR="example-v4-extension/bin/web"
|
||||
mkdir -p $BINDIR
|
||||
|
||||
@ -150,10 +70,9 @@ elif [ "$raw_platform" == "web" ]; then
|
||||
echo "Building web without threads..."
|
||||
scons -j $cpus $options $platform target=template_debug threads=no
|
||||
scons -j $cpus $options $platform target=template_release threads=no
|
||||
|
||||
else
|
||||
# Normal build process for other platforms
|
||||
if [ "$raw_platform" != "android" ] && [ "$raw_platform" != "web" ]; then
|
||||
if [ "$raw_platform" != "android" ] && [ "$raw_platform" != "ios" ] && [ "$raw_platform" != "web" ]; then
|
||||
scons -j $cpus $options $platform target=editor
|
||||
fi
|
||||
scons -j $cpus $options $platform target=template_debug
|
||||
|
||||
@ -140,23 +140,18 @@ public:
|
||||
}
|
||||
|
||||
void load(spine::AtlasPage &page, const spine::String &path) override {
|
||||
Error error = OK;
|
||||
String fixed_path;
|
||||
fixed_path.parse_utf8(path.buffer());
|
||||
bool is_resource = fix_path(fixed_path);
|
||||
|
||||
import_image_resource(fixed_path);
|
||||
|
||||
#if SPINE_GODOT_EXTENSION
|
||||
Ref<Texture2D> texture = ResourceLoader::get_singleton()->load(fixed_path, "", ResourceLoader::CACHE_MODE_REUSE);
|
||||
#else
|
||||
#if VERSION_MAJOR > 3
|
||||
Ref<Texture2D> texture = get_texture_from_image(fixed_path, is_resource);
|
||||
#else
|
||||
Ref<Texture> texture = get_texture_from_image(fixed_path, is_resource);
|
||||
#endif
|
||||
#endif
|
||||
if (error != OK || !texture.is_valid()) {
|
||||
if (!texture.is_valid()) {
|
||||
ERR_PRINT(vformat("Can't load texture: \"%s\"", fixed_path));
|
||||
auto renderer_object = memnew(SpineRendererObject);
|
||||
renderer_object->texture = Ref<Texture>(nullptr);
|
||||
@ -170,17 +165,19 @@ public:
|
||||
renderer_object->texture = texture;
|
||||
renderer_object->normal_map = Ref<Texture>(nullptr);
|
||||
|
||||
String new_path = vformat("%s/%s_%s", fixed_path.get_base_dir(), normal_map_prefix, fixed_path.get_file());
|
||||
String normal_map_path = vformat("%s/%s_%s", fixed_path.get_base_dir(), normal_map_prefix, fixed_path.get_file());
|
||||
is_resource = fix_path(normal_map_path);
|
||||
#if SPINE_GODOT_EXTENSION
|
||||
if (ResourceLoader::get_singleton()->exists(new_path)) {
|
||||
Ref<Texture> normal_map = ResourceLoader::get_singleton()->load(new_path);
|
||||
if (ResourceLoader::get_singleton()->exists(normal_map_path)) {
|
||||
import_image_resource(normal_map_path);
|
||||
Ref<Texture> normal_map = get_texture_from_image(normal_map_path, is_resource);
|
||||
normal_maps->append(normal_map);
|
||||
renderer_object->normal_map = normal_map;
|
||||
}
|
||||
#else
|
||||
if (ResourceLoader::exists(new_path)) {
|
||||
import_image_resource(new_path);
|
||||
Ref<Texture> normal_map = get_texture_from_image(new_path, is_resource);
|
||||
if (ResourceLoader::exists(normal_map_path)) {
|
||||
import_image_resource(normal_map_path);
|
||||
Ref<Texture> normal_map = get_texture_from_image(normal_map_path, is_resource);
|
||||
normal_maps->append(normal_map);
|
||||
renderer_object->normal_map = normal_map;
|
||||
}
|
||||
|
||||
@ -5,36 +5,36 @@ compatibility_minimum = "4.1"
|
||||
|
||||
[libraries]
|
||||
|
||||
macos.editor = "res://bin/macos/macos.framework/libspine_godot.macos.editor"
|
||||
macos.debug = "res://bin/macos/macos.framework/libspine_godot.macos.template_debug"
|
||||
macos.release = "res://bin/macos/macos.framework/libspine_godot.macos.template_release"
|
||||
macos.editor = "macos/libspine_godot.macos.editor.framework"
|
||||
macos.debug = "macos/libspine_godot.macos.template_debug.framework"
|
||||
macos.release = "macos/libspine_godot.macos.template_release.framework"
|
||||
|
||||
ios.debug = "res://bin/ios/ios.framework/libspine_godot.ios.template_debug.xcframework"
|
||||
ios.release = "res://bin/ios/ios.framework/libspine_godot.ios.template_release.xcframework"
|
||||
ios.debug = "ios/libspine_godot.ios.template_debug.framework"
|
||||
ios.release = "ios/libspine_godot.ios.template_release.framework"
|
||||
|
||||
windows.editor.x86_64 = "res://bin/windows/libspine_godot.windows.editor.x86_64.dll"
|
||||
windows.debug.x86_64 = "res://bin/windows/libspine_godot.windows.template_debug.x86_64.dll"
|
||||
windows.release.x86_64 = "res://bin/windows/libspine_godot.windows.template_release.x86_64.dll"
|
||||
windows.editor.x86_64 = "windows/libspine_godot.windows.editor.x86_64.dll"
|
||||
windows.debug.x86_64 = "windows/libspine_godot.windows.template_debug.x86_64.dll"
|
||||
windows.release.x86_64 = "windows/libspine_godot.windows.template_release.x86_64.dll"
|
||||
|
||||
linux.editor.x86_64 = "res://bin/linux/libspine_godot.linux.editor.x86_64.so"
|
||||
linux.debug.x86_64 = "res://bin/linux/libspine_godot.linux.template_debug.x86_64.so"
|
||||
linux.release.x86_64 = "res://bin/linux/libspine_godot.linux.template_release.x86_64.so"
|
||||
linux.editor.x86_64 = "linux/libspine_godot.linux.editor.x86_64.so"
|
||||
linux.debug.x86_64 = "linux/libspine_godot.linux.template_debug.x86_64.so"
|
||||
linux.release.x86_64 = "linux/libspine_godot.linux.template_release.x86_64.so"
|
||||
|
||||
linux.editor.arm64 = "res://bin/linux/libspine_godot.linux.editor.arm64.so"
|
||||
linux.debug.arm64 = "res://bin/linux/libspine_godot.linux.template_debug.arm64.so"
|
||||
linux.release.arm64 = "res://bin/linux/libspine_godot.linux.template_release.arm64.so"
|
||||
linux.editor.arm64 = "linux/libspine_godot.linux.editor.arm64.so"
|
||||
linux.debug.arm64 = "linux/libspine_godot.linux.template_debug.arm64.so"
|
||||
linux.release.arm64 = "linux/libspine_godot.linux.template_release.arm64.so"
|
||||
|
||||
linux.editor.rv64 = "res://bin/linux/libspine_godot.linux.editor.rv64.so"
|
||||
linux.debug.rv64 = "res://bin/linux/libspine_godot.linux.template_debug.rv64.so"
|
||||
linux.release.rv64 = "res://bin/linux/libspine_godot.linux.template_release.rv64.so"
|
||||
linux.editor.rv64 = "linux/libspine_godot.linux.editor.rv64.so"
|
||||
linux.debug.rv64 = "linux/libspine_godot.linux.template_debug.rv64.so"
|
||||
linux.release.rv64 = "linux/libspine_godot.linux.template_release.rv64.so"
|
||||
|
||||
android.debug.x86_64 = "res://bin/android/libspine_godot.android.template_debug.x86_64.so"
|
||||
android.release.x86_64 = "res://bin/android/libspine_godot.android.template_release.x86_64.so"
|
||||
android.debug.x86_64 = "android/libspine_godot.android.template_debug.x86_64.so"
|
||||
android.release.x86_64 = "android/libspine_godot.android.template_release.x86_64.so"
|
||||
|
||||
android.debug.arm64 = "res://bin/android/libspine_godot.android.template_debug.arm64.so"
|
||||
android.release.arm64 = "res://bin/android/libspine_godot.android.template_release.arm64.so"
|
||||
android.debug.arm64 = "android/libspine_godot.android.template_debug.arm64.so"
|
||||
android.release.arm64 = "android/libspine_godot.android.template_release.arm64.so"
|
||||
|
||||
web.debug.threads.wasm32 = "res://bin/web/libgdexample.web.template_debug.wasm32.wasm"
|
||||
web.release.threads.wasm32 = "res://bin/web/libgdexample.web.template_release.wasm32.wasm"
|
||||
web.debug.wasm32 = "res://bin/web/libgdexample.web.template_debug.wasm32.nothreads.wasm"
|
||||
web.release.wasm32 = "res://bin/web/libgdexample.web.template_release.wasm32.nothreads.wasm"
|
||||
web.debug.threads.wasm32 = "web/libgdexample.web.template_debug.wasm32.wasm"
|
||||
web.release.threads.wasm32 = "web/libgdexample.web.template_release.wasm32.wasm"
|
||||
web.debug.wasm32 = "web/libgdexample.web.template_debug.wasm32.nothreads.wasm"
|
||||
web.release.wasm32 = "web/libgdexample.web.template_release.wasm32.nothreads.wasm"
|
||||
@ -594,11 +594,11 @@ class AnimationState {
|
||||
if (last == null) {
|
||||
setCurrent(trackIndex, entry, true);
|
||||
queue.drain();
|
||||
if (delay < 0) delay = 0;
|
||||
} else {
|
||||
last.next = entry;
|
||||
entry.previous = last;
|
||||
if (delay <= 0)
|
||||
delay += last.getTrackComplete() - entry.mixDuration;
|
||||
if (delay <= 0) delay = Math.max(delay + last.getTrackComplete() - entry.mixDuration, 0);
|
||||
}
|
||||
|
||||
entry.delay = delay;
|
||||
@ -614,8 +614,7 @@ class AnimationState {
|
||||
|
||||
public function addEmptyAnimation(trackIndex:Int, mixDuration:Float, delay:Float):TrackEntry {
|
||||
var entry:TrackEntry = addAnimation(trackIndex, emptyAnimation, false, delay);
|
||||
if (delay <= 0)
|
||||
entry.delay += entry.mixDuration - mixDuration;
|
||||
if (delay <= 0) entry.delay = Math.max(entry.delay + entry.mixDuration - mixDuration, 0);
|
||||
entry.mixDuration = mixDuration;
|
||||
entry.trackEnd = mixDuration;
|
||||
return entry;
|
||||
|
||||
@ -56,7 +56,20 @@ class TrackEntry implements Poolable {
|
||||
public var animationEnd:Float = 0;
|
||||
public var animationLast:Float = 0;
|
||||
public var nextAnimationLast:Float = 0;
|
||||
public var delay:Float = 0;
|
||||
|
||||
/** Seconds to postpone playing the animation. Must be >= 0. When this track entry is the current track entry,
|
||||
* <code>delay</code> postpones incrementing the {@link #getTrackTime()}. When this track entry is queued,
|
||||
* <code>delay</code> is the time from the start of the previous animation to when this track entry will become the current
|
||||
* track entry (ie when the previous track entry {@link TrackEntry#getTrackTime()} >= this track entry's
|
||||
* <code>delay</code>).
|
||||
* <p>
|
||||
* {@link #getTimeScale()} affects the delay.
|
||||
* <p>
|
||||
* When passing <code>delay</code> <= 0 to {@link AnimationState#addAnimation(int, Animation, boolean, float)} this
|
||||
* <code>delay</code> is set using a mix duration from {@link AnimationStateData}. To change the {@link #getMixDuration()}
|
||||
* afterward, use {@link #setMixDuration(float, float)} so this <code>delay</code> is adjusted. */
|
||||
public var delay(default, set):Float = 0;
|
||||
|
||||
public var trackTime:Float = 0;
|
||||
public var trackLast:Float = 0;
|
||||
public var nextTrackLast:Float = 0;
|
||||
@ -64,7 +77,7 @@ class TrackEntry implements Poolable {
|
||||
public var timeScale:Float = 0;
|
||||
public var alpha:Float = 0;
|
||||
public var mixTime:Float = 0;
|
||||
@:isVar public var mixDuration(get, set):Float = 0;
|
||||
public var mixDuration:Float = 0;
|
||||
public var interruptAlpha:Float = 0;
|
||||
public var totalAlpha:Float = 0;
|
||||
public var mixBlend:MixBlend = MixBlend.replace;
|
||||
@ -73,14 +86,9 @@ class TrackEntry implements Poolable {
|
||||
public var timelinesRotation:Array<Float> = new Array<Float>();
|
||||
public var shortestRotation = false;
|
||||
|
||||
function get_mixDuration():Float {
|
||||
return mixDuration;
|
||||
}
|
||||
|
||||
function set_mixDuration(mixDuration:Float):Float {
|
||||
this.mixDuration = mixDuration;
|
||||
if (previous != null && delay <= 0) delay += previous.getTrackComplete() - mixDuration;
|
||||
return mixDuration;
|
||||
function set_delay(delay:Float):Float {
|
||||
if (delay < 0) throw new SpineException("delay must be >= 0.");
|
||||
return this.delay = delay;
|
||||
}
|
||||
|
||||
public function new() {}
|
||||
@ -142,4 +150,15 @@ class TrackEntry implements Poolable {
|
||||
public function resetRotationDirection():Void {
|
||||
timelinesRotation.resize(0);
|
||||
}
|
||||
|
||||
public function setMixDurationWithDelay(mixDuration:Float):Float {
|
||||
this.mixDuration = mixDuration;
|
||||
if (delay <= 0) {
|
||||
if (this.previous != null)
|
||||
delay = Math.max(delay + this.previous.getTrackComplete() - mixDuration, 0);
|
||||
else
|
||||
delay = 0;
|
||||
}
|
||||
return mixDuration;
|
||||
}
|
||||
}
|
||||
|
||||
@ -323,7 +323,8 @@ fileprivate extension BlendMode {
|
||||
case SPINE_BLEND_MODE_NORMAL:
|
||||
return premultipliedAlpha ? .one : .sourceAlpha
|
||||
case SPINE_BLEND_MODE_ADDITIVE:
|
||||
return .sourceAlpha
|
||||
// additvie only needs sourceAlpha multiply if it is not pma
|
||||
return premultipliedAlpha ? .one : .sourceAlpha
|
||||
case SPINE_BLEND_MODE_MULTIPLY:
|
||||
return .destinationColor
|
||||
case SPINE_BLEND_MODE_SCREEN:
|
||||
@ -333,12 +334,13 @@ fileprivate extension BlendMode {
|
||||
}
|
||||
}
|
||||
|
||||
func sourceAlphaBlendFactor(premultipliedAlpha: Bool) -> MTLBlendFactor {
|
||||
var sourceAlphaBlendFactor: MTLBlendFactor {
|
||||
// pma and non-pma has no-relation ship with alpha blending
|
||||
switch self {
|
||||
case SPINE_BLEND_MODE_NORMAL:
|
||||
return premultipliedAlpha ? .one : .sourceAlpha
|
||||
return .one
|
||||
case SPINE_BLEND_MODE_ADDITIVE:
|
||||
return .sourceAlpha
|
||||
return .one
|
||||
case SPINE_BLEND_MODE_MULTIPLY:
|
||||
return .oneMinusSourceAlpha
|
||||
case SPINE_BLEND_MODE_SCREEN:
|
||||
@ -384,7 +386,7 @@ fileprivate extension MTLRenderPipelineColorAttachmentDescriptor {
|
||||
func apply(blendMode: BlendMode, with premultipliedAlpha: Bool) {
|
||||
isBlendingEnabled = true
|
||||
sourceRGBBlendFactor = blendMode.sourceRGBBlendFactor(premultipliedAlpha: premultipliedAlpha)
|
||||
sourceAlphaBlendFactor = blendMode.sourceAlphaBlendFactor(premultipliedAlpha: premultipliedAlpha)
|
||||
sourceAlphaBlendFactor = blendMode.sourceAlphaBlendFactor
|
||||
destinationRGBBlendFactor = blendMode.destinationRGBBlendFactor
|
||||
destinationAlphaBlendFactor = blendMode.destinationAlphaBlendFactor
|
||||
}
|
||||
|
||||
@ -7,8 +7,9 @@ up into multiple modules:
|
||||
1. `spine-webgl/`, a self-contained WebGL backend, built on the core classes.
|
||||
1. `spine-canvas/`, a self-contained Canvas backend, built on the core classes.
|
||||
1. `spine-canvaskit/`, a self-contained [CanvasKit](https://skia.org/docs/user/modules/canvaskit/) backend, built on the core classes for CanvasKit, supporting both NodeJS for headless rendering, and browsers.
|
||||
1. `spine-threejs/`, a self-contained [THREE.JS](https://threejs.org/) backend, built on the core classes.
|
||||
1. `spine-player/`, a self-contained player to easily display Spine animations on your website, built on the core classes and WebGL backend.
|
||||
1. `spine-webcomponents/`, web components to easily display Spine animations on your website, built on the core classes and WebGL backend.
|
||||
1. `spine-threejs/`, a [THREE.JS](https://threejs.org/) backend, built on the core classes.
|
||||
1. `spine-phaser-v3/`, a [Phaser v3](https://phaser.io/) backend, built on the core classes.
|
||||
1. `spine-phaser-v4/`, a [Phaser v4](https://phaser.io/) backend, built on the core classes.
|
||||
1. `spine-pixi-v7/`, a [PixiJS v7](https://pixijs.com/) backend, built on the core classes.
|
||||
|
||||
|
Before Width: | Height: | Size: 799 KiB After Width: | Height: | Size: 799 KiB |
|
Before Width: | Height: | Size: 790 KiB After Width: | Height: | Size: 790 KiB |
435
spine-ts/assets/chibi-stickers-pma.atlas
Normal file
@ -0,0 +1,435 @@
|
||||
chibi-stickers-pma.png
|
||||
size: 512, 128
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
common/angry-mark
|
||||
bounds: 278, 85, 42, 41
|
||||
common/big-purple-fear
|
||||
bounds: 2, 54, 134, 72
|
||||
common/big-tear
|
||||
bounds: 138, 93, 33, 82
|
||||
rotate: 90
|
||||
common/eye-3
|
||||
bounds: 226, 25, 15, 26
|
||||
common/eye-closed-happy
|
||||
bounds: 267, 7, 25, 9
|
||||
rotate: 90
|
||||
common/eye-dafault
|
||||
bounds: 203, 20, 22, 21
|
||||
rotate: 90
|
||||
common/eye-equal
|
||||
bounds: 308, 43, 25, 15
|
||||
common/eye-fire
|
||||
bounds: 278, 57, 26, 28
|
||||
rotate: 90
|
||||
common/eye-half-open
|
||||
bounds: 138, 2, 26, 16
|
||||
common/eye-heart
|
||||
bounds: 308, 60, 26, 23
|
||||
common/eye-reverse-v
|
||||
bounds: 166, 2, 26, 16
|
||||
common/eye-sideway-v
|
||||
bounds: 336, 60, 21, 23
|
||||
common/eye-slant-close
|
||||
bounds: 194, 2, 23, 16
|
||||
common/eye-small-dot
|
||||
bounds: 119, 2, 15, 15
|
||||
common/eye-sparkle
|
||||
bounds: 372, 97, 30, 29
|
||||
common/eye-star
|
||||
bounds: 404, 99, 29, 27
|
||||
common/eye-twirl
|
||||
bounds: 226, 2, 21, 23
|
||||
rotate: 90
|
||||
common/eye-u
|
||||
bounds: 2, 2, 24, 17
|
||||
common/eye-x
|
||||
bounds: 176, 20, 25, 22
|
||||
common/lamp
|
||||
bounds: 138, 44, 47, 65
|
||||
rotate: 90
|
||||
common/mouth-3
|
||||
bounds: 89, 2, 15, 28
|
||||
rotate: 90
|
||||
common/mouth-bracket
|
||||
bounds: 322, 85, 34, 11
|
||||
common/mouth-doubt
|
||||
bounds: 243, 34, 26, 15
|
||||
common/mouth-fangs
|
||||
bounds: 205, 52, 39, 14
|
||||
rotate: 90
|
||||
common/mouth-line
|
||||
bounds: 435, 96, 36, 7
|
||||
common/mouth-neutral
|
||||
bounds: 245, 51, 27, 12
|
||||
common/mouth-o-tall
|
||||
bounds: 221, 53, 22, 33
|
||||
common/mouth-open-smile
|
||||
bounds: 138, 20, 36, 22
|
||||
common/mouth-rectangle
|
||||
bounds: 435, 105, 35, 21
|
||||
common/mouth-reverse-v
|
||||
bounds: 473, 95, 27, 10
|
||||
common/mouth-s
|
||||
bounds: 28, 8, 41, 11
|
||||
common/mouth-smile-little
|
||||
bounds: 117, 19, 33, 19
|
||||
rotate: 90
|
||||
common/mouth-toungue-sticking-out
|
||||
bounds: 245, 65, 31, 21
|
||||
common/mouth-u
|
||||
bounds: 472, 107, 36, 19
|
||||
common/mouth-v
|
||||
bounds: 251, 5, 27, 14
|
||||
rotate: 90
|
||||
common/mouth-x
|
||||
bounds: 335, 38, 21, 20
|
||||
common/purple-fear-lines
|
||||
bounds: 322, 98, 48, 28
|
||||
common/shadow
|
||||
bounds: 2, 21, 113, 31
|
||||
common/small-dash
|
||||
bounds: 404, 88, 9, 20
|
||||
rotate: 90
|
||||
common/small-drop-line
|
||||
bounds: 71, 2, 16, 17
|
||||
common/small-purple-fear
|
||||
bounds: 222, 88, 54, 38
|
||||
common/tear
|
||||
bounds: 274, 36, 20, 19
|
||||
|
||||
chibi-stickers-pma_2.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
erikari/arm
|
||||
bounds: 981, 164, 28, 90
|
||||
erikari/arm-shoulder-decoration
|
||||
bounds: 790, 149, 32, 43
|
||||
erikari/back-hair
|
||||
bounds: 258, 113, 158, 141
|
||||
erikari/back-hair-long
|
||||
bounds: 2, 34, 220, 254
|
||||
rotate: 90
|
||||
erikari/blush
|
||||
bounds: 981, 133, 29, 18
|
||||
rotate: 90
|
||||
erikari/body
|
||||
bounds: 584, 115, 70, 98
|
||||
erikari/bracelet
|
||||
bounds: 1011, 221, 33, 11
|
||||
rotate: 90
|
||||
erikari/collar
|
||||
bounds: 390, 48, 61, 62
|
||||
erikari/ear
|
||||
bounds: 258, 2, 34, 42
|
||||
erikari/eyebrow
|
||||
bounds: 453, 98, 20, 12
|
||||
erikari/hair-front
|
||||
bounds: 258, 46, 130, 65
|
||||
erikari/hair-side
|
||||
bounds: 656, 149, 43, 132
|
||||
rotate: 90
|
||||
erikari/hat-border
|
||||
bounds: 418, 215, 254, 39
|
||||
erikari/hat-top
|
||||
bounds: 674, 194, 160, 60
|
||||
erikari/head-base
|
||||
bounds: 836, 129, 143, 125
|
||||
erikari/leg
|
||||
bounds: 2, 4, 28, 101
|
||||
rotate: 90
|
||||
erikari/leg-decoration
|
||||
bounds: 770, 134, 36, 13
|
||||
erikari/skirt
|
||||
bounds: 418, 112, 164, 101
|
||||
erikari/strawberries-decoration
|
||||
bounds: 656, 91, 112, 56
|
||||
|
||||
chibi-stickers-pma_3.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
harri/arm
|
||||
bounds: 147, 21, 28, 90
|
||||
rotate: 90
|
||||
harri/back-hair
|
||||
bounds: 2, 107, 158, 141
|
||||
harri/back-hair-long
|
||||
bounds: 147, 51, 40, 80
|
||||
rotate: 90
|
||||
harri/beard
|
||||
bounds: 2, 2, 10, 11
|
||||
harri/blush
|
||||
bounds: 265, 103, 29, 18
|
||||
harri/body
|
||||
bounds: 307, 94, 70, 98
|
||||
rotate: 90
|
||||
harri/body-decoration
|
||||
bounds: 407, 97, 70, 67
|
||||
harri/ear
|
||||
bounds: 229, 57, 34, 42
|
||||
rotate: 90
|
||||
harri/eyebrow
|
||||
bounds: 494, 226, 22, 12
|
||||
rotate: 90
|
||||
harri/hair-front
|
||||
bounds: 2, 15, 143, 90
|
||||
harri/head-base
|
||||
bounds: 162, 123, 143, 125
|
||||
harri/leg
|
||||
bounds: 162, 93, 28, 101
|
||||
rotate: 90
|
||||
harri/sword
|
||||
bounds: 307, 166, 185, 82
|
||||
|
||||
chibi-stickers-pma_4.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
luke/arm
|
||||
bounds: 930, 224, 28, 90
|
||||
rotate: 90
|
||||
luke/arm-shoulder-decoration
|
||||
bounds: 581, 112, 31, 27
|
||||
rotate: 90
|
||||
luke/back-hair
|
||||
bounds: 173, 111, 158, 141
|
||||
luke/blush
|
||||
bounds: 151, 68, 29, 18
|
||||
rotate: 90
|
||||
luke/body
|
||||
bounds: 700, 123, 70, 98
|
||||
rotate: 90
|
||||
luke/eyebrow
|
||||
bounds: 2, 2, 27, 12
|
||||
luke/face-cover
|
||||
bounds: 2, 99, 169, 153
|
||||
luke/glasses-shadow
|
||||
bounds: 2, 16, 147, 81
|
||||
luke/hair-decoration
|
||||
bounds: 478, 145, 130, 107
|
||||
luke/hair-front
|
||||
bounds: 700, 195, 122, 57
|
||||
luke/head-base
|
||||
bounds: 333, 127, 143, 125
|
||||
luke/leg
|
||||
bounds: 478, 115, 28, 101
|
||||
rotate: 90
|
||||
luke/shield
|
||||
bounds: 610, 148, 88, 104
|
||||
luke/skirt
|
||||
bounds: 930, 191, 81, 31
|
||||
luke/sword
|
||||
bounds: 824, 181, 104, 71
|
||||
|
||||
chibi-stickers-pma_5.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
mario/arm
|
||||
bounds: 244, 2, 28, 90
|
||||
mario/back-hair
|
||||
bounds: 2, 101, 168, 148
|
||||
mario/back-hair-long
|
||||
bounds: 151, 6, 86, 91
|
||||
rotate: 90
|
||||
mario/beard
|
||||
bounds: 2, 6, 147, 93
|
||||
mario/blush
|
||||
bounds: 492, 220, 29, 18
|
||||
rotate: 90
|
||||
mario/body
|
||||
bounds: 317, 111, 70, 98
|
||||
rotate: 90
|
||||
mario/ear
|
||||
bounds: 456, 207, 34, 42
|
||||
mario/eyebrow
|
||||
bounds: 417, 164, 32, 17
|
||||
mario/hair-front
|
||||
bounds: 317, 183, 137, 66
|
||||
mario/head-base
|
||||
bounds: 172, 124, 143, 125
|
||||
mario/leg
|
||||
bounds: 172, 94, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers-pma_6.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
misaki/arm
|
||||
bounds: 609, 95, 28, 90
|
||||
misaki/back-hair
|
||||
bounds: 194, 105, 158, 141
|
||||
misaki/back-hair-long
|
||||
bounds: 2, 51, 190, 195
|
||||
misaki/belt
|
||||
bounds: 741, 190, 76, 26
|
||||
misaki/blush
|
||||
bounds: 844, 228, 29, 18
|
||||
misaki/body
|
||||
bounds: 641, 176, 70, 98
|
||||
rotate: 90
|
||||
misaki/ear
|
||||
bounds: 144, 7, 34, 42
|
||||
misaki/eyebrow
|
||||
bounds: 194, 54, 30, 12
|
||||
misaki/glasses
|
||||
bounds: 194, 68, 141, 35
|
||||
misaki/glasses-side
|
||||
bounds: 354, 111, 8, 23
|
||||
rotate: 90
|
||||
misaki/hair-front
|
||||
bounds: 499, 187, 140, 59
|
||||
misaki/hair-side
|
||||
bounds: 2, 2, 47, 140
|
||||
rotate: 90
|
||||
misaki/head-base
|
||||
bounds: 354, 121, 143, 125
|
||||
misaki/leg
|
||||
bounds: 741, 218, 28, 101
|
||||
rotate: 90
|
||||
misaki/skirt
|
||||
bounds: 499, 95, 108, 90
|
||||
|
||||
chibi-stickers-pma_7.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
nate/arm
|
||||
bounds: 151, 65, 28, 90
|
||||
rotate: 90
|
||||
nate/back-hair
|
||||
bounds: 2, 109, 158, 141
|
||||
nate/beard
|
||||
bounds: 2, 39, 147, 68
|
||||
nate/blush
|
||||
bounds: 407, 165, 29, 18
|
||||
nate/body
|
||||
bounds: 307, 113, 70, 98
|
||||
rotate: 90
|
||||
nate/ear
|
||||
bounds: 451, 208, 34, 42
|
||||
nate/eyebrow
|
||||
bounds: 265, 111, 27, 12
|
||||
nate/glasses
|
||||
bounds: 2, 2, 141, 35
|
||||
nate/glasses-side
|
||||
bounds: 151, 47, 8, 16
|
||||
nate/hair-front
|
||||
bounds: 307, 185, 142, 65
|
||||
nate/head-base
|
||||
bounds: 162, 125, 143, 125
|
||||
nate/leg
|
||||
bounds: 162, 95, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers-pma_8.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
sinisa/arm
|
||||
bounds: 147, 52, 28, 90
|
||||
rotate: 90
|
||||
sinisa/back-hair
|
||||
bounds: 2, 96, 158, 141
|
||||
sinisa/beard
|
||||
bounds: 307, 192, 139, 45
|
||||
sinisa/blush
|
||||
bounds: 147, 32, 29, 18
|
||||
sinisa/body
|
||||
bounds: 307, 120, 70, 98
|
||||
rotate: 90
|
||||
sinisa/body-decoration
|
||||
bounds: 265, 83, 27, 27
|
||||
sinisa/ear
|
||||
bounds: 448, 195, 34, 42
|
||||
sinisa/eyebrow
|
||||
bounds: 407, 171, 38, 19
|
||||
sinisa/hair-front
|
||||
bounds: 2, 2, 143, 92
|
||||
sinisa/head-base
|
||||
bounds: 162, 112, 143, 125
|
||||
sinisa/leg
|
||||
bounds: 162, 82, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers-pma_9.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
soeren/arm
|
||||
bounds: 254, 47, 28, 90
|
||||
soeren/back-hair
|
||||
bounds: 2, 111, 150, 141
|
||||
soeren/beard
|
||||
bounds: 2, 41, 145, 68
|
||||
soeren/blush
|
||||
bounds: 284, 119, 29, 18
|
||||
soeren/body
|
||||
bounds: 154, 67, 70, 98
|
||||
rotate: 90
|
||||
soeren/ear
|
||||
bounds: 200, 23, 34, 42
|
||||
soeren/eyebrow
|
||||
bounds: 460, 137, 27, 12
|
||||
soeren/glasses
|
||||
bounds: 2, 2, 152, 37
|
||||
soeren/glasses-side
|
||||
bounds: 490, 245, 7, 20
|
||||
rotate: 90
|
||||
soeren/glove
|
||||
bounds: 156, 12, 42, 53
|
||||
soeren/hair-front
|
||||
bounds: 154, 139, 159, 113
|
||||
soeren/head-base
|
||||
bounds: 315, 127, 143, 125
|
||||
soeren/leg
|
||||
bounds: 460, 151, 28, 101
|
||||
|
||||
chibi-stickers-pma_10.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
spineboy/arm
|
||||
bounds: 407, 97, 28, 90
|
||||
rotate: 90
|
||||
spineboy/arm-decoration
|
||||
bounds: 307, 127, 32, 29
|
||||
spineboy/arm-shoulder-decoration
|
||||
bounds: 451, 72, 23, 23
|
||||
spineboy/back-hair
|
||||
bounds: 2, 106, 158, 141
|
||||
spineboy/blush
|
||||
bounds: 2, 2, 29, 18
|
||||
spineboy/body
|
||||
bounds: 307, 55, 70, 98
|
||||
rotate: 90
|
||||
spineboy/ear
|
||||
bounds: 407, 61, 34, 42
|
||||
rotate: 90
|
||||
spineboy/eyebrow
|
||||
bounds: 143, 77, 27, 12
|
||||
rotate: 90
|
||||
spineboy/glasses
|
||||
bounds: 162, 158, 179, 89
|
||||
spineboy/glasses-shadow
|
||||
bounds: 2, 22, 139, 82
|
||||
spineboy/hair-front
|
||||
bounds: 343, 127, 145, 120
|
||||
spineboy/head-base
|
||||
bounds: 162, 31, 143, 125
|
||||
spineboy/leg
|
||||
bounds: 307, 24, 29, 101
|
||||
rotate: 90
|
||||
BIN
spine-ts/assets/chibi-stickers-pma.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_10.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_2.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_3.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_4.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_5.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_6.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_7.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_8.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
spine-ts/assets/chibi-stickers-pma_9.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
425
spine-ts/assets/chibi-stickers.atlas
Normal file
@ -0,0 +1,425 @@
|
||||
chibi-stickers.png
|
||||
size: 512, 128
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
common/angry-mark
|
||||
bounds: 278, 85, 42, 41
|
||||
common/big-purple-fear
|
||||
bounds: 2, 54, 134, 72
|
||||
common/big-tear
|
||||
bounds: 138, 93, 33, 82
|
||||
rotate: 90
|
||||
common/eye-3
|
||||
bounds: 226, 25, 15, 26
|
||||
common/eye-closed-happy
|
||||
bounds: 267, 7, 25, 9
|
||||
rotate: 90
|
||||
common/eye-dafault
|
||||
bounds: 203, 20, 22, 21
|
||||
rotate: 90
|
||||
common/eye-equal
|
||||
bounds: 308, 43, 25, 15
|
||||
common/eye-fire
|
||||
bounds: 278, 57, 26, 28
|
||||
rotate: 90
|
||||
common/eye-half-open
|
||||
bounds: 138, 2, 26, 16
|
||||
common/eye-heart
|
||||
bounds: 308, 60, 26, 23
|
||||
common/eye-reverse-v
|
||||
bounds: 166, 2, 26, 16
|
||||
common/eye-sideway-v
|
||||
bounds: 336, 60, 21, 23
|
||||
common/eye-slant-close
|
||||
bounds: 194, 2, 23, 16
|
||||
common/eye-small-dot
|
||||
bounds: 119, 2, 15, 15
|
||||
common/eye-sparkle
|
||||
bounds: 372, 97, 30, 29
|
||||
common/eye-star
|
||||
bounds: 404, 99, 29, 27
|
||||
common/eye-twirl
|
||||
bounds: 226, 2, 21, 23
|
||||
rotate: 90
|
||||
common/eye-u
|
||||
bounds: 2, 2, 24, 17
|
||||
common/eye-x
|
||||
bounds: 176, 20, 25, 22
|
||||
common/lamp
|
||||
bounds: 138, 44, 47, 65
|
||||
rotate: 90
|
||||
common/mouth-3
|
||||
bounds: 89, 2, 15, 28
|
||||
rotate: 90
|
||||
common/mouth-bracket
|
||||
bounds: 322, 85, 34, 11
|
||||
common/mouth-doubt
|
||||
bounds: 243, 34, 26, 15
|
||||
common/mouth-fangs
|
||||
bounds: 205, 52, 39, 14
|
||||
rotate: 90
|
||||
common/mouth-line
|
||||
bounds: 435, 96, 36, 7
|
||||
common/mouth-neutral
|
||||
bounds: 245, 51, 27, 12
|
||||
common/mouth-o-tall
|
||||
bounds: 221, 53, 22, 33
|
||||
common/mouth-open-smile
|
||||
bounds: 138, 20, 36, 22
|
||||
common/mouth-rectangle
|
||||
bounds: 435, 105, 35, 21
|
||||
common/mouth-reverse-v
|
||||
bounds: 473, 95, 27, 10
|
||||
common/mouth-s
|
||||
bounds: 28, 8, 41, 11
|
||||
common/mouth-smile-little
|
||||
bounds: 117, 19, 33, 19
|
||||
rotate: 90
|
||||
common/mouth-toungue-sticking-out
|
||||
bounds: 245, 65, 31, 21
|
||||
common/mouth-u
|
||||
bounds: 472, 107, 36, 19
|
||||
common/mouth-v
|
||||
bounds: 251, 5, 27, 14
|
||||
rotate: 90
|
||||
common/mouth-x
|
||||
bounds: 335, 38, 21, 20
|
||||
common/purple-fear-lines
|
||||
bounds: 322, 98, 48, 28
|
||||
common/shadow
|
||||
bounds: 2, 21, 113, 31
|
||||
common/small-dash
|
||||
bounds: 404, 88, 9, 20
|
||||
rotate: 90
|
||||
common/small-drop-line
|
||||
bounds: 71, 2, 16, 17
|
||||
common/small-purple-fear
|
||||
bounds: 222, 88, 54, 38
|
||||
common/tear
|
||||
bounds: 274, 36, 20, 19
|
||||
|
||||
chibi-stickers_2.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
erikari/arm
|
||||
bounds: 981, 164, 28, 90
|
||||
erikari/arm-shoulder-decoration
|
||||
bounds: 790, 149, 32, 43
|
||||
erikari/back-hair
|
||||
bounds: 258, 113, 158, 141
|
||||
erikari/back-hair-long
|
||||
bounds: 2, 34, 220, 254
|
||||
rotate: 90
|
||||
erikari/blush
|
||||
bounds: 981, 133, 29, 18
|
||||
rotate: 90
|
||||
erikari/body
|
||||
bounds: 584, 115, 70, 98
|
||||
erikari/bracelet
|
||||
bounds: 1011, 221, 33, 11
|
||||
rotate: 90
|
||||
erikari/collar
|
||||
bounds: 390, 48, 61, 62
|
||||
erikari/ear
|
||||
bounds: 258, 2, 34, 42
|
||||
erikari/eyebrow
|
||||
bounds: 453, 98, 20, 12
|
||||
erikari/hair-front
|
||||
bounds: 258, 46, 130, 65
|
||||
erikari/hair-side
|
||||
bounds: 656, 149, 43, 132
|
||||
rotate: 90
|
||||
erikari/hat-border
|
||||
bounds: 418, 215, 254, 39
|
||||
erikari/hat-top
|
||||
bounds: 674, 194, 160, 60
|
||||
erikari/head-base
|
||||
bounds: 836, 129, 143, 125
|
||||
erikari/leg
|
||||
bounds: 2, 4, 28, 101
|
||||
rotate: 90
|
||||
erikari/leg-decoration
|
||||
bounds: 770, 134, 36, 13
|
||||
erikari/skirt
|
||||
bounds: 418, 112, 164, 101
|
||||
erikari/strawberries-decoration
|
||||
bounds: 656, 91, 112, 56
|
||||
|
||||
chibi-stickers_3.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
harri/arm
|
||||
bounds: 147, 21, 28, 90
|
||||
rotate: 90
|
||||
harri/back-hair
|
||||
bounds: 2, 107, 158, 141
|
||||
harri/back-hair-long
|
||||
bounds: 147, 51, 40, 80
|
||||
rotate: 90
|
||||
harri/beard
|
||||
bounds: 2, 2, 10, 11
|
||||
harri/blush
|
||||
bounds: 265, 103, 29, 18
|
||||
harri/body
|
||||
bounds: 307, 94, 70, 98
|
||||
rotate: 90
|
||||
harri/body-decoration
|
||||
bounds: 407, 97, 70, 67
|
||||
harri/ear
|
||||
bounds: 229, 57, 34, 42
|
||||
rotate: 90
|
||||
harri/eyebrow
|
||||
bounds: 494, 226, 22, 12
|
||||
rotate: 90
|
||||
harri/hair-front
|
||||
bounds: 2, 15, 143, 90
|
||||
harri/head-base
|
||||
bounds: 162, 123, 143, 125
|
||||
harri/leg
|
||||
bounds: 162, 93, 28, 101
|
||||
rotate: 90
|
||||
harri/sword
|
||||
bounds: 307, 166, 185, 82
|
||||
|
||||
chibi-stickers_4.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
luke/arm
|
||||
bounds: 930, 224, 28, 90
|
||||
rotate: 90
|
||||
luke/arm-shoulder-decoration
|
||||
bounds: 581, 112, 31, 27
|
||||
rotate: 90
|
||||
luke/back-hair
|
||||
bounds: 173, 111, 158, 141
|
||||
luke/blush
|
||||
bounds: 151, 68, 29, 18
|
||||
rotate: 90
|
||||
luke/body
|
||||
bounds: 700, 123, 70, 98
|
||||
rotate: 90
|
||||
luke/eyebrow
|
||||
bounds: 2, 2, 27, 12
|
||||
luke/face-cover
|
||||
bounds: 2, 99, 169, 153
|
||||
luke/glasses-shadow
|
||||
bounds: 2, 16, 147, 81
|
||||
luke/hair-decoration
|
||||
bounds: 478, 145, 130, 107
|
||||
luke/hair-front
|
||||
bounds: 700, 195, 122, 57
|
||||
luke/head-base
|
||||
bounds: 333, 127, 143, 125
|
||||
luke/leg
|
||||
bounds: 478, 115, 28, 101
|
||||
rotate: 90
|
||||
luke/shield
|
||||
bounds: 610, 148, 88, 104
|
||||
luke/skirt
|
||||
bounds: 930, 191, 81, 31
|
||||
luke/sword
|
||||
bounds: 824, 181, 104, 71
|
||||
|
||||
chibi-stickers_5.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
mario/arm
|
||||
bounds: 244, 2, 28, 90
|
||||
mario/back-hair
|
||||
bounds: 2, 101, 168, 148
|
||||
mario/back-hair-long
|
||||
bounds: 151, 6, 86, 91
|
||||
rotate: 90
|
||||
mario/beard
|
||||
bounds: 2, 6, 147, 93
|
||||
mario/blush
|
||||
bounds: 492, 220, 29, 18
|
||||
rotate: 90
|
||||
mario/body
|
||||
bounds: 317, 111, 70, 98
|
||||
rotate: 90
|
||||
mario/ear
|
||||
bounds: 456, 207, 34, 42
|
||||
mario/eyebrow
|
||||
bounds: 417, 164, 32, 17
|
||||
mario/hair-front
|
||||
bounds: 317, 183, 137, 66
|
||||
mario/head-base
|
||||
bounds: 172, 124, 143, 125
|
||||
mario/leg
|
||||
bounds: 172, 94, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers_6.png
|
||||
size: 1024, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
misaki/arm
|
||||
bounds: 609, 95, 28, 90
|
||||
misaki/back-hair
|
||||
bounds: 194, 105, 158, 141
|
||||
misaki/back-hair-long
|
||||
bounds: 2, 51, 190, 195
|
||||
misaki/belt
|
||||
bounds: 741, 190, 76, 26
|
||||
misaki/blush
|
||||
bounds: 844, 228, 29, 18
|
||||
misaki/body
|
||||
bounds: 641, 176, 70, 98
|
||||
rotate: 90
|
||||
misaki/ear
|
||||
bounds: 144, 7, 34, 42
|
||||
misaki/eyebrow
|
||||
bounds: 194, 54, 30, 12
|
||||
misaki/glasses
|
||||
bounds: 194, 68, 141, 35
|
||||
misaki/glasses-side
|
||||
bounds: 354, 111, 8, 23
|
||||
rotate: 90
|
||||
misaki/hair-front
|
||||
bounds: 499, 187, 140, 59
|
||||
misaki/hair-side
|
||||
bounds: 2, 2, 47, 140
|
||||
rotate: 90
|
||||
misaki/head-base
|
||||
bounds: 354, 121, 143, 125
|
||||
misaki/leg
|
||||
bounds: 741, 218, 28, 101
|
||||
rotate: 90
|
||||
misaki/skirt
|
||||
bounds: 499, 95, 108, 90
|
||||
|
||||
chibi-stickers_7.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
nate/arm
|
||||
bounds: 151, 65, 28, 90
|
||||
rotate: 90
|
||||
nate/back-hair
|
||||
bounds: 2, 109, 158, 141
|
||||
nate/beard
|
||||
bounds: 2, 39, 147, 68
|
||||
nate/blush
|
||||
bounds: 407, 165, 29, 18
|
||||
nate/body
|
||||
bounds: 307, 113, 70, 98
|
||||
rotate: 90
|
||||
nate/ear
|
||||
bounds: 451, 208, 34, 42
|
||||
nate/eyebrow
|
||||
bounds: 265, 111, 27, 12
|
||||
nate/glasses
|
||||
bounds: 2, 2, 141, 35
|
||||
nate/glasses-side
|
||||
bounds: 151, 47, 8, 16
|
||||
nate/hair-front
|
||||
bounds: 307, 185, 142, 65
|
||||
nate/head-base
|
||||
bounds: 162, 125, 143, 125
|
||||
nate/leg
|
||||
bounds: 162, 95, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers_8.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
sinisa/arm
|
||||
bounds: 147, 52, 28, 90
|
||||
rotate: 90
|
||||
sinisa/back-hair
|
||||
bounds: 2, 96, 158, 141
|
||||
sinisa/beard
|
||||
bounds: 307, 192, 139, 45
|
||||
sinisa/blush
|
||||
bounds: 147, 32, 29, 18
|
||||
sinisa/body
|
||||
bounds: 307, 120, 70, 98
|
||||
rotate: 90
|
||||
sinisa/body-decoration
|
||||
bounds: 265, 83, 27, 27
|
||||
sinisa/ear
|
||||
bounds: 448, 195, 34, 42
|
||||
sinisa/eyebrow
|
||||
bounds: 407, 171, 38, 19
|
||||
sinisa/hair-front
|
||||
bounds: 2, 2, 143, 92
|
||||
sinisa/head-base
|
||||
bounds: 162, 112, 143, 125
|
||||
sinisa/leg
|
||||
bounds: 162, 82, 28, 101
|
||||
rotate: 90
|
||||
|
||||
chibi-stickers_9.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
soeren/arm
|
||||
bounds: 254, 47, 28, 90
|
||||
soeren/back-hair
|
||||
bounds: 2, 111, 150, 141
|
||||
soeren/beard
|
||||
bounds: 2, 41, 145, 68
|
||||
soeren/blush
|
||||
bounds: 284, 119, 29, 18
|
||||
soeren/body
|
||||
bounds: 154, 67, 70, 98
|
||||
rotate: 90
|
||||
soeren/ear
|
||||
bounds: 200, 23, 34, 42
|
||||
soeren/eyebrow
|
||||
bounds: 460, 137, 27, 12
|
||||
soeren/glasses
|
||||
bounds: 2, 2, 152, 37
|
||||
soeren/glasses-side
|
||||
bounds: 490, 245, 7, 20
|
||||
rotate: 90
|
||||
soeren/glove
|
||||
bounds: 156, 12, 42, 53
|
||||
soeren/hair-front
|
||||
bounds: 154, 139, 159, 113
|
||||
soeren/head-base
|
||||
bounds: 315, 127, 143, 125
|
||||
soeren/leg
|
||||
bounds: 460, 151, 28, 101
|
||||
|
||||
chibi-stickers_10.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
spineboy/arm
|
||||
bounds: 407, 97, 28, 90
|
||||
rotate: 90
|
||||
spineboy/arm-decoration
|
||||
bounds: 307, 127, 32, 29
|
||||
spineboy/arm-shoulder-decoration
|
||||
bounds: 451, 72, 23, 23
|
||||
spineboy/back-hair
|
||||
bounds: 2, 106, 158, 141
|
||||
spineboy/blush
|
||||
bounds: 2, 2, 29, 18
|
||||
spineboy/body
|
||||
bounds: 307, 55, 70, 98
|
||||
rotate: 90
|
||||
spineboy/ear
|
||||
bounds: 407, 61, 34, 42
|
||||
rotate: 90
|
||||
spineboy/eyebrow
|
||||
bounds: 143, 77, 27, 12
|
||||
rotate: 90
|
||||
spineboy/glasses
|
||||
bounds: 162, 158, 179, 89
|
||||
spineboy/glasses-shadow
|
||||
bounds: 2, 22, 139, 82
|
||||
spineboy/hair-front
|
||||
bounds: 343, 127, 145, 120
|
||||
spineboy/head-base
|
||||
bounds: 162, 31, 143, 125
|
||||
spineboy/leg
|
||||
bounds: 307, 24, 29, 101
|
||||
rotate: 90
|
||||
7597
spine-ts/assets/chibi-stickers.json
Normal file
BIN
spine-ts/assets/chibi-stickers.skel
Normal file
|
Before Width: | Height: | Size: 350 KiB After Width: | Height: | Size: 350 KiB |
|
Before Width: | Height: | Size: 328 KiB After Width: | Height: | Size: 328 KiB |
|
Before Width: | Height: | Size: 305 KiB After Width: | Height: | Size: 305 KiB |
|
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 213 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 369 KiB After Width: | Height: | Size: 369 KiB |
|
Before Width: | Height: | Size: 341 KiB After Width: | Height: | Size: 341 KiB |
|
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 321 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 409 KiB After Width: | Height: | Size: 409 KiB |
|
Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 413 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 673 KiB After Width: | Height: | Size: 673 KiB |
|
Before Width: | Height: | Size: 784 KiB After Width: | Height: | Size: 784 KiB |
|
Before Width: | Height: | Size: 400 KiB After Width: | Height: | Size: 400 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 392 KiB After Width: | Height: | Size: 392 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1009 KiB After Width: | Height: | Size: 1009 KiB |
|
Before Width: | Height: | Size: 537 KiB After Width: | Height: | Size: 537 KiB |
|
Before Width: | Height: | Size: 517 KiB After Width: | Height: | Size: 517 KiB |
|
Before Width: | Height: | Size: 403 KiB After Width: | Height: | Size: 403 KiB |
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |