[cpp] Fixing up SkeletonBinary.

This commit is contained in:
badlogic 2018-02-16 11:42:25 +01:00
parent 11d0a47360
commit 4a9446ed83
3 changed files with 37 additions and 8 deletions

View File

@ -33,17 +33,41 @@
#include "TestHarness.h" #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; using namespace Spine;
void loadSpineboy(Atlas* &atlas, SkeletonData* &skeletonData, AnimationStateData* &stateData, Skeleton* &skeleton, AnimationState* &state) { void loadBinary(const char* binaryFile, const char* atlasFile, Atlas* &atlas, SkeletonData* &skeletonData, AnimationStateData* &stateData, Skeleton* &skeleton, AnimationState* &state) {
atlas = new (__FILE__, __LINE__) Atlas(SPINEBOY_ATLAS, 0); 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); assert(atlas != 0);
SkeletonJson json(atlas); SkeletonJson json(atlas);
skeletonData = json.readSkeletonDataFile(SPINEBOY_JSON); skeletonData = json.readSkeletonDataFile(jsonFile);
assert(skeletonData); assert(skeletonData);
skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData); skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData);
@ -71,7 +95,10 @@ void reproduceIssue_776() {
Skeleton* skeleton = 0; Skeleton* skeleton = 0;
AnimationState* state = 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); dispose(atlas, skeletonData, stateData, skeleton, state);
} }

View File

@ -79,7 +79,7 @@ namespace Spine {
_head(NULL), _head(NULL),
_hashFunction(), _hashFunction(),
_size(0) { _size(0) {
// Empty
} }
~HashMap() { ~HashMap() {

View File

@ -148,9 +148,10 @@ namespace Spine {
nonessential = readBoolean(input); nonessential = readBoolean(input);
if (nonessential) { if (nonessential) {
/* Skip images path & fps */ /* Skip images path, audio path & fps */
readFloat(input); readFloat(input);
SpineExtension::free(readString(input), __FILE__, __LINE__); SpineExtension::free(readString(input), __FILE__, __LINE__);
SpineExtension::free(readString(input), __FILE__, __LINE__);
} }
/* Bones. */ /* Bones. */
@ -387,6 +388,7 @@ namespace Spine {
const char* eventData_stringValue = readString(input); const char* eventData_stringValue = readString(input);
eventData->_stringValue = std::string(eventData_stringValue); eventData->_stringValue = std::string(eventData_stringValue);
SpineExtension::free(eventData_stringValue, __FILE__, __LINE__); SpineExtension::free(eventData_stringValue, __FILE__, __LINE__);
SpineExtension::free(readString(input), __FILE__, __LINE__); // skip audio path
skeletonData->_events[i] = eventData; skeletonData->_events[i] = eventData;
} }