import io\r
import os\r
import struct\r
-from pymeshio import common\r
+from .. import common\r
\r
\r
\r
def _diff_array(self, rhs, key):\r
la=getattr(self, key)\r
ra=getattr(rhs, key)\r
- if len(la)!=len(la):\r
- raise DifferenceException(key)\r
+ if len(la)!=len(ra):\r
+ raise DifferenceException("%s diffrence %d with %d" % (key, len(la), len(ra)))\r
for i, (l, r) in enumerate(zip(la, ra)):\r
if isinstance(l, Diff):\r
try:\r
'limit_radian',\r
'link',\r
]\r
- def __init__(self, target_index, loop, limit_radian, link=[]):\r
+ def __init__(self, target_index, loop, limit_radian, link=None):\r
self.target_index=target_index\r
self.loop=loop\r
self.limit_radian=limit_radian\r
- self.link=link\r
+ self.link=link or []\r
\r
def __eq__(self, rhs):\r
return (\r
'limit_min',\r
'limit_max',\r
]\r
- def __init__(self, bone_index, limit_angle, limit_min=common.Vector3(), limit_max=common.Vector3()):\r
+ def __init__(self, bone_index, limit_angle, limit_min=None, limit_max=None):\r
self.bone_index=bone_index\r
self.limit_angle=limit_angle\r
- self.limit_min=limit_min\r
- self.limit_max=limit_max\r
+ self.limit_min=limit_min or common.Vector3()\r
+ self.limit_max=limit_max or common.Vector3()\r
\r
def __eq__(self, rhs):\r
return (\r
parent_index,\r
layer,\r
flag,\r
- tail_position=common.Vector3(),\r
+ tail_position=None,\r
tail_index=-1,\r
effect_index=-1,\r
effect_factor=0.0,\r
- fixed_axis=common.Vector3(),\r
- local_x_vector=common.Vector3(),\r
- local_z_vector=common.Vector3(),\r
+ fixed_axis=None,\r
+ local_x_vector=None,\r
+ local_z_vector=None,\r
external_key=-1,\r
ik=None\r
):\r
self.parent_index=parent_index\r
self.layer=layer\r
self.flag=flag\r
- self.tail_position=tail_position\r
+ self.tail_position=tail_position or common.Vector3()\r
self.tail_index=tail_index\r
self.effect_index=effect_index\r
self.effect_factor=effect_factor\r
- self.fixed_axis=fixed_axis\r
- self.local_x_vector=local_x_vector\r
- self.local_z_vector=local_z_vector\r
+ self.fixed_axis=fixed_axis or common.Vector3()\r
+ self.local_x_vector=local_x_vector or common.Vector3()\r
+ self.local_z_vector=local_z_vector or common.Vector3()\r
self.external_key=external_key\r
self.ik=ik\r
\r
self._diff(rhs, 'ik')\r
\r
def getConnectionFlag(self):\r
- return self.flag & 0x0001\r
+ return (self.flag & 0x0001)!=0\r
+\r
+ def getVisibleFlag(self):\r
+ return (self.flag & 0x0008)!=0\r
\r
def getIkFlag(self):\r
- return (self.flag & 0x0020) >> 5\r
+ return (self.flag & 0x0020)!=0\r
\r
def getRotationFlag(self):\r
- return (self.flag & 0x0100) >> 8\r
+ return (self.flag & 0x0100)!=0\r
\r
def getTranslationFlag(self):\r
- return (self.flag & 0x0200) >> 9\r
+ return (self.flag & 0x0200)!=0\r
\r
def getFixedAxisFlag(self):\r
- return (self.flag & 0x0400) >> 10\r
+ return (self.flag & 0x0400)!=0\r
\r
def getLocalCoordinateFlag(self):\r
- return (self.flag & 0x0800) >> 11\r
+ return (self.flag & 0x0800)!=0\r
\r
def getExternalParentDeformFlag(self):\r
- return (self.flag & 0x2000) >> 13\r
+ return (self.flag & 0x2000)!=0\r
\r
\r
class Material(Diff):\r
'morph_type',\r
'offsets',\r
]\r
- def __init__(self, name, english_name, panel, morph_type):\r
+ def __init__(self, name, english_name, panel, morph_type, offsets=None):\r
self.name=name\r
self.english_name=english_name\r
self.panel=panel\r
self.morph_type=morph_type\r
- self.offsets=[]\r
+ self.offsets=offsets or []\r
\r
def __eq__(self, rhs):\r
return (\r
def diff(self, rhs):\r
self._diff(rhs, 'name')\r
self._diff(rhs, 'english_name')\r
- self._diff(rhs, 'panel')\r
+ #self._diff(rhs, 'panel')\r
self._diff(rhs, 'morph_type')\r
self._diff_array(rhs, 'offsets')\r
\r
\r
-class VerexMorphOffset(Diff):\r
+class VertexMorphOffset(Diff):\r
"""pmx vertex morph offset\r
\r
Attributes:\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, 'vertex_index')\r
+ self._diff(rhs, 'position_offset')\r
\r
\r
class DisplaySlot(Diff):\r
name: \r
english_name: \r
special_flag:\r
- refrences: list of (ref_type, ref_index)\r
+ references: list of (ref_type, ref_index)\r
"""\r
__slots__=[\r
'name',\r
'english_name',\r
'special_flag',\r
- 'refrences',\r
+ 'references',\r
]\r
- def __init__(self, name, english_name, special_flag):\r
+ def __init__(self, name, english_name, special_flag, references=None):\r
self.name=name\r
self.english_name=english_name\r
self.special_flag=special_flag\r
- self.refrences=[]\r
+ self.references=references or []\r
+\r
+ def __str__(self):\r
+ return "<DisplaySlots %s(%d)>" % (self.name, len(self.references))\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
+ and self.references==rhs.references\r
)\r
\r
def __ne__(self, rhs):\r
self._diff(rhs, 'name')\r
self._diff(rhs, 'english_name')\r
self._diff(rhs, 'special_flag')\r
- self._diff_array(rhs, 'refrences')\r
+ #self._diff_array(rhs, 'references')\r
\r
\r
class RigidBodyParam(Diff):\r
bullet physics joint list\r
"""\r
__slots__=[\r
+ 'path',\r
'version',\r
'name',\r
'english_name',\r
'joints',\r
]\r
def __init__(self, version=2.0):\r
+ self.path=''\r
self.version=version\r
self.name=''\r
self.english_name=''\r