Răsfoiți Sursa

Merge branch '4.1' into 4.2-beta

Mario Zechner 2 ani în urmă
părinte
comite
59d700ac3f

+ 368 - 0
.github/workflows/spine-godot-v4.yml

@@ -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
+
+  

+ 3 - 3
.github/workflows/spine-godot.yml

@@ -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:
 

+ 1 - 1
spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp

@@ -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);

+ 34 - 10
spine-godot/.vscode/launch.json

@@ -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",
             },
         },
     ]

+ 4 - 4
spine-godot/.vscode/tasks.json

@@ -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}"
                 ]
             },

+ 17 - 8
spine-godot/README.md

@@ -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.

+ 53 - 53
spine-godot/build/build-templates-v4.sh

@@ -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

+ 11 - 27
spine-godot/build/build-v4.sh

@@ -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

+ 1 - 1
spine-godot/build/livepp-v4.patch

@@ -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:

+ 1 - 1
spine-godot/build/livepp.patch

@@ -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:

+ 9 - 0
spine-godot/build/paths.md

@@ -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

+ 1 - 2
spine-godot/spine_godot/SpineAnimationTrack.cpp

@@ -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() {

+ 2 - 0
spine-godot/spine_godot/SpineSlotNode.cpp

@@ -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() {

+ 5 - 5
spine-ts/README.md

@@ -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/[email protected].*/dist/iife/spine-core.js">
+<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-core.js"></script>
 
 // spine-ts Canvas
-<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-canvas.js">
+<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-canvas.js"></script>
 
 // spine-ts WebGL
-<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-webgl.js">
+<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-webgl.js"></script>
 
 // spine-ts Player, which requires a spine-player.css as well
-<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-player.js">
+<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-player.js"></script>
 <link rel="stylesheet" href="https://unpkg.com/@esotericsoftware/[email protected].*/dist/spine-player.css">
 
 // spine-ts ThreeJS
-<script src="https://unpkg.com/@esotericsoftware/[email protected].*/dist/iife/spine-threejs.js">
+<script src="https://unpkg.com/@esotericsoftware/[email protected].*/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.

+ 1 - 2
spine-ts/build.sh

@@ -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 "[email protected]" "$TS_UPDATE_URL$BRANCH"
 else
 	echo "Not deploying artifacts. TS_UPDATE_URL and/or BRANCH not set."