[csharp] Fixed a mistake of last porting commit 217ebe8: Binary format, added a string table. Changed some lines to be closer to ref-impl.

This commit is contained in:
Harald Csaszar 2019-06-05 20:57:20 +02:00
parent 217ebe8888
commit 55daa017d5

View File

@ -171,7 +171,6 @@ namespace Spine {
data.transformMode = TransformModeValues[input.ReadInt(true)]; data.transformMode = TransformModeValues[input.ReadInt(true)];
data.skinRequired = input.ReadBoolean(); data.skinRequired = input.ReadBoolean();
if (nonessential) input.ReadInt(); // Skip bone color. if (nonessential) input.ReadInt(); // Skip bone color.
skeletonData.bones.Add(data);
o[i] = data; o[i] = data;
} }
@ -397,6 +396,7 @@ namespace Spine {
box.worldVerticesLength = vertexCount << 1; box.worldVerticesLength = vertexCount << 1;
box.vertices = vertices.vertices; box.vertices = vertices.vertices;
box.bones = vertices.bones; box.bones = vertices.bones;
// skipped porting: if (nonessential) Color.rgba8888ToColor(box.getColor(), color);
return box; return box;
} }
case AttachmentType.Mesh: { case AttachmentType.Mesh: {
@ -482,6 +482,7 @@ namespace Spine {
path.vertices = vertices.vertices; path.vertices = vertices.vertices;
path.bones = vertices.bones; path.bones = vertices.bones;
path.lengths = lengths; path.lengths = lengths;
// skipped porting: if (nonessential) Color.rgba8888ToColor(path.getColor(), color);
return path; return path;
} }
case AttachmentType.Point: { case AttachmentType.Point: {
@ -495,7 +496,7 @@ namespace Spine {
point.x = x * scale; point.x = x * scale;
point.y = y * scale; point.y = y * scale;
point.rotation = rotation; point.rotation = rotation;
//if (nonessential) point.color = color; // skipped porting: if (nonessential) point.color = color;
return point; return point;
} }
case AttachmentType.Clipping: { case AttachmentType.Clipping: {
@ -510,6 +511,7 @@ namespace Spine {
clip.worldVerticesLength = vertexCount << 1; clip.worldVerticesLength = vertexCount << 1;
clip.vertices = vertices.vertices; clip.vertices = vertices.vertices;
clip.bones = vertices.bones; clip.bones = vertices.bones;
// skipped porting: if (nonessential) Color.rgba8888ToColor(clip.getColor(), color);
return clip; return clip;
} }
} }
@ -597,7 +599,7 @@ namespace Spine {
if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline);
} }
timelines.Add(timeline); timelines.Add(timeline);
duration = Math.Max(duration, timeline.frames[(timeline.FrameCount - 1) * ColorTimeline.ENTRIES]); duration = Math.Max(duration, timeline.frames[(frameCount - 1) * ColorTimeline.ENTRIES]);
break; break;
} }
case SLOT_TWO_COLOR: { case SLOT_TWO_COLOR: {
@ -619,7 +621,7 @@ namespace Spine {
if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline);
} }
timelines.Add(timeline); timelines.Add(timeline);
duration = Math.Max(duration, timeline.frames[(timeline.FrameCount - 1) * TwoColorTimeline.ENTRIES]); duration = Math.Max(duration, timeline.frames[(frameCount - 1) * TwoColorTimeline.ENTRIES]);
break; break;
} }
} }
@ -659,8 +661,8 @@ namespace Spine {
} }
timeline.boneIndex = boneIndex; timeline.boneIndex = boneIndex;
for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) {
timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat() * timelineScale, input.ReadFloat() timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat() * timelineScale,
* timelineScale); input.ReadFloat() * timelineScale);
if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline);
} }
timelines.Add(timeline); timelines.Add(timeline);
@ -671,7 +673,7 @@ namespace Spine {
} }
} }
// IK timelines. // IK constraint timelines.
for (int i = 0, n = input.ReadInt(true); i < n; i++) { for (int i = 0, n = input.ReadInt(true); i < n; i++) {
int index = input.ReadInt(true); int index = input.ReadInt(true);
int frameCount = input.ReadInt(true); int frameCount = input.ReadInt(true);
@ -679,7 +681,8 @@ namespace Spine {
ikConstraintIndex = index ikConstraintIndex = index
}; };
for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) {
timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat(), input.ReadSByte(), input.ReadBoolean(), input.ReadBoolean()); timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat(), input.ReadSByte(), input.ReadBoolean(),
input.ReadBoolean());
if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline);
} }
timelines.Add(timeline); timelines.Add(timeline);
@ -693,7 +696,8 @@ namespace Spine {
TransformConstraintTimeline timeline = new TransformConstraintTimeline(frameCount); TransformConstraintTimeline timeline = new TransformConstraintTimeline(frameCount);
timeline.transformConstraintIndex = index; timeline.transformConstraintIndex = index;
for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) {
timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat(), input.ReadFloat(), input.ReadFloat(), input.ReadFloat()); timeline.SetFrame(frameIndex, input.ReadFloat(), input.ReadFloat(), input.ReadFloat(), input.ReadFloat(),
input.ReadFloat());
if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline);
} }
timelines.Add(timeline); timelines.Add(timeline);
@ -861,6 +865,12 @@ namespace Spine {
} }
} }
internal class Vertices
{
public int[] bones;
public float[] vertices;
}
internal class SkeletonInput { internal class SkeletonInput {
private byte[] chars = new byte[32]; private byte[] chars = new byte[32];
internal ExposedList<String> strings; internal ExposedList<String> strings;
@ -967,10 +977,5 @@ namespace Spine {
} }
} }
} }
internal class Vertices {
public int[] bones;
public float[] vertices;
}
} }
} }