diff --git a/spine-cocos2d-iphone/src/spine/CCSkeleton.m b/spine-cocos2d-iphone/src/spine/CCSkeleton.m index 1ee7c78b5..9f52676cc 100644 --- a/spine-cocos2d-iphone/src/spine/CCSkeleton.m +++ b/spine-cocos2d-iphone/src/spine/CCSkeleton.m @@ -208,28 +208,28 @@ float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = self.scaleX; float scaleY = self.scaleY; - ccV3F_C4B_T2F_Quad quad; + float vertices[8]; for (int i = 0; i < _skeleton->slotCount; ++i) { Slot* slot = _skeleton->slots[i]; if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue; RegionAttachment* attachment = (RegionAttachment*)slot->attachment; - RegionAttachment_updateQuad(attachment, slot, &quad); - minX = fmin(minX, quad.bl.vertices.x * scaleX); - minY = fmin(minY, quad.bl.vertices.y * scaleY); - maxX = fmax(maxX, quad.bl.vertices.x * scaleX); - maxY = fmax(maxY, quad.bl.vertices.y * scaleY); - minX = fmin(minX, quad.br.vertices.x * scaleX); - minY = fmin(minY, quad.br.vertices.y * scaleY); - maxX = fmax(maxX, quad.br.vertices.x * scaleX); - maxY = fmax(maxY, quad.br.vertices.y * scaleY); - minX = fmin(minX, quad.tl.vertices.x * scaleX); - minY = fmin(minY, quad.tl.vertices.y * scaleY); - maxX = fmax(maxX, quad.tl.vertices.x * scaleX); - maxY = fmax(maxY, quad.tl.vertices.y * scaleY); - minX = fmin(minX, quad.tr.vertices.x * scaleX); - minY = fmin(minY, quad.tr.vertices.y * scaleY); - maxX = fmax(maxX, quad.tr.vertices.x * scaleX); - maxY = fmax(maxY, quad.tr.vertices.y * scaleY); + RegionAttachment_computeVertices(attachment, slot, vertices); + minX = fmin(minX, vertices[VERTEX_X1] * scaleX); + minY = fmin(minY, vertices[VERTEX_Y1] * scaleY); + maxX = fmax(maxX, vertices[VERTEX_X1] * scaleX); + maxY = fmax(maxY, vertices[VERTEX_Y1] * scaleY); + minX = fmin(minX, vertices[VERTEX_X4] * scaleX); + minY = fmin(minY, vertices[VERTEX_Y4] * scaleY); + maxX = fmax(maxX, vertices[VERTEX_X4] * scaleX); + maxY = fmax(maxY, vertices[VERTEX_Y4] * scaleY); + minX = fmin(minX, vertices[VERTEX_X2] * scaleX); + minY = fmin(minY, vertices[VERTEX_Y2] * scaleY); + maxX = fmax(maxX, vertices[VERTEX_X2] * scaleX); + maxY = fmax(maxY, vertices[VERTEX_Y2] * scaleY); + minX = fmin(minX, vertices[VERTEX_X3] * scaleX); + minY = fmin(minY, vertices[VERTEX_Y3] * scaleY); + maxX = fmax(maxX, vertices[VERTEX_X3] * scaleX); + maxY = fmax(maxY, vertices[VERTEX_Y3] * scaleY); } minX = self.position.x + minX; minY = self.position.y + minY; diff --git a/spine-cocos2dx/src/spine/CCSkeleton.cpp b/spine-cocos2dx/src/spine/CCSkeleton.cpp index 831514108..7e1d3f66d 100644 --- a/spine-cocos2dx/src/spine/CCSkeleton.cpp +++ b/spine-cocos2dx/src/spine/CCSkeleton.cpp @@ -200,28 +200,28 @@ CCRect CCSkeleton::boundingBox () { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = getScaleX(); float scaleY = getScaleY(); - ccV3F_C4B_T2F_Quad quad; + float vertices[8]; for (int i = 0; i < skeleton->slotCount; ++i) { Slot* slot = skeleton->slots[i]; if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue; RegionAttachment* attachment = (RegionAttachment*)slot->attachment; - RegionAttachment_updateQuad(attachment, slot, &quad); - minX = min(minX, quad.bl.vertices.x * scaleX); - minY = min(minY, quad.bl.vertices.y * scaleY); - maxX = max(maxX, quad.bl.vertices.x * scaleX); - maxY = max(maxY, quad.bl.vertices.y * scaleY); - minX = min(minX, quad.br.vertices.x * scaleX); - minY = min(minY, quad.br.vertices.y * scaleY); - maxX = max(maxX, quad.br.vertices.x * scaleX); - maxY = max(maxY, quad.br.vertices.y * scaleY); - minX = min(minX, quad.tl.vertices.x * scaleX); - minY = min(minY, quad.tl.vertices.y * scaleY); - maxX = max(maxX, quad.tl.vertices.x * scaleX); - maxY = max(maxY, quad.tl.vertices.y * scaleY); - minX = min(minX, quad.tr.vertices.x * scaleX); - minY = min(minY, quad.tr.vertices.y * scaleY); - maxX = max(maxX, quad.tr.vertices.x * scaleX); - maxY = max(maxY, quad.tr.vertices.y * scaleY); + RegionAttachment_computeVertices(attachment, slot, vertices); + minX = min(minX, vertices[VERTEX_X1] * scaleX); + minY = min(minY, vertices[VERTEX_Y1] * scaleY); + maxX = max(maxX, vertices[VERTEX_X1] * scaleX); + maxY = max(maxY, vertices[VERTEX_Y1] * scaleY); + minX = min(minX, vertices[VERTEX_X4] * scaleX); + minY = min(minY, vertices[VERTEX_Y4] * scaleY); + maxX = max(maxX, vertices[VERTEX_X4] * scaleX); + maxY = max(maxY, vertices[VERTEX_Y4] * scaleY); + minX = min(minX, vertices[VERTEX_X2] * scaleX); + minY = min(minY, vertices[VERTEX_Y2] * scaleY); + maxX = max(maxX, vertices[VERTEX_X2] * scaleX); + maxY = max(maxY, vertices[VERTEX_Y2] * scaleY); + minX = min(minX, vertices[VERTEX_X3] * scaleX); + minY = min(minY, vertices[VERTEX_Y3] * scaleY); + maxX = max(maxX, vertices[VERTEX_X3] * scaleX); + maxY = max(maxY, vertices[VERTEX_Y3] * scaleY); } CCPoint position = getPosition(); return CCRectMake(position.x + minX, position.y + minY, maxX - minX, maxY - minY);