Merge branch '4.1' into 4.2-beta

This commit is contained in:
Mario Zechner 2023-01-26 15:40:20 +01:00
commit 59d700ac3f
15 changed files with 511 additions and 117 deletions

368
.github/workflows/spine-godot-v4.yml vendored Normal file
View File

@ -0,0 +1,368 @@
name: Build and Publish Godot 4.0 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.18
GODOT_TAG: master
GODOT_VERSION: 4.0.beta
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-v4.sh
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: godot-editor-windows.zip
path: spine-godot/godot/bin/godot.windows.editor.x86_64.exe
godot-editor-linux:
runs-on: ubuntu-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: |
sudo apt-get update
sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev
./spine-godot/build/setup.sh $GODOT_TAG false
./spine-godot/build/build-v4.sh
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: godot-editor-linux.zip
path: spine-godot/godot/bin/godot.linuxbsd.editor.x86_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/install-macos-vulkan-sdk.sh
./spine-godot/build/setup.sh $GODOT_TAG false
./spine-godot/build/build-v4.sh
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/install-macos-vulkan-sdk.sh
./spine-godot/build/setup.sh $GODOT_TAG false
./spine-godot/build/build-templates-v4.sh ios
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: godot-template-ios.zip
path: spine-godot/godot/bin/ios.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/install-macos-vulkan-sdk.sh
./spine-godot/build/setup.sh $GODOT_TAG false
./spine-godot/build/build-templates-v4.sh macos
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: godot-template-macos.zip
path: spine-godot/godot/bin/macos.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 update
sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev
./spine-godot/build/setup.sh $GODOT_TAG false
./spine-godot/build/build-templates-v4.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-v4.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-v4.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-v4.sh web
- name: Upload artifacts debug
uses: actions/upload-artifact@v2
with:
name: godot-template-web-debug.zip
path: spine-godot/godot/bin/web_debug.zip
- name: Upload artifacts release
uses: actions/upload-artifact@v2
with:
name: godot-template-web-release.zip
path: spine-godot/godot/bin/web_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.editor.x86_64.exe godot-$BRANCH-$GODOT_TAG.exe
mv godot.linuxbsd.editor.x86_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 ios.zip macos.zip windows_64_debug.exe windows_64_release.exe linux_x11_64_debug linux_x11_64_release web_debug.zip web_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

View File

@ -12,9 +12,9 @@ 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.5-stable
GODOT_VERSION: 3.5.stable
EM_VERSION: 3.1.14
GODOT_TAG: 3.5.1-stable
GODOT_VERSION: 3.5.1.stable
jobs:

View File

@ -1010,7 +1010,7 @@ Animation *SkeletonBinary::readAnimation(const String &name, DataInput *input, S
timeline->setFrame(frame, time, a);
if (frame == frameLast) break;
float time2 = readFloat(input);
float a2 = readByte(input) / 255;
float a2 = readByte(input) / 255.0;
switch (readSByte(input)) {
case CURVE_STEPPED:
timeline->setStepped(frame);

View File

@ -15,7 +15,19 @@
"examples/01-helloworld/helloworld.tscn"
],
"cwd": "${workspaceFolder}",
"preLaunchTask": "build-v4"
"preLaunchTask": "build-v4",
"linux": {
"type": "lldb",
"request": "launch",
"name": "debug scene v3",
"program": "${workspaceFolder}/godot/bin/godot.linux.editor.dev.x86_64",
},
"osx": {
"type": "lldb",
"request": "launch",
"name": "debug scene v3",
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64",
},
},
{
"type": "cppvsdbg",
@ -28,14 +40,26 @@
"example-v4",
],
"cwd": "${workspaceFolder}",
"preLaunchTask": "build-v4"
"preLaunchTask": "build-v4",
"linux": {
"type": "lldb",
"request": "launch",
"name": "debug scene v3",
"program": "${workspaceFolder}/godot/bin/godot.linux.editor.dev.x86_64",
},
"osx": {
"type": "lldb",
"request": "launch",
"name": "debug scene v3",
"program": "${workspaceFolder}/godot/bin/godot.macos.editor.dev.arm64",
},
},
{
"type": "cppvsdbg",
"request": "launch",
"name": "debug scene v3",
"cwd": "${workspaceFolder}",
"program": "godot/bin/godot.windows.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.windows.tools.64.exe",
"args": [
"--path",
"example",
@ -46,20 +70,20 @@
"type": "cppdbg",
"request": "launch",
"name": "debug scene v3",
"program": "godot/bin/godot.windows.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.linux.tools.64",
},
"osx": {
"type": "cppdbg",
"type": "lldb",
"request": "launch",
"name": "debug scene v3",
"program": "godot/bin/godot.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.osx.tools.64",
},
},
{
"type": "cppvsdbg",
"request": "launch",
"name": "debug editor v3",
"program": "godot/bin/godot.windows.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.windows.tools.64.exe",
"args": [
"-e",
"--path",
@ -71,13 +95,13 @@
"type": "cppdbg",
"request": "launch",
"name": "debug editor v3",
"program": "godot/bin/godot.windows.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.linux.tools.64",
},
"osx": {
"type": "cppdbg",
"type": "lldb",
"request": "launch",
"name": "debug editor v3",
"program": "godot/bin/godot.tools.64.exe",
"program": "${workspaceFolder}/godot/bin/godot.osx.tools.64",
},
},
]

