diff --git a/spine-ts/spine-construct3/src/aces.json b/spine-ts/spine-construct3/src/aces.json index fe91794ac..6e686338e 100644 --- a/spine-ts/spine-construct3/src/aces.json +++ b/spine-ts/spine-construct3/src/aces.json @@ -316,6 +316,18 @@ } ] }, + { + "id": "set-default-mix", + "scriptName": "SetDefaultMix", + "highlight": false, + "params": [ + { + "id": "duration", + "type": "number", + "initial-value": 0 + } + ] + }, { "id": "set-physics-mode", "scriptName": "SetPhysicsMode", diff --git a/spine-ts/spine-construct3/src/c3runtime/actions.ts b/spine-ts/spine-construct3/src/c3runtime/actions.ts index 8910215fb..aec182b46 100644 --- a/spine-ts/spine-construct3/src/c3runtime/actions.ts +++ b/spine-ts/spine-construct3/src/c3runtime/actions.ts @@ -97,6 +97,10 @@ C3.Plugins.EsotericSoftware_SpineConstruct3.Acts = this.setAnimationMix(fromName, toName, duration); }, + SetDefaultMix (this: SDKInstanceClass, duration: number) { + this.setDefaultMix(duration); + }, + SetPhysicsMode (this: SDKInstanceClass, mode: 0 | 1 | 2 | 3) { this.setPhysicsMode(mode); }, diff --git a/spine-ts/spine-construct3/src/c3runtime/instance.ts b/spine-ts/spine-construct3/src/c3runtime/instance.ts index 8ce1f8d68..e796a3db9 100644 --- a/spine-ts/spine-construct3/src/c3runtime/instance.ts +++ b/spine-ts/spine-construct3/src/c3runtime/instance.ts @@ -616,6 +616,16 @@ class SpineC3Instance extends globalThis.ISDKWorldInstanceBase { } } + public setDefaultMix (duration: number) { + const stateData = this.state?.data; + if (!stateData) { + console.warn('[Spine] setDefaultMix: no state data'); + return; + } + + stateData.defaultMix = duration; + } + public setTrackAlpha (alpha: number, trackIndex: number) { const { state } = this; if (!state) { diff --git a/spine-ts/spine-construct3/src/lang/en-US.json b/spine-ts/spine-construct3/src/lang/en-US.json index cbb920a58..318383661 100644 --- a/spine-ts/spine-construct3/src/lang/en-US.json +++ b/spine-ts/spine-construct3/src/lang/en-US.json @@ -398,6 +398,17 @@ } } }, + "set-default-mix": { + "list-name": "Set default mix", + "display-text": "Set default mix duration to {0}", + "description": "Set the default crossfade duration used when transitioning between animations that don't have a specific mix defined", + "params": { + "duration": { + "name": "Duration", + "desc": "Default blend duration in seconds" + } + } + }, "set-physics-mode": { "list-name": "Set physics mode", "display-text": "Set physics mode to {0}", diff --git a/spine-ts/spine-construct3/src/lang/zh-CN.json b/spine-ts/spine-construct3/src/lang/zh-CN.json index 92953ab31..299d9e49f 100644 --- a/spine-ts/spine-construct3/src/lang/zh-CN.json +++ b/spine-ts/spine-construct3/src/lang/zh-CN.json @@ -398,6 +398,17 @@ } } }, + "set-default-mix": { + "list-name": "设置默认混合", + "display-text": "设置默认混合时长为{0}", + "description": "设置动画过渡时使用的默认混合时长(当没有为特定动画对定义混合时长时使用)", + "params": { + "duration": { + "name": "时长", + "desc": "默认混合时长(秒)" + } + } + }, "set-physics-mode": { "list-name": "设置物理模式", "display-text": "设置物理模式为{0}",