+ 'name',\r
+ 'english_name',\r
+ 'bone_index',\r
+ 'collision_group',\r
+ 'no_collision_group',\r
+ 'shape_type',\r
+ 'shape_size',\r
+ 'shape_position',\r
+ 'shape_rotation',\r
+ 'param',\r
+ 'mode',\r
+ ]\r
+ def __init__(self,\r
+ name,\r
+ english_name,\r
+ bone_index,\r
+ collision_group,\r
+ no_collision_group,\r
+ shape_type,\r
+ shape_size,\r
+ shape_position,\r
+ shape_rotation,\r
+ mass,\r
+ linear_damping,\r
+ angular_damping,\r
+ restitution,\r
+ friction,\r
+ mode\r
+ ):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.bone_index=bone_index\r
+ self.collision_group=collision_group\r
+ self.no_collision_group=no_collision_group\r
+ self.shape_type=shape_type\r
+ self.shape_size=shape_size\r
+ self.shape_position=shape_position\r
+ self.shape_rotation=shape_rotation\r
+ self.param=RigidBodyParam(mass,\r
+ linear_damping, angular_damping,\r
+ restitution, friction)\r
+ self.mode=mode\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.name==rhs.name\r
+ and self.english_name==rhs.english_name\r
+ and self.bone_index==rhs.bone_index\r
+ and self.collision_group==rhs.collision_group\r
+ and self.no_collision_group==rhs.no_collision_group\r
+ and self.shape_type==rhs.shape_type\r
+ and self.shape_size==rhs.shape_size\r
+ and self.param==rhs.param\r
+ and self.mode==rhs.mode\r
+ )\r
+\r
+ def __ne__(self, rhs):\r
+ return not self.__eq__(rhs)\r
+\r
+ def diff(self, rhs):\r
+ self._diff(rhs, 'name')\r
+ self._diff(rhs, 'english_name')\r
+ self._diff(rhs, 'bone_index')\r
+ self._diff(rhs, 'collision_group')\r
+ self._diff(rhs, 'no_collision_group')\r
+ self._diff(rhs, 'shape_type')\r
+ self._diff(rhs, 'shape_size')\r
+ self._diff(rhs, 'shape_position')\r
+ self._diff(rhs, 'shape_rotation')\r
+ self._diff(rhs, 'param')\r
+ self._diff(rhs, 'mode')\r
+\r
+\r
+class Joint(Diff):\r
+ """pmx joint\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ joint_type:\r
+ rigidbody_index_a:\r
+ rigidbody_index_b:\r
+ position: Vector3\r
+ rotation: Vector3\r
+ translation_limit_min: Vector3\r
+ translation_limit_max: Vector3\r
+ rotation_limit_min: Vector3\r
+ rotation_limit_max: Vector3\r
+ spring_constant_translation: Vector3\r
+ spring_constant_rotation: Vector3\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'joint_type',\r
+ 'rigidbody_index_a',\r
+ 'rigidbody_index_b',\r
+ 'position',\r
+ 'rotation',\r
+ 'translation_limit_min',\r
+ 'translation_limit_max',\r
+ 'rotation_limit_min',\r
+ 'rotation_limit_max',\r
+ 'spring_constant_translation',\r
+ 'spring_constant_rotation',\r
+ ]\r
+ def __init__(self, name, english_name,\r
+ joint_type,\r
+ rigidbody_index_a,\r
+ rigidbody_index_b,\r
+ position,\r
+ rotation,\r
+ translation_limit_min,\r
+ translation_limit_max,\r
+ rotation_limit_min,\r
+ rotation_limit_max,\r
+ spring_constant_translation,\r
+ spring_constant_rotation\r
+ ):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.joint_type=joint_type\r
+ self.rigidbody_index_a=rigidbody_index_a\r
+ self.rigidbody_index_b=rigidbody_index_b\r
+ self.position=position\r
+ self.rotation=rotation\r
+ self.translation_limit_min=translation_limit_min\r
+ self.translation_limit_max=translation_limit_max\r
+ self.rotation_limit_min=rotation_limit_min\r
+ self.rotation_limit_max=rotation_limit_max\r
+ self.spring_constant_translation=spring_constant_translation\r
+ self.spring_constant_rotation=spring_constant_rotation\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.name==rhs.name\r
+ and self.english_name==rhs.english_name\r
+ and self.joint_type==rhs.joint_type\r
+ and self.rigidbody_index_a==rhs.rigidbody_index_a\r
+ and self.rigidbody_index_b==rhs.rigidbody_index_b\r
+ and self.position==rhs.position\r
+ and self.rotation==rhs.rotation\r
+ and self.translation_limit_min==rhs.translation_limit_min\r
+ and self.translation_limit_max==rhs.translation_limit_max\r
+ and self.rotation_limit_min==rhs.rotation_limit_min\r
+ and self.rotation_limit_max==rhs.rotation_limit_max\r
+ and self.spring_constant_translation==rhs.spring_constant_translation\r
+ and self.spring_constant_rotation==rhs.spring_constant_rotation\r
+ )\r
+\r
+ def __ne__(self, rhs):\r
+ return not self.__eq__(rhs)\r
+\r
+ def diff(self, rhs):\r
+ self._diff(rhs, 'name')\r
+ self._diff(rhs, 'joint_type')\r
+ self._diff(rhs, 'rigidbody_index_a')\r
+ self._diff(rhs, 'rigidbody_index_b')\r
+ self._diff(rhs, 'position')\r
+ self._diff(rhs, 'rotation')\r
+ self._diff(rhs, 'translation_limit_min')\r
+ self._diff(rhs, 'translation_limit_max')\r
+ self._diff(rhs, 'rotation_limit_min')\r
+ self._diff(rhs, 'rotation_limit_max')\r
+ self._diff(rhs, 'spring_constant_translation')\r
+ self._diff(rhs, 'spring_constant_rotation')\r
+\r
+\r
+class Model(Diff):\r
+ """\r
+ ==========\r
+ pmx model\r
+ ==========\r
+\r
+ :IVariables:\r
+ version\r
+ pmx version(expected 2.0)\r
+ name \r
+ model name\r
+ english_name \r
+ model name\r
+ comment \r
+ comment\r
+ english_comment \r
+ comment\r
+ vertices\r
+ vertex list\r
+ textures\r
+ texture list\r
+ materials\r
+ material list\r
+ bones\r
+ bone list\r
+ morph\r
+ morph list\r
+ display_slots\r
+ display list for bone/morph grouping\r
+ rigidbodies\r
+ bullet physics rigidbody list\r
+ joints\r
+ bullet physics joint list\r
+ """\r
+ __slots__=[\r
+ 'path',\r
+ 'version',\r
+ 'name',\r
+ 'english_name',\r
+ 'comment',\r
+ 'english_comment',\r