浏览代码

Fixed spAttachmentLoader_configureAttachment being called too soon for linked meshes.

NathanSweet 9 年之前
父节点
当前提交
506dc49d8a
共有 1 个文件被更改,包括 9 次插入3 次删除
  1. 9 3
      spine-c/src/spine/SkeletonJson.c

+ 9 - 3
spine-c/src/spine/SkeletonJson.c

@@ -429,7 +429,7 @@ spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const
 	int length;
 	int length;
 	spSkeletonData* skeletonData;
 	spSkeletonData* skeletonData;
 	const char* json = _spUtil_readFile(path, &length);
 	const char* json = _spUtil_readFile(path, &length);
-	if (!json) {
+	if (length == 0 || !json) {
 		_spSkeletonJson_setError(self, 0, "Unable to read skeleton file: ", path);
 		_spSkeletonJson_setError(self, 0, "Unable to read skeleton file: ", path);
 		return 0;
 		return 0;
 	}
 	}
@@ -692,6 +692,8 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 						}
 						}
 
 
 						spRegionAttachment_updateOffset(region);
 						spRegionAttachment_updateOffset(region);
+
+						spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment);
 						break;
 						break;
 					}
 					}
 					case SP_ATTACHMENT_MESH:
 					case SP_ATTACHMENT_MESH:
@@ -741,6 +743,8 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 								for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 								for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 									mesh->edges[i] = entry->valueInt;
 									mesh->edges[i] = entry->valueInt;
 							}
 							}
+
+							spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment);
 						} else {
 						} else {
 							mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1);
 							mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1);
 							_spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex,
 							_spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex,
@@ -820,6 +824,8 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 								for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 								for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 									mesh->edges[i] = entry->valueInt;
 									mesh->edges[i] = entry->valueInt;
 							}
 							}
+
+							spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment);
 						} else {
 						} else {
 							mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1);
 							mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1);
 							_spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex,
 							_spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex,
@@ -834,12 +840,11 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 						box->vertices = MALLOC(float, entry->size);
 						box->vertices = MALLOC(float, entry->size);
 						for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 						for (entry = entry->child, i = 0; entry; entry = entry->next, ++i)
 							box->vertices[i] = entry->valueFloat * self->scale;
 							box->vertices[i] = entry->valueFloat * self->scale;
+						spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment);
 						break;
 						break;
 					}
 					}
 					}
 					}
 
 
-					spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment);
-
 					spSkin_addAttachment(skin, slotIndex, skinAttachmentName, attachment);
 					spSkin_addAttachment(skin, slotIndex, skinAttachmentName, attachment);
 				}
 				}
 			}
 			}
@@ -871,6 +876,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 			spWeightedMeshAttachment_setParentMesh(mesh, SUB_CAST(spWeightedMeshAttachment, parent));
 			spWeightedMeshAttachment_setParentMesh(mesh, SUB_CAST(spWeightedMeshAttachment, parent));
 			spWeightedMeshAttachment_updateUVs(mesh);
 			spWeightedMeshAttachment_updateUVs(mesh);
 		}
 		}
+		spAttachmentLoader_configureAttachment(self->attachmentLoader, linkedMesh->mesh);
 	}
 	}
 
 
 	/* Events. */
 	/* Events. */