Author: JonNeal Date: 2008-03-10 17:56:25 -0400 (Mon, 10 Mar 2008) New Revision: 1126
Modified: trunk/pysoy/src/_datatypes/BodyPosition.pxi Log: Ticket #945: More help.. Modified: trunk/pysoy/src/_datatypes/BodyPosition.pxi =================================================================== --- trunk/pysoy/src/_datatypes/BodyPosition.pxi 2008-03-10 21:47:49 UTC (rev 1125) +++ trunk/pysoy/src/_datatypes/BodyPosition.pxi 2008-03-10 21:56:25 UTC (rev 1126) @@ -25,7 +25,7 @@ Accepts a body or list (x,y,z) for the only parameter. ''' - def __cinit__(self, parent=None) : + def __cinit__(self, parent) : if isinstance(parent, soy.bodies.Body) : self._body = <void*> parent elif type(parent) == list or type(parent) == tuple : @@ -37,19 +37,34 @@ raise TypeError("parent must be a soy.bodies.Body, list, or tuple") def __add__(self, value) : - if type(value) == int or type(value) == float : - return soy._datatypes.BodyPosition((self._position[0] + value, - self._position[1] + value, - self._position[1] + value)) - if isinstance(value, soy._datatypes.BodyPosition) : - return soy._datatypes.BodyPosition((self._position[0] + value.x, - self._position[1] + value.y, - self._position[1] + value.z)) - if type(value) == tuple or type(value) == list and len(value) == 3 : - return soy._datatypes.BodyPosition((self._position[0] + value[0], - self._position[1] + value[1], - self._position[1] + value[2])) - return NotImplemented + if self._body : + if type(value) == int or type(value) == float : + return soy._datatypes.BodyPosition(((<soy.bodies.Body> self._body)._position[0] + value, + (<soy.bodies.Body> self._body)._position[1] + value, + (<soy.bodies.Body> self._body)._position[2] + value)) + if isinstance(value, soy._datatypes.BodyPosition) : + return soy._datatypes.BodyPosition(((<soy.bodies.Body> self._body)._position[0] + value.x, + (<soy.bodies.Body> self._body)._position[1] + value.y, + (<soy.bodies.Body> self._body)._position[2] + value.z)) + if type(value) == tuple or type(value) == list and len(value) == 3 : + return soy._datatypes.BodyPosition(((<soy.bodies.Body> self._body)._position[0] + value[0], + (<soy.bodies.Body> self._body)._position[1] + value[1], + (<soy.bodies.Body> self._body)._position[2] + value[2])) + return NotImplemented + else : + if type(value) == int or type(value) == float : + return soy._datatypes.BodyPosition((self._position[0] + value, + self._position[1] + value, + self._position[2] + value)) + if isinstance(value, soy._datatypes.BodyPosition) : + return soy._datatypes.BodyPosition((self._position[0] + value.x, + self._position[1] + value.y, + self._position[2] + value.z)) + if type(value) == tuple or type(value) == list and len(value) == 3 : + return soy._datatypes.BodyPosition((self._position[0] + value[0], + self._position[1] + value[1], + self._position[2] + value[2])) + return NotImplemented def __getitem__(self, index) : @@ -59,7 +74,8 @@ raise IndexError('Position index out of range') if self._body : return (<soy.bodies.Body> self._body)._position[index] - return self._position[index] + else : + return self._position[index] def __len__(self) : @@ -110,6 +126,7 @@ value) (<soy.scenes.Scene> (<soy.bodies.Body> self._body)._scene)._stepUnLock() else : + stdio.printf("Test 1\n") self._position[index] = value _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn