summaryrefslogtreecommitdiff
path: root/libs/assimp/port/swig/interface/assimp.i
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/port/swig/interface/assimp.i')
-rw-r--r--libs/assimp/port/swig/interface/assimp.i45
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/assimp/port/swig/interface/assimp.i b/libs/assimp/port/swig/interface/assimp.i
new file mode 100644
index 0000000..a1b1404
--- /dev/null
+++ b/libs/assimp/port/swig/interface/assimp.i
@@ -0,0 +1,45 @@
+%{
+#include "assimp.hpp"
+%}
+
+
+namespace Assimp {
+
+// See docs in assimp.hpp.
+%ignore Importer::ReadFile(const std::string& pFile, unsigned int pFlags);
+%ignore Importer::GetExtensionList(std::string& szOut);
+%ignore Importer::IsExtensionSupported(const std::string& szExtension);
+
+// These are only necessary for extending Assimp with custom importers or post
+// processing steps, which would require wrapping the internal BaseImporter and
+// BaseProcess classes.
+%ignore Importer::RegisterLoader(BaseImporter* pImp);
+%ignore Importer::UnregisterLoader(BaseImporter* pImp);
+%ignore Importer::RegisterPPStep(BaseProcess* pImp);
+%ignore Importer::UnregisterPPStep(BaseProcess* pImp);
+%ignore Importer::FindLoader(const char* szExtension);
+
+}
+
+
+// Each aiScene has to keep a reference to the Importer to prevent it from
+// being garbage collected, whose destructor would release the underlying
+// C++ memory the scene is stored in.
+%typemap(dcode) aiScene "package Object m_importer;"
+%typemap(dout)
+ aiScene* GetScene,
+ aiScene* ReadFile,
+ aiScene* ApplyPostProcessing,
+ aiScene* ReadFileFromMemory {
+ void* cPtr = $wcall;
+ $dclassname ret = (cPtr is null) ? null : new $dclassname(cPtr, $owner);$excode
+ ret.m_importer = this;
+ return ret;
+}
+
+%include <typemaps.i>
+%apply bool *OUTPUT { bool *bWasExisting };
+
+%include "assimp.hpp"
+
+%clear bool *bWasExisting;