NathanSweet 9 ani în urmă
părinte
comite
8bc8595290
1 a modificat fișierele cu 12 adăugiri și 11 ștergeri
  1. 12 11
      spine-c/src/spine/Animation.c

+ 12 - 11
spine-c/src/spine/Animation.c

@@ -651,7 +651,7 @@ void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, fl
 
 void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
-	int frameIndex, i;
+	int frameIndex, i, vertexCount;
 	float percent, frameTime;
 	const float* prevVertices;
 	const float* nextVertices;
@@ -662,24 +662,25 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
 
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 
-	if (slot->attachmentVerticesCount < self->frameVerticesCount) {
-		if (slot->attachmentVerticesCapacity < self->frameVerticesCount) {
+	vertexCount = self->frameVerticesCount;
+	if (slot->attachmentVerticesCount < vertexCount) {
+		if (slot->attachmentVerticesCapacity < vertexCount) {
 			FREE(slot->attachmentVertices);
-			slot->attachmentVertices = MALLOC(float, self->frameVerticesCount);
-			slot->attachmentVerticesCapacity = self->frameVerticesCount;
+			slot->attachmentVertices = MALLOC(float, vertexCount);
+			slot->attachmentVerticesCapacity = vertexCount;
 		}
 	}
-	if (slot->attachmentVerticesCount != self->frameVerticesCount) alpha = 1; /* Don't mix from uninitialized slot vertices. */
-	slot->attachmentVerticesCount = self->frameVerticesCount;
+	if (slot->attachmentVerticesCount != vertexCount) alpha = 1; /* Don't mix from uninitialized slot vertices. */
+	slot->attachmentVerticesCount = vertexCount;
 
 	if (time >= self->frames[self->framesCount - 1]) {
 		/* Time is after last frame. */
 		const float* lastVertices = self->frameVertices[self->framesCount - 1];
 		if (alpha < 1) {
-			for (i = 0; i < self->frameVerticesCount; ++i)
+			for (i = 0; i < vertexCount; ++i)
 				slot->attachmentVertices[i] += (lastVertices[i] - slot->attachmentVertices[i]) * alpha;
 		} else
-			memcpy(slot->attachmentVertices, lastVertices, self->frameVerticesCount * sizeof(float));
+			memcpy(slot->attachmentVertices, lastVertices, vertexCount * sizeof(float));
 		return;
 	}
 
@@ -693,12 +694,12 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
 	nextVertices = self->frameVertices[frameIndex];
 
 	if (alpha < 1) {
-		for (i = 0; i < self->frameVerticesCount; ++i) {
+		for (i = 0; i < vertexCount; ++i) {
 			float prev = prevVertices[i];
 			slot->attachmentVertices[i] += (prev + (nextVertices[i] - prev) * percent - slot->attachmentVertices[i]) * alpha;
 		}
 	} else {
-		for (i = 0; i < self->frameVerticesCount; ++i) {
+		for (i = 0; i < vertexCount; ++i) {
 			float prev = prevVertices[i];
 			slot->attachmentVertices[i] = prev + (nextVertices[i] - prev) * percent;
 		}