Author: DavidCzech
Date: 2008-01-20 03:19:15 +0000 (Sun, 20 Jan 2008)
New Revision: 792

Modified:
   trunk/pysoy/src/bodies._bodies/Body.pxi
Log:
Distance Function

Modified: trunk/pysoy/src/bodies._bodies/Body.pxi
===================================================================
--- trunk/pysoy/src/bodies._bodies/Body.pxi     2008-01-20 01:11:39 UTC (rev 
791)
+++ trunk/pysoy/src/bodies._bodies/Body.pxi     2008-01-20 03:19:15 UTC (rev 
792)
@@ -30,6 +30,7 @@
                 *args, **keywords) :
     self._quaternion[0] = 1.0
     import soy.joints
+    
     if scene == None :
       pass
       #self._bodyID = NULL
@@ -50,8 +51,27 @@
 
   def __dealloc__(self) :
     del(self.scene)
-
-
+    
+  def distance(self, Body myBody) :
+    cdef ode.dVector3 a
+    cdef ode.dVector3 b
+    cdef ode.dReal dist
+    if self._scene != 0 and self._scene == myBody._scene:     
+      #print "Vars setup"
+      #a=ode.dBodyGetPosition(<ode.dBodyID>self._bodyID)
+      ode.dBodyCopyPosition(<ode.dBodyID> self._bodyID, a)
+      #print "a got position"
+      ode.dBodyCopyPosition(<ode.dBodyID> myBody._bodyID, b)
+      #print "b got position"
+      dist =ode.dDISTANCE(a,b)
+      #print "dist got Distance",dist
+      return dist
+    #elif <void *> self._scene == NULL: # FAILS to catch
+    #  raise UnboundLocalError('Body is not in a scene')
+    elif self._scene != myBody._scene:
+      raise RuntimeError('Make sure that both Bodies are in the same Scene')
+  #def distance(self,other) :
+  #  return _distance(self,other)
   cdef void poke(self, vector) :
     if self._bodyID :
       ode.dBodyAddForce(self._bodyID, vector[0], vector[1], vector[2])

_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to