OSDN Git Service

fix blender2.5 export.
[meshio/meshio.git] / swig / pmd.i
index 0547d37..c07ce3a 100644 (file)
@@ -1,4 +1,11 @@
 %module pmd
+
+///////////////////////////////////////////////////////////////////////////////
+// bytearray typemap
+///////////////////////////////////////////////////////////////////////////////
+%include <pybuffer.i>
+%pybuffer_string(const char *src);
+
 %{
 #include <pmd.h>
 using namespace meshio;
@@ -6,6 +13,7 @@ using namespace pmd;
 %}
 %include "std_vector.i"
 %include "std_wstring.i"
+%include "std_string.i"
 %include "../include/color.h"
 %include "../include/la.h"
 %include "../include/pmd.h"
@@ -23,7 +31,7 @@ using namespace pmd;
 %template(PBoneVector) std::vector<meshio::pmd::Bone*>;
 
 ///////////////////////////////////////////////////////////////////////////////
-// vertices
+// meshio::pmd::IO::each_vertex
 ///////////////////////////////////////////////////////////////////////////////
 %inline %{
 //! Thin wrapper for ONLY the increment operator
@@ -67,3 +75,60 @@ const meshio::pmd::Vertex* _dereferenceVertex(
 }
 }
 
+///////////////////////////////////////////////////////////////////////////////
+// addVertex
+// addMaterial
+// addBone
+// addMorph
+///////////////////////////////////////////////////////////////////////////////
+%extend meshio::pmd::IO {
+
+meshio::pmd::Vertex * addVertex()
+{
+    $self->vertices.push_back(meshio::pmd::Vertex());
+    return &($self->vertices.back());
+}
+
+meshio::pmd::Material *addMaterial()
+{
+    $self->materials.push_back(new meshio::pmd::Material);
+    return $self->materials.back();
+}
+
+meshio::pmd::Bone *addBone()
+{
+    $self->bones.push_back(meshio::pmd::Bone());
+    return &($self->bones.back());
+}
+
+meshio::pmd::Morph *addMorph()
+{
+    $self->morph_list.push_back(meshio::pmd::Morph());
+    return &($self->morph_list.back());
+}
+
+meshio::pmd::IK *addIK()
+{
+    $self->ik_list.push_back(meshio::pmd::IK());
+    return &($self->ik_list.back());
+}
+
+void addBoneDisplay(unsigned short bone_index, unsigned char display_index)
+{
+    $self->bone_display_list.push_back(
+            std::make_pair(bone_index, display_index));
+}
+
+meshio::pmd::BoneDisplayName *addBoneDisplayName()
+{
+    $self->bone_display_name_list.push_back(meshio::pmd::BoneDisplayName());
+    return &($self->bone_display_name_list.back());
+}
+
+meshio::pmd::ToonTexture *getToonTexture(int index)
+{
+    return &($self->toon_textures[index]);
+}
+
+}
+