+ ############################################################
+ # extend data
+ ############################################################
+ io.write(struct.pack("B", 1))
+ # english name
+ io.write(struct.pack("=20s", self.english_name))
+ io.write(struct.pack("=256s", self.english_comment))
+ # english bone name
+ for bone in self.bones:
+ io.write(struct.pack("=20s", bone.english_name))
+ # english skin list
+ for skin in self.morph_list:
+ #print(skin.name)
+ if skin.name==b'base':
+ continue
+ io.write(struct.pack("=20s", skin.english_name))
+ # english bone list
+ for bone_group in self.bone_group_list:
+ io.write(struct.pack("50s", bone_group.english_name))
+ # toon texture
+ for toon_texture in self.toon_textures:
+ io.write(struct.pack("=100s", toon_texture))
+ # rigid
+ io.write(struct.pack("I", len(self.rigidbodies)))
+ for r in self.rigidbodies:
+ io.write(struct.pack("=20sHBHB14fB",
+ r.name, r.boneIndex, r.group, r.target, r.shapeType,
+ r.w, r.h, r.d,
+ r.position.x, r.position.y, r.position.z,
+ r.rotation.x, r.rotation.y, r.rotation.z,
+ r.weight,
+ r.linearDamping, r.angularDamping, r.restitution,
+ r.friction, r.processType))
+
+ # constraint
+ io.write(struct.pack("I", len(self.constraints)))
+ for c in self.constraints:
+ io.write(struct.pack("=20sII24f",
+ c.name, c.rigidA, c.rigidB,
+ c.pos.x, c.pos.y, c.pos.z,
+ c.rot.x, c.rot.y, c.rot.z,
+ c.constraintPosMin.x, c.constraintPosMin.y, c.constraintPosMin.z,
+ c.constraintPosMax.x, c.constraintPosMax.y, c.constraintPosMax.z,
+ c.constraintRotMin.x, c.constraintRotMin.y, c.constraintRotMin.z,
+ c.constraintRotMax.x, c.constraintRotMax.y, c.constraintRotMax.z,
+ c.springPos.x, c.springPos.y, c.springPos.z,
+ c.springRot.x, c.springRot.y, c.springRot.z
+ ))
+