From aa7305e9baa063351877d97d94355d94807b21f0 Mon Sep 17 00:00:00 2001 From: badlogic Date: Fri, 7 Apr 2017 16:20:25 +0200 Subject: [PATCH 1/3] [ts][webgl] Fixed image change demo. --- spine-ts/webgl/demos/imagechanges.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-ts/webgl/demos/imagechanges.js b/spine-ts/webgl/demos/imagechanges.js index 13763667a..78d446b28 100644 --- a/spine-ts/webgl/demos/imagechanges.js +++ b/spine-ts/webgl/demos/imagechanges.js @@ -100,7 +100,7 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var anim = skeletonData.findAnimation(animation); state.setAnimation(0, animation, true); if (name === "alien") { - state.update(anim.duration / 2.5); + state.update(anim.duration / 1.4); } state.apply(skeleton); skeleton.updateWorldTransform(); @@ -108,7 +108,7 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var size = new spine.Vector2(); skeleton.getBounds(offset, size, []); if (name === "alien") { - state.update(-anim.duration / 2.5); + state.update(-anim.duration / 1.4); } var regions = []; From fb6336bf735b8da876eed73d6faab5145e35ac7f Mon Sep 17 00:00:00 2001 From: badlogic Date: Fri, 7 Apr 2017 16:43:45 +0200 Subject: [PATCH 2/3] [ts] Fixed demos --- spine-ts/webgl/demos/hoverboard.js | 11 +++++++++-- spine-ts/webgl/demos/imagechanges.js | 1 + spine-ts/webgl/demos/skins.js | 1 + spine-ts/webgl/demos/stretchyman.js | 2 +- spine-ts/webgl/demos/transforms.js | 7 +++---- spine-ts/webgl/demos/transitions.js | 8 +++++--- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/spine-ts/webgl/demos/hoverboard.js b/spine-ts/webgl/demos/hoverboard.js index eca98057c..ad8128c87 100644 --- a/spine-ts/webgl/demos/hoverboard.js +++ b/spine-ts/webgl/demos/hoverboard.js @@ -143,8 +143,15 @@ var hoverboardDemo = function(loadingComplete, bgColor) { renderer.begin(); renderer.drawSkeleton(skeleton, true); - // renderer.drawSkeletonDebug(skeleton, false, ["root"]); - + renderer.drawSkeletonDebug(skeleton, false, ["root"]); + gl.lineWidth(2); + for (var i = 0; i < controlBones.length; i++) { + var bone = skeleton.findBone(controlBones[i]); + var colorInner = hoverTargets[i] !== null ? spineDemos.HOVER_COLOR_INNER : spineDemos.NON_HOVER_COLOR_INNER; + var colorOuter = hoverTargets[i] !== null ? spineDemos.HOVER_COLOR_OUTER : spineDemos.NON_HOVER_COLOR_OUTER; + renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorInner); + renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter); + } renderer.end(); gl.lineWidth(1); diff --git a/spine-ts/webgl/demos/imagechanges.js b/spine-ts/webgl/demos/imagechanges.js index 78d446b28..ebdff64f2 100644 --- a/spine-ts/webgl/demos/imagechanges.js +++ b/spine-ts/webgl/demos/imagechanges.js @@ -146,6 +146,7 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var x = offset.x + size.x + 100, offsetY = offset.y; if (activeSkeleton === "Alien") { + skeleton.x = -400; renderer.camera.position.x = offset.x + size.x - 100; renderer.camera.position.y = offset.y + size.y / 2 + 100; offsetY += 125; diff --git a/spine-ts/webgl/demos/skins.js b/spine-ts/webgl/demos/skins.js index 2c68faaf5..0712ff943 100644 --- a/spine-ts/webgl/demos/skins.js +++ b/spine-ts/webgl/demos/skins.js @@ -208,6 +208,7 @@ var skinsDemo = function(loadingComplete, bgColor) { state.update(delta); state.apply(skeleton); + skeleton.y = -150; skeleton.updateWorldTransform(); renderer.begin(); diff --git a/spine-ts/webgl/demos/stretchyman.js b/spine-ts/webgl/demos/stretchyman.js index da6430447..16dbc156f 100644 --- a/spine-ts/webgl/demos/stretchyman.js +++ b/spine-ts/webgl/demos/stretchyman.js @@ -175,7 +175,7 @@ var stretchymanDemo = function(loadingComplete, bgColor) { skeleton.updateWorldTransform(); renderer.camera.viewportWidth = bounds.x * 1.2; - renderer.camera.viewportHeight = bounds.y * 1.2; + renderer.camera.viewportHeight = bounds.y * 1.5; renderer.resize(spine.webgl.ResizeMode.Fit); gl.clearColor(bgColor.r, bgColor.g, bgColor.b, bgColor.a); diff --git a/spine-ts/webgl/demos/transforms.js b/spine-ts/webgl/demos/transforms.js index d89b5c684..eff4de706 100644 --- a/spine-ts/webgl/demos/transforms.js +++ b/spine-ts/webgl/demos/transforms.js @@ -60,8 +60,8 @@ var transformsDemo = function(loadingComplete, bgColor) { skeleton.updateWorldTransform(); rotateHandle = skeleton.findBone("rotate-handle"); - renderer.camera.position.x = offset.x + bounds.x / 2; - renderer.camera.position.y = offset.y + bounds.y / 2; + renderer.camera.position.x = offset.x + bounds.x / 2 + 70; + renderer.camera.position.y = offset.y + bounds.y / 2 + 50; renderer.skeletonDebugRenderer.drawRegionAttachments = false; renderer.skeletonDebugRenderer.drawMeshHull = false; @@ -161,10 +161,9 @@ var transformsDemo = function(loadingComplete, bgColor) { function render () { timeKeeper.update(); var delta = timeKeeper.delta; - skeleton.updateWorldTransform(); - renderer.camera.viewportWidth = bounds.x * 1.2; + renderer.camera.viewportWidth = bounds.x * 1.6; renderer.camera.viewportHeight = bounds.y * 1.2; renderer.resize(spine.webgl.ResizeMode.Fit); diff --git a/spine-ts/webgl/demos/transitions.js b/spine-ts/webgl/demos/transitions.js index 458f57e66..968aab432 100644 --- a/spine-ts/webgl/demos/transitions.js +++ b/spine-ts/webgl/demos/transitions.js @@ -123,8 +123,8 @@ var transitionsDemo = function(loadingComplete, bgColor) { renderer.camera.position.x = offset.x + size.x - 50; renderer.camera.position.y = offset.y + size.y / 2 - 40; - renderer.camera.viewportWidth = size.x * 2.4; - renderer.camera.viewportHeight = size.y * 1.2; + renderer.camera.viewportWidth = size.x * 2; + renderer.camera.viewportHeight = size.y * 2; renderer.resize(spine.webgl.ResizeMode.Fit); gl.clearColor(bgColor.r, bgColor.g, bgColor.b, bgColor.a); @@ -134,13 +134,15 @@ var transitionsDemo = function(loadingComplete, bgColor) { state.update(delta); state.apply(skeleton); skeleton.updateWorldTransform(); - skeleton.x = -10; + skeleton.x = -300; + skeleton.y = -100; renderer.drawSkeleton(skeleton, true); stateNoMix.update(delta); stateNoMix.apply(skeletonNoMix); skeletonNoMix.updateWorldTransform(); skeletonNoMix.x = size.x + 45; + skeletonNoMix.y = -100; renderer.drawSkeleton(skeletonNoMix, true); renderer.end(); From facae4cb1264e3fa0f4036e2fb29e564878ee9f7 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 7 Apr 2017 23:11:13 +0800 Subject: [PATCH 3/3] [csharp] Match fewer ifs for mixAlpha fix. https://github.com/EsotericSoftware/spine-runtimes/commit/f8ea8e99ca3e822f9647ededbc5fdde5966e90aa --- spine-csharp/src/AnimationState.cs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 5511b89ae..e9c587815 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -413,22 +413,22 @@ namespace Spine { //from.timelinesRotation.Clear(); var mixingFrom = from.mixingFrom; - float mixProgress = from.mixTime / from.mixDuration; + if (mixingFrom != null && from.mixDuration > 0) { - // A mix was interrupted, mix from the closest animation. - if (!multipleMixing && mixProgress < 0.5f && mixingFrom.animation != AnimationState.EmptyAnimation) { - current.mixingFrom = mixingFrom; - mixingFrom.mixingFrom = from; - mixingFrom.mixTime = from.mixDuration - from.mixTime; - mixingFrom.mixDuration = from.mixDuration; - from.mixingFrom = null; - from = mixingFrom; - } + if (multipleMixing) { + // The interrupted mix will mix out from its current percentage to zero. + current.mixAlpha *= Math.Min(from.mixTime / from.mixDuration, 1); + } else { + // A mix was interrupted, mix from the closest animation. + if (from.mixTime / from.mixDuration < 0.5f && mixingFrom.animation != AnimationState.EmptyAnimation) { + current.mixingFrom = mixingFrom; + mixingFrom.mixingFrom = from; + mixingFrom.mixTime = from.mixDuration - from.mixTime; + mixingFrom.mixDuration = from.mixDuration; + from.mixingFrom = null; + from = mixingFrom; + } - // The interrupted mix will mix out from its current percentage to zero. - if (multipleMixing) current.mixAlpha *= Math.Min(mixProgress, 1); - - if (!multipleMixing) { from.mixAlpha = 0; from.mixTime = 0; from.mixDuration = 0; @@ -650,7 +650,7 @@ namespace Spine { var timelinesItems = timelines.Items; for (int ii = 0, nn = timelines.Count; ii < nn; ii++) propertyIDs.Add(timelinesItems[ii].PropertyId); - + entry = entry.mixingFrom; while (entry != null) { CheckTimelinesUsage(entry, entry.timelinesLast);