Răsfoiți Sursa

[cpp] Closes #1278, parsing of non-essential skeleton data.

badlogic 6 ani în urmă
părinte
comite
b49240cbb7

+ 1 - 0
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.

+ 5 - 0
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;
 };
 }
 

+ 3 - 3
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. */

+ 9 - 0
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;
 }

+ 3 - 0
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. */