From 5c154fd236e3cd5dc1f7c276170a12013f0b16ec Mon Sep 17 00:00:00 2001 From: Sebastien Flory Date: Mon, 29 Sep 2014 16:51:34 +0200 Subject: [PATCH 1/3] Fix to avoid excessive flushing of polygon batch. It seems that when we use a starling SubTexture instead of an Spine texture, this line will trigger a lot of flushing instead of batching the polygons. This fix avoid that. Btw, you are using Animation.binarySearch1() in AnimationTimeline wich does not exists yet :-p --- .../spine-starling/src/spine/starling/PolygonBatch.as | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as b/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as index 74553ab49..eba94728f 100644 --- a/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as +++ b/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as @@ -125,7 +125,7 @@ internal class PolygonBatch { _support.applyBlendMode(true); } - if (texture != _texture) { + if (!_texture || texture.base != _texture.base) { flush(); _texture = texture; } From 94f969c9a301b5aefb5678eed63c4b90014077d7 Mon Sep 17 00:00:00 2001 From: Sebastien Flory Date: Mon, 29 Sep 2014 18:10:41 +0200 Subject: [PATCH 2/3] Avoid silent Array allocations Hello, In AS3, if a function accepts an arbitrary number of arguments, it will create an Array object behind the scene. Math.min / Math.max are famous culprits :) --- .../spine-starling/src/spine/starling/SkeletonSprite.as | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index 7868c0bfe..aeec9bde9 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -243,10 +243,10 @@ public class SkeletonSprite extends DisplayObject { continue; for (var ii:int = 0; ii < verticesLength; ii += 2) { var x:Number = worldVertices[ii], y:Number = worldVertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); + minX = minX < x ? minX : x; + minY = minY < y ? minY : y; + maxX = maxX > x ? maxX : x; + maxY = maxY > y ? maxY : y; } } From 01c990c618e107c31eddac5ee49fd88bb65e0c22 Mon Sep 17 00:00:00 2001 From: Fenrisul Date: Mon, 29 Sep 2014 14:23:20 -0700 Subject: [PATCH 3/3] [Unity Bugfix] Auto Ingest failure when atlas contains EOL CLRF after manual editing. [Unity] Max texture size automatically set to 2048 --- .../Assets/spine-unity/Editor/SpineEditorUtilities.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs index 3f0a9d403..606412702 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs @@ -368,8 +368,12 @@ public class SpineEditorUtilities : AssetPostprocessor { AtlasAsset atlasAsset = AtlasAsset.CreateInstance(); atlasAsset.atlasFile = atlasText; - - string[] atlasLines = atlasText.text.Split('\n'); + + //strip CR + string atlasStr = atlasText.text; + atlasStr = atlasStr.Replace("\r", ""); + + string[] atlasLines = atlasStr.Split('\n'); List pageFiles = new List(); for(int i = 0; i < atlasLines.Length-1; i++){ if(atlasLines[i].Length == 0) @@ -385,6 +389,8 @@ public class SpineEditorUtilities : AssetPostprocessor { TextureImporter texImporter = (TextureImporter)TextureImporter.GetAtPath(texturePath); texImporter.textureFormat = TextureImporterFormat.AutomaticTruecolor; texImporter.mipmapEnabled = false; + //TODO: Get actual size from atlas data + texImporter.maxTextureSize = 2048; EditorUtility.SetDirty(texImporter); AssetDatabase.ImportAsset(texturePath); AssetDatabase.SaveAssets();