View File

@ -14,7 +14,7 @@
"16",
"target=editor",
"dev_build=yes",
"custom_modules=\"${workspaceFolder}/spine_godot"
"custom_modules=\"${workspaceFolder}/spine_godot\""
],
"problemMatcher": "$msCompile",
"windows": {
@ -23,7 +23,7 @@
"16",
"target=editor",
"dev_build=yes",
"custom_modules=\"${workspaceFolder}/spine_godot",
"custom_modules=\"${workspaceFolder}/spine_godot\"",
"livepp=${env:LIVEPP}"
]
},
@ -40,14 +40,14 @@
"-j",
"16",
"target=debug",
"custom_modules=\"${workspaceFolder}/spine_godot"
"custom_modules=\"${workspaceFolder}/spine_godot\""
],
"windows": {
"args": [
"-j",
"16",
"target=debug",
"custom_modules=\"${workspaceFolder}/spine_godot",
"custom_modules=\"${workspaceFolder}/spine_godot\"",
"livepp=${env:LIVEPP}"
]
},

View File

@ -28,12 +28,21 @@ spine-godot works with the latest stable Godot 3.5 release. It requires compilat
### Pre-built Godot editor and export template binaries
We provide prebuilt Godot editor and export template binaries for Godot 3.5-stable:
We provide prebuilt Godot editor and export template binaries for Godot 3.5.1-stable:
* [Godot Editor Windows](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5-stable/godot-editor-windows.zip)
* [Godot Editor Linux](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5-stable/godot-editor-linux.zip)
* [Godot Editor macOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5-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.1/3.5-stable/spine-godot-templates-4.1-3.5-stable.tpz)
* [Godot Editor Windows](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5.1-stable/godot-editor-windows.zip)
* [Godot Editor Linux](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5.1-stable/godot-editor-linux.zip)
* [Godot Editor macOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/3.5.1-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.1/3.5.1-stable/spine-godot-templates-4.1-3.5-stable.tpz)
We also provide prebuilt Godot editor and export template binaries for the Godot master branch:
* [Godot 4.0 Editor Windows](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/master/godot-editor-windows.zip)
* [Godot 4.0 Editor Linux](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/master/godot-editor-linux.zip)
* [Godot 4.0 Editor macOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/master/godot-editor-macos.zip)
* [Godot 4.0 Export templates for Windows, Linux, macOS, Web, Android, iOS](https://spine-godot.s3.eu-central-1.amazonaws.com/4.1/master/spine-godot-templates-4.1-master.tpz)
Note that Godot 4.0 is unstable. Use Godot 3.5.1 for production for now.
### Building the Godot editor and export templates locally
@ -70,13 +79,13 @@ The first argument to `built-templates.sh` is the platform to compile the templa
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:
This repository contains a GitHub workflow in `.github/workflows/spine-godot.yml` and `.github/workflows/spine-godot-v4.yml` that allows building all Godot editor and export template binaries through GitHub actions for Godot 3.5.x and Godot 4.0. 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.
3. Manually trigger the `spine-godot` or `spine-godot-v4` workflow.
The resulting binaries will be attached as artifacts to a sucessful workflow run.
The resulting binaries will be attached as artifacts to a successful workflow run.
## Example
Sample projects for both Godot 3.5.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.

106
spine-godot/build/build-templates-v4.sh Normal file → Executable file
View File

@ -38,88 +38,88 @@ 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
scons platform=windows tools=no target=template_release custom_modules="../spine_godot" --jobs=$cpus
scons platform=windows tools=no target=template_debug custom_modules="../spine_godot" --jobs=$cpus
cp bin/godot.windows.template_release.x86_64.exe bin/windows_release_x86_64.exe
cp bin/godot.windows.template_debug.x86_64.exe bin/windows_debug_x86_64.exe
elif [ "$platform" = "macos" ]; then
# --- macOS ---
# generates osx.zip
# generates macos.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
scons platform=macos tools=no target=template_release arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
scons platform=macos tools=no target=template_debug arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
scons platform=macos tools=no target=template_release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
scons platform=macos tools=no target=template_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.universal
lipo -create bin/godot.macos.template_debug.x86_64 bin/godot.macos.template_debug.arm64 -output bin/godot.macos.debug.universal
strip -S -x bin/godot.macos.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
cp -r ../misc/dist/macos_template.app .
mkdir -p macos_template.app/Contents/MacOS
cp godot.macos.universal macos_template.app/Contents/MacOS/godot_macos_release.universal
cp godot.macos.debug.universal macos_template.app/Contents/MacOS/godot_macos_debug.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos*
rm -rf macos.zip
zip -q -9 -r macos.zip macos_template.app
popd
elif [ "$platform" = "ios" ]; then
# --- iOS --
# generates iphone.zip
# generates ios.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
scons p=ios tools=no target=template_release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
scons p=ios tools=no target=template_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
scons p=ios tools=no target=template_release arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
scons p=ios tools=no target=template_release arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
scons p=ios tools=no target=template_debug arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
scons p=ios tools=no target=template_debug arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
lipo -create bin/libgodot.ios.template_release.arm64.simulator.a bin/libgodot.ios.template_release.x86_64.simulator.a -output bin/libgodot.ios.template_release.simulator.a
lipo -create bin/libgodot.ios.template_debug.arm64.simulator.a bin/libgodot.ios.template_debug.x86_64.simulator.a -output bin/libgodot.ios.template_debug.simulator.a
strip -S -x bin/libgodot.ios.template_release.arm64.a
strip -S -x bin/libgodot.ios.template_release.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
cp libgodot.ios.template_release.arm64.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
cp libgodot.ios.template_release.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp libgodot.ios.template_debug.arm64.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
cp libgodot.ios.template_debug.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
rm -rf ios.zip
pushd ios_xcode
zip -q -9 -r ../iphone.zip *
zip -q -9 -r ../ios.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
scons platform=web tools=no target=template_release custom_modules="../spine_godot" --jobs=$cpus
scons platform=web tools=no target=template_debug custom_modules="../spine_godot" --jobs=$cpus
mv bin/godot.web.template_release.wasm32.zip bin/web_release.zip
mv bin/godot.web.template_debug.wasm32.zip bin/web_debug.zip
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
scons platform=android target=template_release android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
scons platform=android target=template_debug android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
scons platform=android target=template_release android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
scons platform=android target=template_debug android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
pushd platform/android/java
chmod a+x gradlew
./gradlew generateGodotTemplates
popd
elif [ "$platform" = "linux" ]; then
# --- Linix ---
# --- Linux ---
# 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
chmod a+x bin/godot.x11.opt.64
chmod a+x 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
scons platform=linuxbsd tools=no target=template_release bits=64 custom_modules="../spine_godot" --jobs=$cpus
scons platform=linuxbsd tools=no target=template_debug bits=64 custom_modules="../spine_godot" --jobs=$cpus
strip bin/godot.linuxbsd.template_release.x86_64
strip bin/godot.linuxbsd.template_debug.x86_64
chmod a+x bin/godot.linuxbsd.template_release.x86_64
chmod a+x bin/godot.linuxbsd.template_debug.x86_64
cp bin/godot.linuxbsd.template_release.x86_64 bin/linux_x11_64_release
cp bin/godot.linuxbsd.template_debug.x86_64 bin/linux_x11_64_debug
else
echo "Unknown platform: $platform"
exit 1

38
spine-godot/build/build-v4.sh Normal file → Executable file
View File

@ -4,22 +4,12 @@ set -e
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
pushd $dir > /dev/null
if [ ! "$#" -eq 1 ]; then
echo "Usage: ./build-v4.sh <target>"
echo
echo "e.g.:"
echo " ./build.sh editor"
echo " ./build.sh template_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%/}"
target=""
dev="false"
if [ -f "../godot/custom.py" ]; then
dev="true"
@ -42,32 +32,26 @@ if [ `uname` == 'Darwin' ] && [ $dev = "false" ]; then
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
cp -r ../misc/dist/macos_tools.app .
mv macos_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
lipo -create godot.macos.editor.arm64 godot.macos.editor.x86_64 -output Godot
strip -S -x Godot
cp Godot Godot.app/Contents/MacOS/Godot
chmod +x Godot.app/Contents/MacOS/Godot
popd
else
if [ "$OSTYPE" = "msys" ]; then
target="$target vsproj=yes livepp=$LIVEPP"
target="vsproj=yes livepp=$LIVEPP"
fi
if [ "$dev" = "true" ]; then
target="$target dev_build=true"
fi
scons $target compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
cp compile_commands.json ../build
if [ -f "bin/godot.x11.opt.tools.64" ]; then
strip bin/godot.x11.opt.tools.64
chmod a+x bin/godot.x11.opt.tools.64
if [ -f "bin/godot.linuxbsd.editor.x86_64" ]; then
strip bin/godot.linuxbsd.editor.x86_64
chmod a+x bin/godot.linuxbsd.editor.x86_64
fi
fi
popd

View File

@ -45,7 +45,7 @@ index 1b55574..8bc0fb1 100644
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
+ else:
+ printf("Specified Live++ path does not exist")
+ print("Specified Live++ path does not exist")
+ else:
+ print("Live++ can only be used with targets 'editor'")
+ else:

View File

@ -45,7 +45,7 @@ index e6829ae..3a7e38d 100644
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
+ else:
+ printf("Specified Live++ path does not exist")
+ print("Specified Live++ path does not exist")
+ else:
+ print("Live++ can only be used with targets 'debug' and 'release_debug'")
+ else:

View File

@ -0,0 +1,9 @@
# Godot binary paths
## 4.0+
* Windows
* Editor
* Debug: godot/bin/godot.windows.editor.dev.x86_64.exe
* Release: godot/bin/godot.windows.editor.x86_64.exe
* Template
* Debug: godot.windows.template_debug.x86_64.exe
* Release: godot.windows.template_release.x86_64.exe

View File

@ -4,14 +4,13 @@
#else
#include "core/engine.h"
#endif
#include "godot/editor/editor_node.h"
#include "scene/animation/animation_player.h"
#include "scene/resources/animation.h"
#ifdef TOOLS_ENABLED
#include "godot/editor/editor_node.h"
#include "editor/plugins/animation_player_editor_plugin.h"
#include "editor/plugins/animation_tree_editor_plugin.h"
#endif
void SpineAnimationTrack::_bind_methods() {

View File

@ -29,7 +29,9 @@
#include "SpineSlotNode.h"
#ifdef TOOLS_ENABLED
#include "editor/editor_node.h"
#endif
#include "scene/main/viewport.h"
void SpineSlotNode::_bind_methods() {

View File

@ -44,20 +44,20 @@ You can include a module in your project via a `<script>` tag from the [unpkg](h
```
// spine-ts Core
<script src="https://unpkg.com/@esotericsoftware/spine-core@4.0.*/dist/iife/spine-core.js">
<script src="https://unpkg.com/@esotericsoftware/spine-core@4.0.*/dist/iife/spine-core.js"></script>
// spine-ts Canvas
<script src="https://unpkg.com/@esotericsoftware/spine-canvas@4.0.*/dist/iife/spine-canvas.js">
<script src="https://unpkg.com/@esotericsoftware/spine-canvas@4.0.*/dist/iife/spine-canvas.js"></script>
// spine-ts WebGL
<script src="https://unpkg.com/@esotericsoftware/spine-webgl@4.0.*/dist/iife/spine-webgl.js">
<script src="https://unpkg.com/@esotericsoftware/spine-webgl@4.0.*/dist/iife/spine-webgl.js"></script>
// spine-ts Player, which requires a spine-player.css as well
<script src="https://unpkg.com/@esotericsoftware/spine-player@4.0.*/dist/iife/spine-player.js">
<script src="https://unpkg.com/@esotericsoftware/spine-player@4.0.*/dist/iife/spine-player.js"></script>
<link rel="stylesheet" href="https://unpkg.com/@esotericsoftware/spine-player@4.0.*/dist/spine-player.css">
// spine-ts ThreeJS
<script src="https://unpkg.com/@esotericsoftware/spine-threejs@4.0.*/dist/iife/spine-threejs.js">
<script src="https://unpkg.com/@esotericsoftware/spine-threejs@4.0.*/dist/iife/spine-threejs.js"></script>
```
We also provide `js.map` source maps. They will be automatically fetched from unpkg when debugging code of a spine-module in Chrome, Firefox, or Safari, mapping the JavaScript code back to its original TypeScript sources.

View File

@ -20,8 +20,7 @@ then
spine-webgl/dist/iife/* \
spine-player/dist/iife/* \
spine-threejs/dist/iife/* \
spine-player/css/spine-player.css \
spine-player/example/external/*
spine-player/css/spine-player.css
curl -f -F "file=@spine-ts.zip" "$TS_UPDATE_URL$BRANCH"
else
echo "Not deploying artifacts. TS_UPDATE_URL and/or BRANCH not set."