Pārlūkot izejas kodu

[csharp] Renamed utility method ReadByte to ReadUByte to prevent future porting pitfalls (see preceding commit).

Harald Csaszar 1 gadu atpakaļ
vecāks
revīzija
be25484ac2
2 mainītis faili ar 24 papildinājumiem un 20 dzēšanām
  1. 23 19
      spine-csharp/src/SkeletonBinary.cs
  2. 1 1
      spine-csharp/src/package.json

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

@@ -307,7 +307,7 @@ namespace Spine {
 				if ((flags & 8) != 0) data.rotate = input.ReadFloat();
 				if ((flags & 16) != 0) data.scaleX = input.ReadFloat();
 				if ((flags & 32) != 0) data.shearX = input.ReadFloat();
-				data.step = 1f / input.ReadByte();
+				data.step = 1f / input.ReadUByte();
 				data.inertia = input.ReadFloat();
 				data.strength = input.ReadFloat();
 				data.damping = input.ReadFloat();
@@ -428,7 +428,7 @@ namespace Spine {
 			String attachmentName, bool nonessential) {
 			float scale = this.scale;
 
-			int flags = input.ReadByte();
+			int flags = input.ReadUByte();
 			string name = (flags & 8) != 0 ? input.ReadStringRef() : attachmentName;
 
 			switch ((AttachmentType)(flags & 0x7)) { // 0b111
@@ -658,7 +658,7 @@ namespace Spine {
 			for (int i = 0, n = input.ReadInt(true); i < n; i++) {
 				int slotIndex = input.ReadInt(true);
 				for (int ii = 0, nn = input.ReadInt(true); ii < nn; ii++) {
-					int timelineType = input.ReadByte(), frameCount = input.ReadInt(true), frameLast = frameCount - 1;
+					int timelineType = input.ReadUByte(), frameCount = input.ReadInt(true), frameLast = frameCount - 1;
 					switch (timelineType) {
 					case SLOT_ATTACHMENT: {
 						AttachmentTimeline timeline = new AttachmentTimeline(frameCount, slotIndex);
@@ -678,7 +678,7 @@ namespace Spine {
 							float time2 = input.ReadFloat();
 							float r2 = input.Read() / 255f, g2 = input.Read() / 255f;
 							float b2 = input.Read() / 255f, a2 = input.Read() / 255f;
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -707,7 +707,7 @@ namespace Spine {
 							if (frame == frameLast) break;
 							float time2 = input.ReadFloat();
 							float r2 = input.Read() / 255f, g2 = input.Read() / 255f, b2 = input.Read() / 255f;
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -738,7 +738,7 @@ namespace Spine {
 							float nr = input.Read() / 255f, ng = input.Read() / 255f;
 							float nb = input.Read() / 255f, na = input.Read() / 255f;
 							float nr2 = input.Read() / 255f, ng2 = input.Read() / 255f, nb2 = input.Read() / 255f;
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -775,7 +775,7 @@ namespace Spine {
 							float time2 = input.ReadFloat();
 							float nr = input.Read() / 255f, ng = input.Read() / 255f, nb = input.Read() / 255f;
 							float nr2 = input.Read() / 255f, ng2 = input.Read() / 255f, nb2 = input.Read() / 255f;
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -807,7 +807,7 @@ namespace Spine {
 							if (frame == frameLast) break;
 							float time2 = input.ReadFloat();
 							float a2 = input.Read() / 255f;
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -829,7 +829,7 @@ namespace Spine {
 			for (int i = 0, n = input.ReadInt(true); i < n; i++) {
 				int boneIndex = input.ReadInt(true);
 				for (int ii = 0, nn = input.ReadInt(true); ii < nn; ii++) {
-					int type = input.ReadByte(), frameCount = input.ReadInt(true), bezierCount = input.ReadInt(true);
+					int type = input.ReadUByte(), frameCount = input.ReadInt(true), bezierCount = input.ReadInt(true);
 					switch (type) {
 					case BONE_ROTATE:
 						ReadTimeline(input, timelines, new RotateTimeline(frameCount, bezierCount, boneIndex), 1);
@@ -875,7 +875,7 @@ namespace Spine {
 					timeline.SetFrame(frame, time, mix, softness, input.ReadSByte(), (flags & 1) != 0, (flags & 2) != 0);
 					if (frame == frameLast) break;
 					float time2 = input.ReadFloat(), mix2 = input.ReadFloat(), softness2 = input.ReadFloat() * scale;
-					switch (input.ReadByte()) {
+					switch (input.ReadUByte()) {
 					case CURVE_STEPPED:
 						timeline.SetStepped(frame);
 						break;
@@ -902,7 +902,7 @@ namespace Spine {
 					if (frame == frameLast) break;
 					float time2 = input.ReadFloat(), mixRotate2 = input.ReadFloat(), mixX2 = input.ReadFloat(), mixY2 = input.ReadFloat(),
 					mixScaleX2 = input.ReadFloat(), mixScaleY2 = input.ReadFloat(), mixShearY2 = input.ReadFloat();
-					switch (input.ReadByte()) {
+					switch (input.ReadUByte()) {
 					case CURVE_STEPPED:
 						timeline.SetStepped(frame);
 						break;
@@ -931,7 +931,7 @@ namespace Spine {
 				int index = input.ReadInt(true);
 				PathConstraintData data = skeletonData.pathConstraints.Items[index];
 				for (int ii = 0, nn = input.ReadInt(true); ii < nn; ii++) {
-					int type = input.ReadByte(), frameCount = input.ReadInt(true), bezierCount = input.ReadInt(true);
+					int type = input.ReadUByte(), frameCount = input.ReadInt(true), bezierCount = input.ReadInt(true);
 					switch (type) {
 					case PATH_POSITION:
 						ReadTimeline(input, timelines, new PathConstraintPositionTimeline(frameCount, bezierCount, index),
@@ -949,7 +949,7 @@ namespace Spine {
 							if (frame == frameLast) break;
 							float time2 = input.ReadFloat(), mixRotate2 = input.ReadFloat(), mixX2 = input.ReadFloat(),
 								mixY2 = input.ReadFloat();
-							switch (input.ReadByte()) {
+							switch (input.ReadUByte()) {
 							case CURVE_STEPPED:
 								timeline.SetStepped(frame);
 								break;
@@ -974,7 +974,7 @@ namespace Spine {
 			for (int i = 0, n = input.ReadInt(true); i < n; i++) {
 				int index = input.ReadInt(true) - 1;
 				for (int ii = 0, nn = input.ReadInt(true); ii < nn; ii++) {
-					int type = input.ReadByte(), frameCount = input.ReadInt(true);
+					int type = input.ReadUByte(), frameCount = input.ReadInt(true);
 					if (type == PHYSICS_RESET) {
 						PhysicsConstraintResetTimeline timeline = new PhysicsConstraintResetTimeline(frameCount, index);
 						for (int frame = 0; frame < frameCount; frame++)
@@ -1019,7 +1019,7 @@ namespace Spine {
 						Attachment attachment = skin.GetAttachment(slotIndex, attachmentName);
 						if (attachment == null) throw new SerializationException("Timeline attachment not found: " + attachmentName);
 
-						int timelineType = input.ReadByte(), frameCount = input.ReadInt(true), frameLast = frameCount - 1;
+						int timelineType = input.ReadUByte(), frameCount = input.ReadInt(true), frameLast = frameCount - 1;
 						switch (timelineType) {
 						case ATTACHMENT_DEFORM: {
 							VertexAttachment vertexAttachment = (VertexAttachment)attachment;
@@ -1054,7 +1054,7 @@ namespace Spine {
 								timeline.SetFrame(frame, time, deform);
 								if (frame == frameLast) break;
 								float time2 = input.ReadFloat();
-								switch (input.ReadByte()) {
+								switch (input.ReadUByte()) {
 								case CURVE_STEPPED:
 									timeline.SetStepped(frame);
 									break;
@@ -1150,7 +1150,7 @@ namespace Spine {
 				timeline.SetFrame(frame, time, value);
 				if (frame == frameLast) break;
 				float time2 = input.ReadFloat(), value2 = input.ReadFloat() * scale;
-				switch (input.ReadByte()) {
+				switch (input.ReadUByte()) {
 				case CURVE_STEPPED:
 					timeline.SetStepped(frame);
 					break;
@@ -1171,7 +1171,7 @@ namespace Spine {
 				timeline.SetFrame(frame, time, value1, value2);
 				if (frame == frameLast) break;
 				float time2 = input.ReadFloat(), nvalue1 = input.ReadFloat() * scale, nvalue2 = input.ReadFloat() * scale;
-				switch (input.ReadByte()) {
+				switch (input.ReadUByte()) {
 				case CURVE_STEPPED:
 					timeline.SetStepped(frame);
 					break;
@@ -1214,10 +1214,14 @@ namespace Spine {
 				return input.ReadByte();
 			}
 
-			public byte ReadByte () {
+			/// <summary>Explicit unsigned byte variant to prevent pitfalls porting Java reference implementation
+			/// where byte is signed vs C# where byte is unsigned.</summary>
+			public byte ReadUByte () {
 				return (byte)input.ReadByte();
 			}
 
+			/// <summary>Explicit signed byte variant to prevent pitfalls porting Java reference implementation
+			/// where byte is signed vs C# where byte is unsigned.</summary>
 			public sbyte ReadSByte () {
 				int value = input.ReadByte();
 				if (value == -1) throw new EndOfStreamException();

+ 1 - 1
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.8",
+	"version": "4.2.9",
 	"unity": "2018.3",
 	"author": {
 		"name": "Esoteric Software",