diff --git a/spine-cpp/spine-cpp-unit-tests/src/main.cpp b/spine-cpp/spine-cpp-unit-tests/src/main.cpp index 66a56adac..d2d44b9fc 100644 --- a/spine-cpp/spine-cpp-unit-tests/src/main.cpp +++ b/spine-cpp/spine-cpp-unit-tests/src/main.cpp @@ -33,17 +33,41 @@ #include "TestHarness.h" -#define SPINEBOY_JSON "testdata/raptor/raptor-pro.json" -#define SPINEBOY_ATLAS "testdata/raptor/raptor.atlas" + +#define R_JSON "testdata/raptor/raptor-pro.json" +#define R_BINARY "testdata/raptor/raptor-pro.skel" +#define R_ATLAS "testdata/raptor/raptor.atlas" + +#define SPINEBOY_JSON "testdata/spineboy/spineboy-pro.json" +#define SPINEBOY_BINARY "testdata/spineboy/spineboy-pro.skel" +#define SPINEBOY_ATLAS "testdata/spineboy/spineboy.atlas" using namespace Spine; -void loadSpineboy(Atlas* &atlas, SkeletonData* &skeletonData, AnimationStateData* &stateData, Skeleton* &skeleton, AnimationState* &state) { - atlas = new (__FILE__, __LINE__) Atlas(SPINEBOY_ATLAS, 0); +void loadBinary(const char* binaryFile, const char* atlasFile, Atlas* &atlas, SkeletonData* &skeletonData, AnimationStateData* &stateData, Skeleton* &skeleton, AnimationState* &state) { + atlas = new (__FILE__, __LINE__) Atlas(atlasFile, 0); + assert(atlas != 0); + + SkeletonBinary binary(atlas); + skeletonData = binary.readSkeletonDataFile(binaryFile); + assert(skeletonData); + + skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData); + assert(skeleton != 0); + + stateData = new (__FILE__, __LINE__) AnimationStateData(skeletonData); + assert(stateData != 0); + stateData->setDefaultMix(0.4f); + + state = new (__FILE__, __LINE__) AnimationState(stateData); +} + +void loadJson(const char* jsonFile, const char* atlasFile, Atlas* &atlas, SkeletonData* &skeletonData, AnimationStateData* &stateData, Skeleton* &skeleton, AnimationState* &state) { + atlas = new (__FILE__, __LINE__) Atlas(atlasFile, 0); assert(atlas != 0); SkeletonJson json(atlas); - skeletonData = json.readSkeletonDataFile(SPINEBOY_JSON); + skeletonData = json.readSkeletonDataFile(jsonFile); assert(skeletonData); skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData); @@ -71,7 +95,10 @@ void reproduceIssue_776() { Skeleton* skeleton = 0; AnimationState* state = 0; - loadSpineboy(atlas, skeletonData, stateData, skeleton, state); + loadJson(R_JSON, R_ATLAS, atlas, skeletonData, stateData, skeleton, state); + dispose(atlas, skeletonData, stateData, skeleton, state); + + loadBinary(R_BINARY, R_ATLAS, atlas, skeletonData, stateData, skeleton, state); dispose(atlas, skeletonData, stateData, skeleton, state); } diff --git a/spine-cpp/spine-cpp/include/spine/HashMap.h b/spine-cpp/spine-cpp/include/spine/HashMap.h index 412329e6f..255e67aba 100755 --- a/spine-cpp/spine-cpp/include/spine/HashMap.h +++ b/spine-cpp/spine-cpp/include/spine/HashMap.h @@ -79,7 +79,7 @@ namespace Spine { _head(NULL), _hashFunction(), _size(0) { - + // Empty } ~HashMap() { diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp index 06a8d61c3..337d6c5a5 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp @@ -148,9 +148,10 @@ namespace Spine { nonessential = readBoolean(input); if (nonessential) { - /* Skip images path & fps */ + /* Skip images path, audio path & fps */ readFloat(input); SpineExtension::free(readString(input), __FILE__, __LINE__); + SpineExtension::free(readString(input), __FILE__, __LINE__); } /* Bones. */ @@ -387,6 +388,7 @@ namespace Spine { const char* eventData_stringValue = readString(input); eventData->_stringValue = std::string(eventData_stringValue); SpineExtension::free(eventData_stringValue, __FILE__, __LINE__); + SpineExtension::free(readString(input), __FILE__, __LINE__); // skip audio path skeletonData->_events[i] = eventData; }