+ def __eq__(self, rhs):\r
+ return (\r
+ self.position==rhs.position\r
+ and self.normal==rhs.normal\r
+ and self.uv==rhs.uv\r
+ and self.deform==rhs.deform\r
+ and self.edge_factor==rhs.edge_factor\r
+ )\r
+\r
+\r
+class Morph(object):\r
+ """pmx morph\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ panel:\r
+ morph_type:\r
+ offsets:\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'panel',\r
+ 'morph_type',\r
+ 'offsets',\r
+ ]\r
+ def __init__(self, name, english_name, panel, morph_type):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.panel=panel\r
+ self.morph_type=morph_type\r
+ self.offsets=[]\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.name==rhs.name\r
+ and self.english_name==rhs.english_name\r
+ and self.panel==rhs.panel\r
+ and self.morph_type==rhs.morph_type\r
+ and self.offsets==rhs.offsets\r
+ )\r
+\r
+\r
+class VerexMorphOffset(object):\r
+ """pmx vertex morph offset\r
+\r
+ Attributes:\r
+ vertex_index:\r
+ position_offset: Vector3\r
+ """\r
+ __slots__=[\r
+ 'vertex_index',\r
+ 'position_offset',\r
+ ]\r
+ def __init__(self, vertex_index, position_offset):\r
+ self.vertex_index=vertex_index\r
+ self.position_offset=position_offset\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.vertex_index==rhs.vertex_index \r
+ and self.position_offset==rhs.position_offset\r
+ )\r
+\r
+\r
+class DisplaySlot(object):\r
+ """pmx display slot\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ special_flag:\r
+ refrences: list of (ref_type, ref_index)\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'special_flag',\r
+ 'refrences',\r
+ ]\r
+ def __init__(self, name, english_name, special_flag):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.special_flag=special_flag\r
+ self.refrences=[]\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.name==rhs.name\r
+ and self.english_name==rhs.english_name\r
+ and self.special_flag==rhs.special_flag\r
+ and self.refrences==rhs.refrences\r
+ )\r
+\r
+\r
+class RigidBodyParam(object):\r
+ """pmx rigidbody param(for bullet)\r
+\r
+ Attributes:\r
+ mass:\r
+ linear_damping:\r
+ angular_damping:\r
+ restitution:\r
+ friction:\r
+ """\r
+ __slots__=[\r
+ 'mass',\r
+ 'linear_damping',\r
+ 'angular_damping',\r
+ 'restitution',\r
+ 'friction',\r
+ ]\r
+ def __init__(self, mass, \r
+ linear_damping, angular_damping, restitution, friction):\r
+ self.mass=mass\r
+ self.linear_damping=linear_damping\r
+ self.angular_damping=angular_damping\r
+ self.restitution=restitution\r
+ self.friction=friction\r
+\r
+ def __eq__(self, rhs):\r
+ return (\r
+ self.mass==rhs.mass\r
+ and self.linear_damping==rhs.linear_damping\r
+ and self.angular_damping==rhs.angular_damping\r
+ and self.restitution==rhs.restitution\r
+ and self.friction==rhs.friction\r
+ )\r
+\r
+\r
+class RigidBody(object):\r
+ """pmx rigidbody\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ bone_index:\r
+ collision_group:\r
+ no_collision_group:\r
+ shape:\r
+ param:\r
+ mode:\r
+ """\r
+ __slots__=[\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
+ '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
+\r
+class Joint(object):\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