Ver código fonte

Revert previous glTF fix (e5233283efa2b84a1bf) because it breaks ODR as pointed out by @turol, instead just make importer depend on the necessary definitions.

Alexander Gessler 9 anos atrás
pai
commit
0b79d1ebda

+ 2 - 6
code/glTFAsset.h

@@ -756,19 +756,17 @@ namespace glTF
         virtual void AttachToDocument(Document& doc) = 0;
         virtual void DetachFromDocument() = 0;
 
-#ifdef  GLTF_ASSET_WITH_EXPORT_SUPPORT
         virtual void WriteObjects(AssetWriter& writer) = 0;
-#endif
     };
 
-#ifdef GLTF_ASSET_WITH_EXPORT_SUPPORT
+
     template<class T>
     class LazyDict;
 
     //! (Implemented in glTFAssetWriter.h)
     template<class T>
     void WriteLazyDict(LazyDict<T>& d, AssetWriter& w);
-#endif
+
 
     //! Manages lazy loading of the glTF top-level objects, and keeps a reference to them by ID
     //! It is the owner the loaded objects, so when it is destroyed it also deletes them
@@ -790,10 +788,8 @@ namespace glTF
         void AttachToDocument(Document& doc);
         void DetachFromDocument();
 
-#ifdef  GLTF_ASSET_WITH_EXPORT_SUPPORT
         void WriteObjects(AssetWriter& writer)
             { WriteLazyDict<T>(*this, writer); }
-#endif
 
         Ref<T> Add(T* obj);
 

+ 0 - 1
code/glTFAssetWriter.h

@@ -48,7 +48,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #ifndef glTFAssetWriter_H_INC
 #define glTFAssetWriter_H_INC
 
-#define GLTF_ASSET_WITH_EXPORT_SUPPORT
 #include "glTFAsset.h"
 
 namespace glTF

+ 5 - 5
code/glTFAssetWriter.inl

@@ -305,7 +305,7 @@ namespace glTF {
     }
 
 
-    AssetWriter::AssetWriter(Asset& a)
+    inline AssetWriter::AssetWriter(Asset& a)
         : mDoc()
         , mAsset(a)
         , mAl(mDoc.GetAllocator())
@@ -326,7 +326,7 @@ namespace glTF {
         }
     }
 
-    void AssetWriter::WriteFile(const char* path)
+    inline void AssetWriter::WriteFile(const char* path)
     {
         bool isBinary = mAsset.extensionsUsed.KHR_binary_glTF;
 
@@ -363,7 +363,7 @@ namespace glTF {
         }
     }
 
-    void AssetWriter::WriteBinaryData(IOStream* outfile, size_t sceneLength)
+    inline void AssetWriter::WriteBinaryData(IOStream* outfile, size_t sceneLength)
     {
         //
         // write the body data
@@ -413,7 +413,7 @@ namespace glTF {
     }
 
     
-    void AssetWriter::WriteMetadata()
+    inline void AssetWriter::WriteMetadata()
     {
         Value asset;
         asset.SetObject();
@@ -425,7 +425,7 @@ namespace glTF {
         mDoc.AddMember("asset", asset, mAl);
     }
 
-    void AssetWriter::WriteExtensionsUsed()
+    inline void AssetWriter::WriteExtensionsUsed()
     {
         Value exts;
         exts.SetArray();

+ 1 - 1
code/glTFExporter.cpp

@@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #ifndef ASSIMP_BUILD_NO_GLTF_EXPORTER
 
 #include "glTFExporter.h"
+
 #include "Exceptional.h"
 #include "StringComparison.h"
 #include "ByteSwapper.h"
@@ -54,7 +55,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <assimp/material.h>
 #include <assimp/scene.h>
 
-#include <memory>
 #include <memory>
 
 #include "glTFAssetWriter.h"

+ 2 - 0
code/glTFImporter.cpp

@@ -53,6 +53,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "MakeVerboseFormat.h"
 
 #include "glTFAsset.h"
+// This is included here so WriteLazyDict<T>'s definition is found.
+#include "glTFAssetWriter.h"
 
 using namespace Assimp;
 using namespace glTF;