mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 22:34:53 +08:00
[c][cpp] fix parsing of default skins without attachment for binary files.
This commit is contained in:
parent
30bcfbe1eb
commit
fada823dcb
@ -825,12 +825,15 @@ spAttachment* spSkeletonBinary_readAttachment(spSkeletonBinary* self, _dataInput
|
||||
|
||||
spSkin* spSkeletonBinary_readSkin(spSkeletonBinary* self, _dataInput* input, int/*bool*/ defaultSkin,
|
||||
spSkeletonData* skeletonData, int/*bool*/ nonessential) {
|
||||
spSkin* skin;
|
||||
int i, n, ii, nn;
|
||||
const char* skinName = defaultSkin ? "default" : readStringRef(input, skeletonData);
|
||||
skin = spSkin_create(skinName);
|
||||
spSkin *skin;
|
||||
int i, n, ii, nn, slotCount;
|
||||
|
||||
if (!defaultSkin) {
|
||||
if (defaultSkin) {
|
||||
slotCount = readVarint(input, 1);
|
||||
if (slotCount == 0) return 0;
|
||||
skin = spSkin_create("default");
|
||||
} else {
|
||||
skin = spSkin_create(readStringRef(input, skeletonData));
|
||||
for (i = 0, n = readVarint(input, 1); i < n; i++)
|
||||
spBoneDataArray_add(skin->bones, skeletonData->bones[readVarint(input, 1)]);
|
||||
|
||||
@ -842,9 +845,11 @@ spSkin* spSkeletonBinary_readSkin(spSkeletonBinary* self, _dataInput* input, int
|
||||
|
||||
for (i = 0, n = readVarint(input, 1); i < n; i++)
|
||||
spPathConstraintDataArray_add(skin->pathConstraints, skeletonData->pathConstraints[readVarint(input, 1)]);
|
||||
|
||||
slotCount = readVarint(input, 1);
|
||||
}
|
||||
|
||||
for (i = 0, n = readVarint(input, 1); i < n; ++i) {
|
||||
for (i = 0; i < slotCount; ++i) {
|
||||
int slotIndex = readVarint(input, 1);
|
||||
for (ii = 0, nn = readVarint(input, 1); ii < nn; ++ii) {
|
||||
const char* name = readStringRef(input, skeletonData);
|
||||
|
||||
@ -457,9 +457,14 @@ int SkeletonBinary::readVarint(DataInput *input, bool optimizePositive) {
|
||||
|
||||
Skin *
|
||||
SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData *skeletonData, bool nonessential) {
|
||||
Skin *skin = new(__FILE__, __LINE__) Skin(defaultSkin ? "default" : readStringRef(input, skeletonData));
|
||||
|
||||
if (!defaultSkin) {
|
||||
Skin *skin;
|
||||
int slotCount = 0;
|
||||
if (defaultSkin) {
|
||||
slotCount = readVarint(input, true);
|
||||
if (slotCount == 0) return NULL;
|
||||
skin = new(__FILE__, __LINE__) Skin("default");
|
||||
} else {
|
||||
skin = new(__FILE__, __LINE__) Skin(readStringRef(input, skeletonData));
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getBones().add(skeletonData->_bones[readVarint(input, true)]);
|
||||
|
||||
@ -471,9 +476,10 @@ SkeletonBinary::readSkin(DataInput *input, bool defaultSkin, SkeletonData *skele
|
||||
|
||||
for (int i = 0, n = readVarint(input, true); i < n; i++)
|
||||
skin->getConstraints().add(skeletonData->_pathConstraints[readVarint(input, true)]);
|
||||
slotCount = readVarint(input, true);
|
||||
}
|
||||
|
||||
for (int i = 0, n = readVarint(input, true); i < n; ++i) {
|
||||
for (int i = 0; i < slotCount; ++i) {
|
||||
int slotIndex = readVarint(input, true);
|
||||
for (int ii = 0, nn = readVarint(input, true); ii < nn; ++ii) {
|
||||
String name(readStringRef(input, skeletonData));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user