[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"
#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);
}

View File

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

View File

@ -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;
}