Browse Source

Ensure gltf asset version is printed as \d.0

Daniel Hritzkiv 8 years ago
parent
commit
7a4a32625c

+ 3 - 3
code/glTF2Asset.h

@@ -177,7 +177,7 @@ namespace glTF2
     struct GLB_Header
     {
         uint8_t magic[4];     //!< Magic number: "glTF"
-        uint32_t version;     //!< Version number
+        float_t version;     //!< Version number
         uint32_t length;      //!< Total length of the Binary glTF, including header, scene, and body, in bytes
         uint32_t sceneLength; //!< Length, in bytes, of the glTF scene
         uint32_t sceneFormat; //!< Specifies the format of the glTF scene (see the SceneFormat enum)
@@ -1074,13 +1074,13 @@ namespace glTF2
             std::string version; //!< Specifies the target rendering API (default: "1.0.3")
         } profile; //!< Specifies the target rendering API and version, e.g., WebGL 1.0.3. (default: {})
 
-        int version; //!< The glTF format version
+        float version; //!< The glTF format version
 
         void Read(Document& doc);
 
         AssetMetadata()
             : premultipliedAlpha(false)
-            , version(0)
+            , version(0.)
         {
         }
     };

+ 7 - 6
code/glTF2Asset.inl

@@ -1229,7 +1229,7 @@ inline void Scene::Read(Value& obj, Asset& r)
 inline void AssetMetadata::Read(Document& doc)
 {
     // read the version, etc.
-    int statedVersion = 0;
+    float statedVersion = 0.;
     if (Value* obj = FindObject(doc, "asset")) {
         ReadMember(*obj, "copyright", copyright);
         ReadMember(*obj, "generator", generator);
@@ -1244,14 +1244,15 @@ inline void AssetMetadata::Read(Document& doc)
     }
 
     version = std::max(statedVersion, version);
-    if (version == 0) {
-        // if missing version, we'll assume version 1...
-        version = 1;
+
+    if (version == 0.) {
+        // if missing version, we'll assume version 1.0...
+        version = 1.;
     }
 
-    if (version != 1) {
+    if (version != 1.) {
         char msg[128];
-        ai_snprintf(msg, 128, "GLTF: Unsupported glTF version: %d", version);
+        ai_snprintf(msg, 128, "GLTF: Unsupported glTF version: %.1f", version);
         throw DeadlyImportError(msg);
     }
 }

+ 2 - 2
code/glTF2AssetWriter.inl

@@ -574,7 +574,7 @@ namespace glTF2 {
         GLB_Header header;
         memcpy(header.magic, AI_GLB_MAGIC_NUMBER, sizeof(header.magic));
 
-        header.version = 2;
+        header.version = 2.;
         AI_SWAP4(header.version);
 
         header.length = uint32_t(sizeof(header) + sceneLength + bodyLength);
@@ -600,7 +600,7 @@ namespace glTF2 {
         asset.SetObject();
         {
             char versionChar[10];
-            ai_snprintf(versionChar, sizeof(versionChar), "%d", mAsset.asset.version);
+            ai_snprintf(versionChar, sizeof(versionChar), "%.1f", mAsset.asset.version);
             asset.AddMember("version", Value(versionChar, mAl).Move(), mAl);
 
             asset.AddMember("generator", Value(mAsset.asset.generator, mAl).Move(), mAl);

+ 1 - 1
code/glTF2Exporter.cpp

@@ -845,7 +845,7 @@ void glTF2Exporter::ExportScene()
 void glTF2Exporter::ExportMetadata()
 {
     AssetMetadata& asset = mAsset->asset;
-    asset.version = 2;
+    asset.version = 2.;
 
     char buffer[256];
     ai_snprintf(buffer, 256, "Open Asset Import Library (assimp v%d.%d.%d)",

+ 2 - 2
code/glTFAsset.h

@@ -177,7 +177,7 @@ namespace glTF
     struct GLB_Header
     {
         uint8_t magic[4];     //!< Magic number: "glTF"
-        uint32_t version;     //!< Version number (always 1 as of the last update)
+        float_t version;     //!< Version number (always 1 as of the last update)
         uint32_t length;      //!< Total length of the Binary glTF, including header, scene, and body, in bytes
         uint32_t sceneLength; //!< Length, in bytes, of the glTF scene
         uint32_t sceneFormat; //!< Specifies the format of the glTF scene (see the SceneFormat enum)
@@ -1058,7 +1058,7 @@ namespace glTF
             std::string version; //!< Specifies the target rendering API (default: "1.0.3")
         } profile; //!< Specifies the target rendering API and version, e.g., WebGL 1.0.3. (default: {})
 
-        int version; //!< The glTF format version (should be 1)
+        float version; //!< The glTF format version (should be 1.0)
 
         void Read(Document& doc);
 

+ 4 - 4
code/glTFAsset.inl

@@ -1228,7 +1228,7 @@ inline void Scene::Read(Value& obj, Asset& r)
 inline void AssetMetadata::Read(Document& doc)
 {
     // read the version, etc.
-    int statedVersion = 0;
+    float statedVersion = 0.;
     if (Value* obj = FindObject(doc, "asset")) {
         ReadMember(*obj, "copyright", copyright);
         ReadMember(*obj, "generator", generator);
@@ -1243,14 +1243,14 @@ inline void AssetMetadata::Read(Document& doc)
     }
 
     version = std::max(statedVersion, version);
-    if (version == 0) {
+    if (version == 0.) {
         // if missing version, we'll assume version 1...
         version = 1;
     }
 
-    if (version != 1) {
+    if (version != 1.) {
         char msg[128];
-        ai_snprintf(msg, 128, "GLTF: Unsupported glTF version: %d", version);
+        ai_snprintf(msg, 128, "GLTF: Unsupported glTF version: %.0f", version);
         throw DeadlyImportError(msg);
     }
 }

+ 2 - 2
code/glTFAssetWriter.inl

@@ -582,7 +582,7 @@ namespace glTF {
         GLB_Header header;
         memcpy(header.magic, AI_GLB_MAGIC_NUMBER, sizeof(header.magic));
 
-        header.version = 1;
+        header.version = 1.;
         AI_SWAP4(header.version);
 
         header.length = uint32_t(sizeof(header) + sceneLength + bodyLength);
@@ -608,7 +608,7 @@ namespace glTF {
         asset.SetObject();
         {
             char versionChar[10];
-            ai_snprintf(versionChar, sizeof(versionChar), "%d", mAsset.asset.version);
+            ai_snprintf(versionChar, sizeof(versionChar), "%.0f", mAsset.asset.version);
             asset.AddMember("version", Value(versionChar, mAl).Move(), mAl);
 
             asset.AddMember("generator", Value(mAsset.asset.generator, mAl).Move(), mAl);

+ 1 - 1
code/glTFExporter.cpp

@@ -834,7 +834,7 @@ void glTFExporter::ExportScene()
 void glTFExporter::ExportMetadata()
 {
     glTF::AssetMetadata& asset = mAsset->asset;
-    asset.version = 1;
+    asset.version = 1.;
 
     char buffer[256];
     ai_snprintf(buffer, 256, "Open Asset Import Library (assimp v%d.%d.%d)",