2
0
Эх сурвалжийг харах

Added missing member array handling (via the ASSIMP_*_ARRAY macros) in the SWIG port.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@769 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
klickverbot 15 жил өмнө
parent
commit
646357bfc2

+ 9 - 3
port/swig/assimp.i

@@ -114,21 +114,27 @@
 %include "interface/IOSystem.i"
 
 
-// We have to "instanciate" the templates at the end to avoid running into
-// forward reference issues (SWIG would spit out the vector helper functions
-// before the header includes otherwise).
+// We have to "instanciate" the templates used by the ASSSIMP_*_ARRAY macros
+// here at the end to avoid running into forward reference issues (SWIG would
+// spit out the helper functions before the header includes for the element
+// types otherwise).
 
 %template(UintVector) std::vector<unsigned int>;
 %template(aiAnimationVector) std::vector<aiAnimation *>;
+%template(aiAnimMeshVector) std::vector<aiAnimMesh *>;
+%template(aiBonesVector) std::vector<aiBone *>;
 %template(aiCameraVector) std::vector<aiCamera *>;
 %template(aiColor4DVector) std::vector<aiColor4D *>;
 %template(aiColor4DVectorVector) std::vector<std::vector<aiColor4D *> >;
 %template(aiFaceVector) std::vector<aiFace *>;
 %template(aiLightVector) std::vector<aiLight *>;
 %template(aiMaterialVector) std::vector<aiMaterial *>;
+%template(aiMaterialPropertyVector) std::vector<aiMaterialProperty *>;
+%template(aiMeshAnimVector) std::vector<aiMeshAnim *>;
 %template(aiMeshVector) std::vector<aiMesh *>;
 %template(aiNodeVector) std::vector<aiNode *>;
 %template(aiNodeAnimVector) std::vector<aiNodeAnim *>;
 %template(aiTextureVector) std::vector<aiTexture *>;
 %template(aiVector3DVector) std::vector<aiVector3D *>;
 %template(aiVector3DVectorVector) std::vector<std::vector<aiVector3D *> >;
+%template(aiVertexWeightVector) std::vector<aiVertexWeight *>;

+ 1 - 0
port/swig/interface/aiAnim.i

@@ -3,5 +3,6 @@
 %}
 
 ASSIMP_ARRAY(aiAnimation, aiNodeAnim*, mChannels, $self->mNumChannels);
+ASSIMP_ARRAY(aiAnimation, aiMeshAnim*, mMeshChannels, $self->mNumMeshChannels);
 
 %include "aiAnim.h"

+ 2 - 0
port/swig/interface/aiMaterial.i

@@ -2,6 +2,8 @@
 #include "aiMaterial.h"
 %}
 
+ASSIMP_ARRAY(aiMaterial, aiMaterialProperty*, mProperties, $self->mNumProperties)
+
 %include "aiMaterial.h"
 
 %include <typemaps.i>

+ 15 - 2
port/swig/interface/aiMesh.i

@@ -3,14 +3,27 @@
 %}
 
 
+ASSIMP_ARRAY(aiFace, unsigned int, mIndices, $self->mNumIndices);
+
+ASSIMP_POINTER_ARRAY(aiBone, aiVertexWeight, mWeights, $self->mNumWeights);
+
+ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mVertices, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mNormals, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mTangents, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mBitangents, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY_ARRAY(aiAnimMesh, aiVector3D, mTextureCoords, AI_MAX_NUMBER_OF_TEXTURECOORDS, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY_ARRAY(aiAnimMesh, aiColor4D, mColors, AI_MAX_NUMBER_OF_COLOR_SETS, $self->mNumVertices);
+
+ASSIMP_ARRAY(aiMesh, aiAnimMesh*, mAnimMeshes, $self->mNumAnimMeshes);
+ASSIMP_ARRAY(aiMesh, aiBone*, mBones, $self->mNumBones);
 ASSIMP_ARRAY(aiMesh, unsigned int, mNumUVComponents, AI_MAX_NUMBER_OF_TEXTURECOORDS);
 ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mVertices, $self->mNumVertices);
 ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mNormals, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mTangents, $self->mNumVertices);
+ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mBitangents, $self->mNumVertices);
 ASSIMP_POINTER_ARRAY(aiMesh, aiFace, mFaces, $self->mNumFaces);
 ASSIMP_POINTER_ARRAY_ARRAY(aiMesh, aiVector3D, mTextureCoords, AI_MAX_NUMBER_OF_TEXTURECOORDS, $self->mNumVertices);
 ASSIMP_POINTER_ARRAY_ARRAY(aiMesh, aiColor4D, mColors, AI_MAX_NUMBER_OF_COLOR_SETS, $self->mNumVertices);
 
-ASSIMP_ARRAY(aiFace, unsigned int, mIndices, $self->mNumIndices);
-
 
 %include "aiMesh.h"