From a73d0bc40d7f7c9db0a79813c3adadfc27de6939 Mon Sep 17 00:00:00 2001 From: Jason Knight <78934401+jasonwinterpixel@users.noreply.github.com> Date: Tue, 30 Apr 2024 02:41:07 -0600 Subject: [PATCH 1/8] Dont do init transform if you dont need to. (#2495) --- spine-godot/spine_godot/SpineBoneNode.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/spine-godot/spine_godot/SpineBoneNode.cpp b/spine-godot/spine_godot/SpineBoneNode.cpp index 9e071189d..f9911a150 100644 --- a/spine-godot/spine_godot/SpineBoneNode.cpp +++ b/spine-godot/spine_godot/SpineBoneNode.cpp @@ -232,9 +232,11 @@ SpineConstant::BoneMode SpineBoneNode::get_bone_mode() { } void SpineBoneNode::set_bone_mode(SpineConstant::BoneMode _bone_mode) { - bone_mode = _bone_mode; - SpineSprite *sprite = find_parent_sprite(); - init_transform(sprite); + if (bone_mode != _bone_mode) { + bone_mode = _bone_mode; + SpineSprite *sprite = find_parent_sprite(); + init_transform(sprite); + } } void SpineBoneNode::set_debug_thickness(float _thickness) { From 527b928db1608696aaad466c3f934f746b5e1e92 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 6 May 2024 17:34:06 +0200 Subject: [PATCH 2/8] [csharp] Fixed undefined MathUtils.Atan2Deg when USE_FAST_SIN_COS_ATAN2_APPROXIMATIONS enabled. Closes #2517. --- spine-csharp/src/MathUtils.cs | 4 ++++ spine-csharp/src/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/spine-csharp/src/MathUtils.cs b/spine-csharp/src/MathUtils.cs index 1ccc947b2..a16ca1f95 100644 --- a/spine-csharp/src/MathUtils.cs +++ b/spine-csharp/src/MathUtils.cs @@ -78,6 +78,10 @@ namespace Spine { return sin[(int)((degrees + 90) * DegToIndex) & SIN_MASK]; } + static public float Atan2Deg (float y, float x) { + return Atan2(y, x) * RadDeg; + } + /// Returns atan2 in radians, faster but less accurate than Math.Atan2. Average error of 0.00231 radians (0.1323 /// degrees), largest error of 0.00488 radians (0.2796 degrees). static public float Atan2 (float y, float x) { diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 67160d5a1..9c0178cc2 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.22", + "version": "4.2.23", "unity": "2018.3", "author": { "name": "Esoteric Software", From 24074454d15259e3f75742bc288339cef2546c54 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 6 May 2024 19:40:19 +0200 Subject: [PATCH 3/8] [unity] Fixed UpdateWhenInvisible being incorrect when using SkeletonRenderSeparator. See #2519. --- .../Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs | 4 +++- spine-unity/Assets/Spine/package.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs index 7912a6d5f..30f5013e9 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -239,6 +239,7 @@ namespace Spine.Unity { Initialize(false); if (meshRenderer) meshRenderer.enabled = false; + updateMode = UpdateMode.FullUpdate; } } remove { @@ -331,7 +332,8 @@ namespace Spine.Unity { public virtual void Awake () { Initialize(false); - updateMode = updateWhenInvisible; + if (generateMeshOverride == null || !disableRenderingOnOverride) + updateMode = updateWhenInvisible; } #if UNITY_EDITOR && CONFIGURABLE_ENTER_PLAY_MODE diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index b4d7cfaf4..8c52f4dce 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.1.41", + "version": "4.1.42", "unity": "2018.3", "author": { "name": "Esoteric Software", From 77e859cb31a5fdafd20d72a59cba256bf7a5619b Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 6 May 2024 20:46:14 +0200 Subject: [PATCH 4/8] [unity] Improved UpdateWhenInvisible logic for SkeletonRenderSeparator. Closes #2519. --- .../SkeletonRenderSeparator.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs index 627647599..77e33cd2d 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs @@ -73,6 +73,7 @@ namespace Spine.Unity { [Tooltip("Copies MeshRenderer flags into each parts renderer")] public bool copyMeshRendererFlags = true; public List partsRenderers = new List(); + [System.NonSerialized] public bool isVisible = true; #if UNITY_EDITOR void Reset () { @@ -197,6 +198,10 @@ namespace Spine.Unity { skeletonRenderer.LateUpdateMesh(); } + public void Update () { + UpdateVisibility(); + } + public void OnDisable () { if (skeletonRenderer == null) return; #if SPINE_OPTIONAL_RENDEROVERRIDE @@ -206,6 +211,24 @@ namespace Spine.Unity { ClearPartsRendererMeshes(); } + public void UpdateVisibility () { + foreach (SkeletonPartsRenderer partsRenderer in partsRenderers) { + if (partsRenderer == null) continue; + + if (partsRenderer.MeshRenderer.isVisible) { + if (!isVisible) { + skeletonRenderer.OnBecameVisible(); + isVisible = true; + } + return; + } + } + if (isVisible) { + isVisible = false; + skeletonRenderer.OnBecameInvisible(); + } + } + MaterialPropertyBlock copiedBlock; void HandleRender (SkeletonRendererInstruction instruction) { From b8580bb4edd4502d2c594256fa87c2f69689e0c0 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 6 May 2024 16:21:15 +0200 Subject: [PATCH 5/8] [ts] setMixDurationWithDelta -> setMixDurationWithDelay --- spine-ts/spine-core/src/AnimationState.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spine-ts/spine-core/src/AnimationState.ts b/spine-ts/spine-core/src/AnimationState.ts index 9b5b949b7..a3f2ded14 100644 --- a/spine-ts/spine-core/src/AnimationState.ts +++ b/spine-ts/spine-core/src/AnimationState.ts @@ -953,10 +953,10 @@ export class TrackEntry { this._mixDuration = mixDuration; } - setMixDurationWithDelta(mixDuration: number, delay: number) { + setMixDurationWithDelay(mixDuration: number, delay: number) { this._mixDuration = mixDuration; - if (this.previous != null && this.delay <= 0) this.delay += this.previous.getTrackComplete() - delay; - this.delay = this.delay; + if (this.previous != null && delay <= 0) delay += this.previous.getTrackComplete() - mixDuration; + this.delay = delay; } /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which From 665d0c074dd779275abeb0a0da6a7a0fdd7c4d7a Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 6 May 2024 16:22:12 +0200 Subject: [PATCH 6/8] [ts] Release 4.2.41 --- spine-ts/package-lock.json | 34 ++++++++++++++--------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 ++-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 +++---- spine-ts/spine-pixi/package.json | 4 ++-- spine-ts/spine-player/package.json | 4 ++-- spine-ts/spine-threejs/package.json | 4 ++-- spine-ts/spine-webgl/package.json | 4 ++-- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 25050ce4d..a474d73d0 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.40", + "version": "4.2.41", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -2989,33 +2989,33 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.40", - "@esotericsoftware/spine-core": "4.2.40", - "@esotericsoftware/spine-webgl": "4.2.40" + "@esotericsoftware/spine-canvas": "4.2.41", + "@esotericsoftware/spine-core": "4.2.41", + "@esotericsoftware/spine-webgl": "4.2.41" } }, "spine-pixi": { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3028,26 +3028,26 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.40" + "@esotericsoftware/spine-webgl": "4.2.41" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.40", + "version": "4.2.41", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index db338355c..792e339e1 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index eb15417d2..b428f690c 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } } \ No newline at end of file diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 657c442c7..612fcd5c0 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index 0f3bc5059..03ff69938 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,8 +31,8 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40", - "@esotericsoftware/spine-webgl": "4.2.40", - "@esotericsoftware/spine-canvas": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41", + "@esotericsoftware/spine-webgl": "4.2.41", + "@esotericsoftware/spine-canvas": "4.2.41" } } \ No newline at end of file diff --git a/spine-ts/spine-pixi/package.json b/spine-ts/spine-pixi/package.json index 7ec52f19e..e18904598 100644 --- a/spine-ts/spine-pixi/package.json +++ b/spine-ts/spine-pixi/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index 570b63868..e05166d67 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.40" + "@esotericsoftware/spine-webgl": "4.2.41" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index 984e44d25..6c2f1aa4b 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index 836d78e0c..e6d1939b8 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.40", + "version": "4.2.41", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.40" + "@esotericsoftware/spine-core": "4.2.41" } } \ No newline at end of file From 524b65f43cd4cdb754966746b1e6595f1c501a28 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 7 May 2024 09:59:19 +0200 Subject: [PATCH 7/8] Formatting --- spine-ts/spine-core/src/AnimationState.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-ts/spine-core/src/AnimationState.ts b/spine-ts/spine-core/src/AnimationState.ts index a3f2ded14..56908a203 100644 --- a/spine-ts/spine-core/src/AnimationState.ts +++ b/spine-ts/spine-core/src/AnimationState.ts @@ -953,7 +953,7 @@ export class TrackEntry { this._mixDuration = mixDuration; } - setMixDurationWithDelay(mixDuration: number, delay: number) { + setMixDurationWithDelay (mixDuration: number, delay: number) { this._mixDuration = mixDuration; if (this.previous != null && delay <= 0) delay += this.previous.getTrackComplete() - mixDuration; this.delay = delay; From 126a8f02aa388ec84f4b247e9423be5f848527f4 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 7 May 2024 10:09:07 +0200 Subject: [PATCH 8/8] [godot] Remove 4.0 build, upgrade to latest Scons. --- .github/actions/setup-godot-deps/action.yml | 4 ++-- .github/workflows/spine-godot-v4-all.yml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup-godot-deps/action.yml b/.github/actions/setup-godot-deps/action.yml index 8fd40040e..3df153ec9 100644 --- a/.github/actions/setup-godot-deps/action.yml +++ b/.github/actions/setup-godot-deps/action.yml @@ -12,7 +12,7 @@ runs: steps: # Use python 3.x release (works cross platform) - name: Set up Python 3.x - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: # Semantic version range syntax or exact version of a Python version python-version: ${{ inputs.python-version }} @@ -23,7 +23,7 @@ runs: shell: bash run: | python -c "import sys; print(sys.version)" - python -m pip install scons==4.4.0 + python -m pip install scons==4.7.0 scons --version - name: Setup dotnet 6 diff --git a/.github/workflows/spine-godot-v4-all.yml b/.github/workflows/spine-godot-v4-all.yml index 84915cbd9..e967a7abb 100644 --- a/.github/workflows/spine-godot-v4-all.yml +++ b/.github/workflows/spine-godot-v4-all.yml @@ -14,7 +14,6 @@ jobs: matrix: version: [ - {"tag": "4.0.4-stable", "version": "4.0.4.stable", "mono": false}, {"tag": "4.1.3-stable", "version": "4.1.3.stable", "mono": false}, {"tag": "4.1.3-stable", "version": "4.1.3.stable", "mono": true}, {"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": false},