Browse Source

Merge branch '3.8' into 3.9-beta

badlogic 6 years ago
parent
commit
e940f72d91

BIN
spine-as3/spine-as3-example/lib/spine-as3.swc


+ 11 - 3
spine-as3/spine-as3/src/spine/SkeletonBinary.as

@@ -277,13 +277,19 @@ package spine {
 		}
 		
 		private function readSkin (input: BinaryInput, skeletonData: SkeletonData, defaultSkin: Boolean, nonessential: Boolean): Skin {
-			var skin : Skin = new Skin(defaultSkin ? "default" : input.readStringRef());
+			var skin : Skin = null;
 			var i : int = 0;
 			var n : int = 0;
 			var ii : int;
 			var nn: int;
+			var slotCount: int;
 
-			if (!defaultSkin) {
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0) return null;
+				skin = new Skin("default");
+			} else {
+				skin = new Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -294,9 +300,11 @@ package spine {
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+					
+				slotCount = input.readInt(true);
 			}
 
-			for (i = 0, n = input.readInt(true); i < n; i++) {
+			for (i = 0; i < slotCount; i++) {
 				var slotIndex : int = input.readInt(true);
 				for (ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name : String = input.readStringRef();

+ 12 - 7
spine-c/spine-c/src/spine/SkeletonBinary.c

@@ -825,12 +825,15 @@ spAttachment* spSkeletonBinary_readAttachment(spSkeletonBinary* self, _dataInput
 
 spSkin* spSkeletonBinary_readSkin(spSkeletonBinary* self, _dataInput* input, int/*bool*/ defaultSkin,
 		spSkeletonData* skeletonData, int/*bool*/ nonessential) {
-	spSkin* skin;
-	int i, n, ii, nn;
-	const char* skinName = defaultSkin ? "default" : readStringRef(input, skeletonData);
-	skin = spSkin_create(skinName);
-
-	if (!defaultSkin) {
+	spSkin *skin;
+	int i, n, ii, nn, slotCount;
+
+	if (defaultSkin) {
+		slotCount = readVarint(input, 1);
+		if (slotCount == 0) return 0;
+		skin = spSkin_create("default");
+	} else {
+		skin = spSkin_create(readStringRef(input, skeletonData));
 		for (i = 0, n = readVarint(input, 1); i < n; i++)
 			spBoneDataArray_add(skin->bones, skeletonData->bones[readVarint(input, 1)]);
 
@@ -842,9 +845,11 @@ spSkin* spSkeletonBinary_readSkin(spSkeletonBinary* self, _dataInput* input, int
 
 		for (i = 0, n = readVarint(input, 1); i < n; i++)
 			spPathConstraintDataArray_add(skin->pathConstraints, skeletonData->pathConstraints[readVarint(input, 1)]);
+
+		slotCount = readVarint(input, 1);
 	}
 
-	for (i = 0, n = readVarint(input, 1); i < n; ++i) {
+	for (i = 0; i < slotCount; ++i) {
 		int slotIndex = readVarint(input, 1);
 		for (ii = 0, nn = readVarint(input, 1); ii < nn; ++ii) {
 			const char* name = readStringRef(input, skeletonData);

+ 10 - 4
spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp

@@ -457,9 +457,14 @@ int SkeletonBinary::readVarint(DataInput *input, bool optimizePositive) {
 
 Skin *
 SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData *skeletonData, bool nonessential) {
-	Skin *skin = new(__FILE__, __LINE__) Skin(defaultSkin ? "default" : readStringRef(input, skeletonData));
-
-	if (!defaultSkin) {
+	Skin *skin;
+	int slotCount = 0;
+	if (defaultSkin) {
+		slotCount = readVarint(input, true);
+		if (slotCount == 0) return NULL;
+		skin = new(__FILE__, __LINE__) Skin("default");
+	} else {
+		skin = new(__FILE__, __LINE__) Skin(readStringRef(input, skeletonData));
 		for (int i = 0, n = readVarint(input, true); i < n; i++)
 			skin->getBones().add(skeletonData->_bones[readVarint(input, true)]);
 
@@ -471,9 +476,10 @@ SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData *skele
 
 		for (int i = 0, n = readVarint(input, true); i < n; i++)
 			skin->getConstraints().add(skeletonData->_pathConstraints[readVarint(input, true)]);
+		slotCount = readVarint(input, true);
 	}
 
-	for (int i = 0, n = readVarint(input, true); i < n; ++i) {
+	for (int i = 0; i < slotCount; ++i) {
 		int slotIndex = readVarint(input, true);
 		for (int ii = 0, nn = readVarint(input, true); ii < nn; ++ii) {
 			String name(readStringRef(input, skeletonData));

+ 19 - 12
spine-csharp/src/SkeletonBinary.cs

@@ -73,7 +73,7 @@ namespace Spine {
 			this.attachmentLoader = attachmentLoader;
 			Scale = 1;
 		}
-			
+
 		#if !ISUNITY && WINDOWS_STOREAPP
 		private async Task<SkeletonData> ReadFile(string path) {
 			var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
@@ -160,7 +160,7 @@ namespace Spine {
 				String name = input.ReadString();
 				BoneData parent = i == 0 ? null : skeletonData.bones.Items[input.ReadInt(true)];
 				BoneData data = new BoneData(i, name, parent);
-				data.rotation = input.ReadFloat();		
+				data.rotation = input.ReadFloat();
 				data.x = input.ReadFloat() * scale;
 				data.y = input.ReadFloat() * scale;
 				data.scaleX = input.ReadFloat();
@@ -314,7 +314,7 @@ namespace Spine {
 			o = skeletonData.animations.Resize(n = input.ReadInt(true)).Items;
 			for (int i = 0; i < n; i++)
 				o[i] = ReadAnimation(input.ReadString(), input, skeletonData);
-			
+
 			return skeletonData;
 		}
 
@@ -322,13 +322,19 @@ namespace Spine {
 		/// <returns>May be null.</returns>
 		private Skin ReadSkin (SkeletonInput input, SkeletonData skeletonData, bool defaultSkin, bool nonessential) {
 
-			Skin skin = new Skin(defaultSkin ? "default" : input.ReadStringRef());
+			Skin skin;
+			int slotCount;
 
-			if (!defaultSkin) {
+			if (defaultSkin) {
+				slotCount = input.ReadInt(true);
+				if (slotCount == 0) return null;
+				skin = new Skin("default"));
+			} else {
+				skin = new Skin(input.ReadStringRef());
 				Object[] bones = skin.bones.Resize(input.ReadInt(true)).Items;
 				for (int i = 0, n = skin.bones.Count; i < n; i++)
 					bones[i] = skeletonData.bones.Items[input.ReadInt(true)];
-				
+
 				for (int i = 0, n = input.ReadInt(true); i < n; i++)
 					skin.constraints.Add(skeletonData.ikConstraints.Items[input.ReadInt(true)]);
 				for (int i = 0, n = input.ReadInt(true); i < n; i++)
@@ -336,8 +342,9 @@ namespace Spine {
 				for (int i = 0, n = input.ReadInt(true); i < n; i++)
 					skin.constraints.Add(skeletonData.pathConstraints.Items[input.ReadInt(true)]);
 				skin.constraints.TrimExcess();
+				slotCount = input.ReadInt(true);
 			}
-			for (int i = 0, n = input.ReadInt(true); i < n; i++) {
+			for (int i = 0; i < slotCount; i++) {
 				int slotIndex = input.ReadInt(true);
 				for (int ii = 0, nn = input.ReadInt(true); ii < nn; ii++) {
 					String name = input.ReadStringRef();
@@ -360,7 +367,7 @@ namespace Spine {
 			switch (type) {
 			case AttachmentType.Region: {
 					String path = input.ReadStringRef();
-					float rotation = input.ReadFloat();		
+					float rotation = input.ReadFloat();
 					float x = input.ReadFloat();
 					float y = input.ReadFloat();
 					float scaleX = input.ReadFloat();
@@ -391,7 +398,7 @@ namespace Spine {
 					int vertexCount = input.ReadInt(true);
 					Vertices vertices = ReadVertices(input, vertexCount);
 					if (nonessential) input.ReadInt(); //int color = nonessential ? input.ReadInt() : 0; // Avoid unused local warning.
-					
+
 					BoundingBoxAttachment box = attachmentLoader.NewBoundingBoxAttachment(skin, name);
 					if (box == null) return null;
 					box.worldVerticesLength = vertexCount << 1;
@@ -484,7 +491,7 @@ namespace Spine {
 					path.bones = vertices.bones;
 					path.lengths = lengths;
 					// skipped porting: if (nonessential) Color.rgba8888ToColor(path.getColor(), color);
-					return path;                    
+					return path;
 				}
 			case AttachmentType.Point: {
 					float rotation = input.ReadFloat();
@@ -560,7 +567,7 @@ namespace Spine {
 		private int[] ReadShortArray (SkeletonInput input) {
 			int n = input.ReadInt(true);
 			int[] array = new int[n];
-			for (int i = 0; i < n; i++) 
+			for (int i = 0; i < n; i++)
 				array[i] = (input.ReadByte() << 8) | input.ReadByte();
 			return array;
 		}
@@ -719,7 +726,7 @@ namespace Spine {
 								float timelineScale = 1;
 								if (timelineType == PATH_SPACING) {
 									timeline = new PathConstraintSpacingTimeline(frameCount);
-									if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) timelineScale = scale; 
+									if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) timelineScale = scale;
 								} else {
 									timeline = new PathConstraintPositionTimeline(frameCount);
 									if (data.positionMode == PositionMode.Fixed) timelineScale = scale;

+ 12 - 4
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java

@@ -328,12 +328,18 @@ public class SkeletonBinary {
 		return skeletonData;
 	}
 
+	/** @return May be null. */
 	private Skin readSkin (SkeletonInput input, SkeletonData skeletonData, boolean defaultSkin, boolean nonessential)
 		throws IOException {
 
-		Skin skin = new Skin(defaultSkin ? "default" : input.readStringRef());
-
-		if (!defaultSkin) {
+		Skin skin;
+		int slotCount;
+		if (defaultSkin) {
+			slotCount = input.readInt(true);
+			if (slotCount == 0) return null;
+			skin = new Skin("default");
+		} else {
+			skin = new Skin(input.readStringRef());
 			Object[] bones = skin.bones.setSize(input.readInt(true));
 			for (int i = 0, n = skin.bones.size; i < n; i++)
 				bones[i] = skeletonData.bones.get(input.readInt(true));
@@ -345,9 +351,11 @@ public class SkeletonBinary {
 			for (int i = 0, n = input.readInt(true); i < n; i++)
 				skin.constraints.add(skeletonData.pathConstraints.get(input.readInt(true)));
 			skin.constraints.shrink();
+
+			slotCount = input.readInt(true);
 		}
 
-		for (int i = 0, n = input.readInt(true); i < n; i++) {
+		for (int i = 0; i < slotCount; i++) {
 			int slotIndex = input.readInt(true);
 			for (int ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 				String name = input.readStringRef();

BIN
spine-starling/spine-starling-example/lib/spine-as3.swc


BIN
spine-starling/spine-starling/lib/spine-as3.swc


+ 12 - 3
spine-ts/build/spine-all.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 12 - 3
spine-ts/build/spine-canvas.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-canvas.js.map


+ 12 - 3
spine-ts/build/spine-core.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-core.js.map


+ 12 - 3
spine-ts/build/spine-player.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-player.js.map


+ 12 - 3
spine-ts/build/spine-threejs.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-threejs.js.map


+ 12 - 3
spine-ts/build/spine-webgl.js

@@ -4222,8 +4222,16 @@ var spine;
 			return skeletonData;
 		};
 		SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {
-			var skin = new spine.Skin(defaultSkin ? "default" : input.readStringRef());
-			if (!defaultSkin) {
+			var skin = null;
+			var slotCount = 0;
+			if (defaultSkin) {
+				slotCount = input.readInt(true);
+				if (slotCount == 0)
+					return null;
+				skin = new spine.Skin("default");
+			}
+			else {
+				skin = new spine.Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (var i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -4233,8 +4241,9 @@ var spine;
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (var i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+				slotCount = input.readInt(true);
 			}
-			for (var i = 0, n = input.readInt(true); i < n; i++) {
+			for (var i = 0; i < slotCount; i++) {
 				var slotIndex = input.readInt(true);
 				for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					var name_3 = input.readStringRef();

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-webgl.js.map


+ 11 - 3
spine-ts/core/src/SkeletonBinary.ts

@@ -245,9 +245,15 @@ module spine {
 		}
 
 		private readSkin (input: BinaryInput, skeletonData: SkeletonData, defaultSkin: boolean, nonessential: boolean): Skin {
-			let skin = new Skin(defaultSkin ? "default" : input.readStringRef());
+			let skin = null;
+			let slotCount = 0;
 
-			if (!defaultSkin) {
+			if (defaultSkin) {
+				slotCount = input.readInt(true)
+				if (slotCount == 0) return null;
+				skin = new Skin("default");
+			} else {
+				skin = new Skin(input.readStringRef());
 				skin.bones.length = input.readInt(true);
 				for (let i = 0, n = skin.bones.length; i < n; i++)
 					skin.bones[i] = skeletonData.bones[input.readInt(true)];
@@ -258,9 +264,11 @@ module spine {
 					skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);
 				for (let i = 0, n = input.readInt(true); i < n; i++)
 					skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
+
+				slotCount = input.readInt(true);
 			}
 
-			for (let i = 0, n = input.readInt(true); i < n; i++) {
+			for (let i = 0; i < slotCount; i++) {
 				let slotIndex = input.readInt(true);
 				for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {
 					let name = input.readStringRef();

Some files were not shown because too many files changed in this diff