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