Merge branch '3.6' into 3.7-beta

This commit is contained in:
NathanSweet 2017-11-24 02:48:33 +01:00
commit cecdaeab2a
15 changed files with 73 additions and 73 deletions

View File

@ -745,7 +745,7 @@ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skelet
spSlot* slot = skeleton->slots[self->slotIndex]; spSlot* slot = skeleton->slots[self->slotIndex];
if (direction == SP_MIX_DIRECTION_OUT && pose == SP_MIX_POSE_SETUP) { if (direction == SP_MIX_DIRECTION_OUT && pose == SP_MIX_POSE_SETUP) {
const char* attachmentName = slot->data->attachmentName; attachmentName = slot->data->attachmentName;
spSlot_setAttachment(slot, attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0); spSlot_setAttachment(slot, attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0);
return; return;
} }

View File

@ -307,9 +307,8 @@ static spAnimation* _spSkeletonBinary_readAnimation (spSkeletonBinary* self, con
break; break;
} }
default: { default: {
int i; for (iii = 0; iii < kv_size(timelines); ++iii)
for (i = 0; i < kv_size(timelines); ++i) spTimeline_dispose(kv_A(timelines, iii));
spTimeline_dispose(kv_A(timelines, i));
kv_destroy(timelines); kv_destroy(timelines);
_spSkeletonBinary_setError(self, "Invalid timeline type for a slot: ", skeletonData->slots[slotIndex]->name); _spSkeletonBinary_setError(self, "Invalid timeline type for a slot: ", skeletonData->slots[slotIndex]->name);
return 0; return 0;
@ -370,9 +369,8 @@ static spAnimation* _spSkeletonBinary_readAnimation (spSkeletonBinary* self, con
break; break;
} }
default: { default: {
int i; for (iii = 0; iii < kv_size(timelines); ++iii)
for (i = 0; i < kv_size(timelines); ++i) spTimeline_dispose(kv_A(timelines, iii));
spTimeline_dispose(kv_A(timelines, i));
kv_destroy(timelines); kv_destroy(timelines);
_spSkeletonBinary_setError(self, "Invalid timeline type for a bone: ", skeletonData->bones[boneIndex]->name); _spSkeletonBinary_setError(self, "Invalid timeline type for a bone: ", skeletonData->bones[boneIndex]->name);
return 0; return 0;
@ -482,9 +480,9 @@ static spAnimation* _spSkeletonBinary_readAnimation (spSkeletonBinary* self, con
spVertexAttachment* attachment = SUB_CAST(spVertexAttachment, spVertexAttachment* attachment = SUB_CAST(spVertexAttachment,
spSkin_getAttachment(skin, slotIndex, attachmentName)); spSkin_getAttachment(skin, slotIndex, attachmentName));
if (!attachment) { if (!attachment) {
int i; int iiii;
for (i = 0; i < kv_size(timelines); ++i) for (iiii = 0; iiii < kv_size(timelines); ++iiii)
spTimeline_dispose(kv_A(timelines, i)); spTimeline_dispose(kv_A(timelines, iiii));
kv_destroy(timelines); kv_destroy(timelines);
_spSkeletonBinary_setError(self, "Attachment not found: ", attachmentName); _spSkeletonBinary_setError(self, "Attachment not found: ", attachmentName);
FREE(attachmentName); FREE(attachmentName);
@ -601,7 +599,7 @@ static spAnimation* _spSkeletonBinary_readAnimation (spSkeletonBinary* self, con
animation = spAnimation_create(name, 0); animation = spAnimation_create(name, 0);
FREE(animation->timelines); FREE(animation->timelines);
animation->duration = duration; animation->duration = duration;
animation->timelinesCount = kv_size(timelines); animation->timelinesCount = (int)kv_size(timelines);
animation->timelines = kv_array(timelines); animation->timelines = kv_array(timelines);
return animation; return animation;
} }
@ -665,11 +663,11 @@ static void _readVertices(spSkeletonBinary* self, _dataInput* input, spVertexAtt
} }
kv_trim(float, weights); kv_trim(float, weights);
attachment->verticesCount = kv_size(weights); attachment->verticesCount = (int)kv_size(weights);
attachment->vertices = kv_array(weights); attachment->vertices = kv_array(weights);
kv_trim(int, bones); kv_trim(int, bones);
attachment->bonesCount = kv_size(bones); attachment->bonesCount = (int)kv_size(bones);
attachment->bones = kv_array(bones); attachment->bones = kv_array(bones);
} }

View File

@ -94,7 +94,8 @@ static float toColor (const char* value, int index) {
int color; int color;
if (index >= strlen(value) / 2) if (index >= strlen(value) / 2)
return -1; return -1;
value += index * 2; value += index * 2;
digits[0] = *value; digits[0] = *value;
@ -403,33 +404,33 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) {
Json* vertices = Json_getItem(valueMap, "vertices"); Json* vertices = Json_getItem(valueMap, "vertices");
float* deform; float* deform2;
if (!vertices) { if (!vertices) {
if (weighted) { if (weighted) {
deform = tempDeform; deform2 = tempDeform;
memset(deform, 0, sizeof(float) * deformLength); memset(deform, 0, sizeof(float) * deformLength);
} else } else
deform = attachment->vertices; deform2 = attachment->vertices;
} else { } else {
int v, start = Json_getInt(valueMap, "offset", 0); int v, start = Json_getInt(valueMap, "offset", 0);
Json* vertex; Json* vertex;
deform = tempDeform; deform2 = tempDeform;
memset(deform, 0, sizeof(float) * start); memset(deform, 0, sizeof(float) * start);
if (self->scale == 1) { if (self->scale == 1) {
for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v)
deform[v] = vertex->valueFloat; deform2[v] = vertex->valueFloat;
} else { } else {
for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v)
deform[v] = vertex->valueFloat * self->scale; deform2[v] = vertex->valueFloat * self->scale;
} }
memset(deform + v, 0, sizeof(float) * (deformLength - v)); memset(deform + v, 0, sizeof(float) * (deformLength - v));
if (!weighted) { if (!weighted) {
float* vertices = attachment->vertices; float* verticesAttachment = attachment->vertices;
for (v = 0; v < deformLength; ++v) for (v = 0; v < deformLength; ++v)
deform[v] += vertices[v]; deform2[v] += verticesAttachment[v];
} }
} }
spDeformTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), deform); spDeformTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), deform2);
readCurve(valueMap, SUPER(timeline), frameIndex); readCurve(valueMap, SUPER(timeline), frameIndex);
} }
FREE(tempDeform); FREE(tempDeform);
@ -445,16 +446,16 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotsCount); spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotsCount);
for (valueMap = drawOrder->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { for (valueMap = drawOrder->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) {
int ii; int ii;
int* drawOrder = 0; int* drawOrder2 = 0;
Json* offsets = Json_getItem(valueMap, "offsets"); Json* offsets = Json_getItem(valueMap, "offsets");
if (offsets) { if (offsets) {
Json* offsetMap; Json* offsetMap;
int* unchanged = MALLOC(int, skeletonData->slotsCount - offsets->size); int* unchanged = MALLOC(int, skeletonData->slotsCount - offsets->size);
int originalIndex = 0, unchangedIndex = 0; int originalIndex = 0, unchangedIndex = 0;
drawOrder = MALLOC(int, skeletonData->slotsCount); drawOrder2 = MALLOC(int, skeletonData->slotsCount);
for (ii = skeletonData->slotsCount - 1; ii >= 0; --ii) for (ii = skeletonData->slotsCount - 1; ii >= 0; --ii)
drawOrder[ii] = -1; drawOrder2[ii] = -1;
for (offsetMap = offsets->child; offsetMap; offsetMap = offsetMap->next) { for (offsetMap = offsets->child; offsetMap; offsetMap = offsetMap->next) {
int slotIndex = spSkeletonData_findSlotIndex(skeletonData, Json_getString(offsetMap, "slot", 0)); int slotIndex = spSkeletonData_findSlotIndex(skeletonData, Json_getString(offsetMap, "slot", 0));
@ -467,7 +468,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
while (originalIndex != slotIndex) while (originalIndex != slotIndex)
unchanged[unchangedIndex++] = originalIndex++; unchanged[unchangedIndex++] = originalIndex++;
/* Set changed items. */ /* Set changed items. */
drawOrder[originalIndex + Json_getInt(offsetMap, "offset", 0)] = originalIndex; drawOrder2[originalIndex + Json_getInt(offsetMap, "offset", 0)] = originalIndex;
originalIndex++; originalIndex++;
} }
/* Collect remaining unchanged items. */ /* Collect remaining unchanged items. */
@ -475,11 +476,11 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
unchanged[unchangedIndex++] = originalIndex++; unchanged[unchangedIndex++] = originalIndex++;
/* Fill in unchanged items. */ /* Fill in unchanged items. */
for (ii = skeletonData->slotsCount - 1; ii >= 0; ii--) for (ii = skeletonData->slotsCount - 1; ii >= 0; ii--)
if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; if (drawOrder2[ii] == -1) drawOrder2[ii] = unchanged[--unchangedIndex];
FREE(unchanged); FREE(unchanged);
} }
spDrawOrderTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), drawOrder); spDrawOrderTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), drawOrder2);
FREE(drawOrder); FREE(drawOrder2);
} }
animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline);
animation->duration = MAX(animation->duration, timeline->frames[drawOrder->size - 1]); animation->duration = MAX(animation->duration, timeline->frames[drawOrder->size - 1]);
@ -873,7 +874,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
spAttachment* attachment; spAttachment* attachment;
const char* skinAttachmentName = attachmentMap->name; const char* skinAttachmentName = attachmentMap->name;
const char* attachmentName = Json_getString(attachmentMap, "name", skinAttachmentName); const char* attachmentName = Json_getString(attachmentMap, "name", skinAttachmentName);
const char* path = Json_getString(attachmentMap, "path", attachmentName); const char* attachmentPath = Json_getString(attachmentMap, "path", attachmentName);
const char* color; const char* color;
Json* entry; Json* entry;
@ -897,7 +898,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
return 0; return 0;
} }
attachment = spAttachmentLoader_createAttachment(self->attachmentLoader, skin, type, attachmentName, path); attachment = spAttachmentLoader_createAttachment(self->attachmentLoader, skin, type, attachmentName, attachmentPath);
if (!attachment) { if (!attachment) {
if (self->attachmentLoader->error1) { if (self->attachmentLoader->error1) {
spSkeletonData_dispose(skeletonData); spSkeletonData_dispose(skeletonData);
@ -910,7 +911,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
switch (attachment->type) { switch (attachment->type) {
case SP_ATTACHMENT_REGION: { case SP_ATTACHMENT_REGION: {
spRegionAttachment* region = SUB_CAST(spRegionAttachment, attachment); spRegionAttachment* region = SUB_CAST(spRegionAttachment, attachment);
if (path) MALLOC_STR(region->path, path); if (path) MALLOC_STR(region->path, attachmentPath);
region->x = Json_getFloat(attachmentMap, "x", 0) * self->scale; region->x = Json_getFloat(attachmentMap, "x", 0) * self->scale;
region->y = Json_getFloat(attachmentMap, "y", 0) * self->scale; region->y = Json_getFloat(attachmentMap, "y", 0) * self->scale;
region->scaleX = Json_getFloat(attachmentMap, "scaleX", 1); region->scaleX = Json_getFloat(attachmentMap, "scaleX", 1);
@ -937,7 +938,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
case SP_ATTACHMENT_LINKED_MESH: { case SP_ATTACHMENT_LINKED_MESH: {
spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, attachment); spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, attachment);
MALLOC_STR(mesh->path, path); MALLOC_STR(mesh->path, attachmentPath);
color = Json_getString(attachmentMap, "color", 0); color = Json_getString(attachmentMap, "color", 0);
if (color) { if (color) {
@ -997,19 +998,19 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
break; break;
} }
case SP_ATTACHMENT_PATH: { case SP_ATTACHMENT_PATH: {
spPathAttachment* path = SUB_CAST(spPathAttachment, attachment); spPathAttachment* pathAttatchment = SUB_CAST(spPathAttachment, attachment);
int vertexCount = 0; int vertexCount = 0;
path->closed = Json_getInt(attachmentMap, "closed", 0); pathAttatchment->closed = Json_getInt(attachmentMap, "closed", 0);
path->constantSpeed = Json_getInt(attachmentMap, "constantSpeed", 1); pathAttatchment->constantSpeed = Json_getInt(attachmentMap, "constantSpeed", 1);
vertexCount = Json_getInt(attachmentMap, "vertexCount", 0); vertexCount = Json_getInt(attachmentMap, "vertexCount", 0);
_readVertices(self, attachmentMap, SUPER(path), vertexCount << 1); _readVertices(self, attachmentMap, SUPER(pathAttatchment), vertexCount << 1);
path->lengthsLength = vertexCount / 3; pathAttatchment->lengthsLength = vertexCount / 3;
path->lengths = MALLOC(float, path->lengthsLength); pathAttatchment->lengths = MALLOC(float, pathAttatchment->lengthsLength);
curves = Json_getItem(attachmentMap, "lengths"); curves = Json_getItem(attachmentMap, "lengths");
for (curves = curves->child, ii = 0; curves; curves = curves->next, ++ii) { for (curves = curves->child, ii = 0; curves; curves = curves->next, ++ii) {
path->lengths[ii] = curves->valueFloat * self->scale; pathAttatchment->lengths[ii] = curves->valueFloat * self->scale;
} }
break; break;
} }

View File

@ -152,8 +152,9 @@ spShortArray* spTriangulator_triangulate(spTriangulator* self, spFloatArray* ver
spShortArray_ensureCapacity(triangles, MAX(0, vertexCount - 2) << 2); spShortArray_ensureCapacity(triangles, MAX(0, vertexCount - 2) << 2);
while (vertexCount > 3) { while (vertexCount > 3) {
int previous = vertexCount - 1, i = 0, next = 1; int previous = vertexCount - 1, next = 1;
int previousIndex, nextIndex; int previousIndex, nextIndex;
i = 0;
while (1) { while (1) {
if (!isConcave[i]) { if (!isConcave[i]) {
int p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; int p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;

View File

@ -114,8 +114,6 @@ void SkeletonAnimation::initialize () {
_state = spAnimationState_create(spAnimationStateData_create(_skeleton->data)); _state = spAnimationState_create(spAnimationStateData_create(_skeleton->data));
_state->rendererObject = this; _state->rendererObject = this;
_state->listener = animationCallback; _state->listener = animationCallback;
_spAnimationState* stateInternal = (_spAnimationState*)_state;
} }
SkeletonAnimation::SkeletonAnimation () SkeletonAnimation::SkeletonAnimation ()

View File

@ -146,8 +146,8 @@ void SkeletonBatch::reset() {
cocos2d::TrianglesCommand* SkeletonBatch::nextFreeCommand() { cocos2d::TrianglesCommand* SkeletonBatch::nextFreeCommand() {
if (_commandsPool.size() <= _nextFreeCommand) { if (_commandsPool.size() <= _nextFreeCommand) {
unsigned int newSize = _commandsPool.size() * 2 + 1; size_t newSize = _commandsPool.size() * 2 + 1;
for (int i = _commandsPool.size(); i < newSize; i++) { for (size_t i = _commandsPool.size(); i < newSize; i++) {
_commandsPool.push_back(new TrianglesCommand()); _commandsPool.push_back(new TrianglesCommand());
} }
} }

View File

@ -282,8 +282,8 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t
trianglesTwoColor.indexCount = attachmentVertices->_triangles->indexCount; trianglesTwoColor.indexCount = attachmentVertices->_triangles->indexCount;
trianglesTwoColor.verts = twoColorBatch->allocateVertices(attachmentVertices->_triangles->vertCount); trianglesTwoColor.verts = twoColorBatch->allocateVertices(attachmentVertices->_triangles->vertCount);
trianglesTwoColor.vertCount = attachmentVertices->_triangles->vertCount; trianglesTwoColor.vertCount = attachmentVertices->_triangles->vertCount;
for (int i = 0; i < trianglesTwoColor.vertCount; i++) { for (int ii = 0; ii < trianglesTwoColor.vertCount; ii++) {
trianglesTwoColor.verts[i].texCoords = attachmentVertices->_triangles->verts[i].texCoords; trianglesTwoColor.verts[ii].texCoords = attachmentVertices->_triangles->verts[ii].texCoords;
} }
spRegionAttachment_computeWorldVertices(attachment, slot->bone, (float*)trianglesTwoColor.verts, 0, 7); spRegionAttachment_computeWorldVertices(attachment, slot->bone, (float*)trianglesTwoColor.verts, 0, 7);
} }
@ -311,8 +311,8 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t
trianglesTwoColor.indexCount = attachmentVertices->_triangles->indexCount; trianglesTwoColor.indexCount = attachmentVertices->_triangles->indexCount;
trianglesTwoColor.verts = twoColorBatch->allocateVertices(attachmentVertices->_triangles->vertCount); trianglesTwoColor.verts = twoColorBatch->allocateVertices(attachmentVertices->_triangles->vertCount);
trianglesTwoColor.vertCount = attachmentVertices->_triangles->vertCount; trianglesTwoColor.vertCount = attachmentVertices->_triangles->vertCount;
for (int i = 0; i < trianglesTwoColor.vertCount; i++) { for (int ii = 0; ii < trianglesTwoColor.vertCount; ii++) {
trianglesTwoColor.verts[i].texCoords = attachmentVertices->_triangles->verts[i].texCoords; trianglesTwoColor.verts[ii].texCoords = attachmentVertices->_triangles->verts[ii].texCoords;
} }
spVertexAttachment_computeWorldVertices(SUPER(attachment), slot, 0, trianglesTwoColor.vertCount * sizeof(V3F_C4B_C4B_T2F) / 4, (float*)trianglesTwoColor.verts, 0, 7); spVertexAttachment_computeWorldVertices(SUPER(attachment), slot, 0, trianglesTwoColor.vertCount * sizeof(V3F_C4B_C4B_T2F) / 4, (float*)trianglesTwoColor.verts, 0, 7);
} }

View File

@ -336,8 +336,8 @@ void SkeletonTwoColorBatch::reset() {
TwoColorTrianglesCommand* SkeletonTwoColorBatch::nextFreeCommand() { TwoColorTrianglesCommand* SkeletonTwoColorBatch::nextFreeCommand() {
if (_commandsPool.size() <= _nextFreeCommand) { if (_commandsPool.size() <= _nextFreeCommand) {
unsigned int newSize = _commandsPool.size() * 2 + 1; size_t newSize = _commandsPool.size() * 2 + 1;
for (int i = _commandsPool.size(); i < newSize; i++) { for (size_t i = _commandsPool.size(); i < newSize; i++) {
_commandsPool.push_back(new TwoColorTrianglesCommand()); _commandsPool.push_back(new TwoColorTrianglesCommand());
} }
} }

View File

@ -69,7 +69,7 @@ namespace Spine {
trackEntryPool trackEntryPool
); );
} }
/// <summary> /// <summary>
/// Increments the track entry times, setting queued animations as current if needed</summary> /// Increments the track entry times, setting queued animations as current if needed</summary>
/// <param name="delta">delta time</param> /// <param name="delta">delta time</param>
@ -259,17 +259,12 @@ namespace Spine {
break; break;
case Dip: case Dip:
pose = MixPose.Setup; pose = MixPose.Setup;
alpha = mix == 1 ? 0 : alphaDip; alpha = alphaDip;
break; break;
default: default:
pose = MixPose.Setup; pose = MixPose.Setup;
if (mix == 1) { TrackEntry dipMix = timelineDipMix[i];
alpha = 0; alpha = alphaDip * Math.Max(0, 1 - dipMix.mixTime / dipMix.mixDuration);
} else {
alpha = alphaDip;
var dipMix = timelineDipMix[i];
alpha *= Math.Max(0, 1 - dipMix.mixTime / dipMix.mixDuration);
}
break; break;
} }
from.totalAlpha += alpha; from.totalAlpha += alpha;

View File

@ -1483,8 +1483,8 @@ declare module spine.webgl {
private shapes; private shapes;
private shapesShader; private shapesShader;
private activeRenderer; private activeRenderer;
private skeletonRenderer; skeletonRenderer: SkeletonRenderer;
private skeletonDebugRenderer; skeletonDebugRenderer: SkeletonDebugRenderer;
private QUAD; private QUAD;
private QUAD_TRIANGLES; private QUAD_TRIANGLES;
private WHITE; private WHITE;

View File

@ -1454,8 +1454,8 @@ declare module spine.webgl {
private shapes; private shapes;
private shapesShader; private shapesShader;
private activeRenderer; private activeRenderer;
private skeletonRenderer; skeletonRenderer: SkeletonRenderer;
private skeletonDebugRenderer; skeletonDebugRenderer: SkeletonDebugRenderer;
private QUAD; private QUAD;
private QUAD_TRIANGLES; private QUAD_TRIANGLES;
private WHITE; private WHITE;

View File

@ -1454,8 +1454,8 @@ declare module spine.webgl {
private shapes; private shapes;
private shapesShader; private shapesShader;
private activeRenderer; private activeRenderer;
private skeletonRenderer; skeletonRenderer: SkeletonRenderer;
private skeletonDebugRenderer; skeletonDebugRenderer: SkeletonDebugRenderer;
private QUAD; private QUAD;
private QUAD_TRIANGLES; private QUAD_TRIANGLES;
private WHITE; private WHITE;

View File

@ -39,8 +39,8 @@ module spine.webgl {
private shapes: ShapeRenderer; private shapes: ShapeRenderer;
private shapesShader: Shader; private shapesShader: Shader;
private activeRenderer: PolygonBatcher | ShapeRenderer | SkeletonDebugRenderer = null; private activeRenderer: PolygonBatcher | ShapeRenderer | SkeletonDebugRenderer = null;
private skeletonRenderer: SkeletonRenderer; skeletonRenderer: SkeletonRenderer;
private skeletonDebugRenderer: SkeletonDebugRenderer; skeletonDebugRenderer: SkeletonDebugRenderer;
private QUAD = [ private QUAD = [
0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,

View File

@ -80,14 +80,16 @@ namespace Spine.Unity {
} }
// Only provide visual feedback to inspector changes in Unity Editor Edit mode.
if (!Application.isPlaying) { if (!Application.isPlaying) {
skeleton.flipX = this.initialFlipX; skeleton.flipX = this.initialFlipX;
skeleton.flipY = this.initialFlipY; skeleton.flipY = this.initialFlipY;
skeleton.SetToSetupPose();
if (!string.IsNullOrEmpty(startingAnimation))
skeleton.PoseWithAnimation(startingAnimation, 0f, false);
} }
skeleton.SetToSetupPose();
if (!string.IsNullOrEmpty(startingAnimation))
skeleton.PoseWithAnimation(startingAnimation, 0f, false);
} }
} else { } else {
if (skeletonDataAsset != null) if (skeletonDataAsset != null)

View File

@ -76,8 +76,13 @@ namespace Spine.Unity {
if (!valid) return; if (!valid) return;
#if UNITY_EDITOR #if UNITY_EDITOR
if (Application.isPlaying) if (Application.isPlaying) {
translator.Apply(skeleton); translator.Apply(skeleton);
} else {
var translatorAnimator = translator.Animator;
if (translatorAnimator != null && translatorAnimator.isInitialized)
translator.Apply(skeleton);
}
#else #else
translator.Apply(skeleton); translator.Apply(skeleton);
#endif #endif