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

Reply via email to