From b49240cbb732309e1548e85782307a0501bd33ac Mon Sep 17 00:00:00 2001 From: badlogic Date: Mon, 25 Feb 2019 13:49:48 +0100 Subject: [PATCH] [cpp] Closes #1278, parsing of non-essential skeleton data. --- CHANGELOG.md | 1 + spine-cpp/spine-cpp/include/spine/SkeletonData.h | 5 +++++ spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp | 6 +++--- spine-cpp/spine-cpp/src/spine/SkeletonData.cpp | 9 +++++++++ spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp | 3 +++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 176cb0ee5..ab9e67aba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ ## C++ * ** Additions ** * Added C++ Spine runtime. See the [spine-cpp Runtime Guide](https://esotericsoftware.com/spine-cpp) for more information on spine-cpp. + * Added parsing of non-essential data (fps, images path, audio path) to for `.json`/`.skel` parsers. ### Cocos2d-x * Added ETC1 alpha support, thanks @halx99! Does not work when two color tint is enabled. diff --git a/spine-cpp/spine-cpp/include/spine/SkeletonData.h b/spine-cpp/spine-cpp/include/spine/SkeletonData.h index 953223fa6..4baf6bdb4 100644 --- a/spine-cpp/spine-cpp/include/spine/SkeletonData.h +++ b/spine-cpp/spine-cpp/include/spine/SkeletonData.h @@ -150,6 +150,10 @@ public: void setImagesPath(const String &inValue); + const String &getAudioPath(); + + void setAudioPath(const String &inValue); + /// The dopesheet FPS in Spine. Available only when nonessential data was exported. float getFps(); @@ -173,6 +177,7 @@ private: // Nonessential. float _fps; String _imagesPath; + String _audioPath; }; } diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp index 7dafcdad2..521b1b271 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonBinary.cpp @@ -138,9 +138,9 @@ SkeletonData *SkeletonBinary::readSkeletonData(const unsigned char *binary, cons if (nonessential) { /* Skip images path, audio path & fps */ - readFloat(input); - String(readString(input), true); - String(readString(input), true); + skeletonData->_fps = readFloat(input); + skeletonData->_imagesPath.own(readString(input)); + skeletonData->_audioPath.own(readString(input)); } /* Bones. */ diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonData.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonData.cpp index 3f8624473..e0b24a796 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonData.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonData.cpp @@ -204,6 +204,15 @@ void SkeletonData::setImagesPath(const String &inValue) { _imagesPath = inValue; } + +const String &SkeletonData::getAudioPath() { + return _audioPath; +} + +void SkeletonData::setAudioPath(const String &inValue) { + _audioPath = inValue; +} + float SkeletonData::getFps() { return _fps; } diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp index 3edb0deda..358dd77f4 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp @@ -137,6 +137,9 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) { skeletonData->_version = Json::getString(skeleton, "spine", 0); skeletonData->_width = Json::getFloat(skeleton, "width", 0); skeletonData->_height = Json::getFloat(skeleton, "height", 0); + skeletonData->_fps = Json::getFloat(skeleton, "fps", 30); + skeletonData->_audioPath = Json::getString(skeleton, "audio", 0); + skeletonData->_imagesPath = Json::getString(skeleton, "images", 0); } /* Bones. */