Author: ArcRiley
Date: 2008-02-25 18:04:04 -0500 (Mon, 25 Feb 2008)
New Revision: 987

Modified:
   trunk/pysoy/src/bodies._bodies/Body.pxi
   trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx
Log:
Ticket #934 :
  * Body._create will now only set position/etc post-creation
  * will also free, but we need to create it first


Modified: trunk/pysoy/src/bodies._bodies/Body.pxi
===================================================================
--- trunk/pysoy/src/bodies._bodies/Body.pxi     2008-02-25 22:32:47 UTC (rev 
986)
+++ trunk/pysoy/src/bodies._bodies/Body.pxi     2008-02-25 23:04:04 UTC (rev 
987)
@@ -256,13 +256,20 @@
   cdef void _create(self) :
     self._bodyID = ode.dBodyCreate(self._scene._worldID)
     ode.dBodySetData(self._bodyID, <void *>self)
-    ode.dBodySetPosition(self._bodyID, self._position[0],
-                         self._position[1], self._position[2])
-    ode.dBodySetQuaternion(self._bodyID, self._quaternion)
-    ode.dBodySetLinearVel(self._bodyID, self._linearVel[0],
-                          self._linearVel[1], self._linearVel[2])
-    ode.dBodySetAngularVel(self._bodyID, self._angularVel[0],
-                           self._angularVel[1], self._angularVel[2])
+    if self._position != NULL :
+      # Need to copy self._mass over
+      ode.dBodySetPosition(self._bodyID, self._position[0],
+                           self._position[1], self._position[2])
+      ode.dBodySetQuaternion(self._bodyID, self._quaternion)
+      ode.dBodySetLinearVel(self._bodyID, self._linearVel[0],
+                            self._linearVel[1], self._linearVel[2])
+      ode.dBodySetAngularVel(self._bodyID, self._angularVel[0],
+                             self._angularVel[1], self._angularVel[2])
+      # Need to free self._mass
+      py.PyMem_Free(self._position)
+      py.PyMem_Free(self._quaternion)
+      py.PyMem_Free(self._linearVel)
+      py.PyMem_Free(self._angularVel)
     ode.dBodyGetMass(self._bodyID, &self._mass)
     self._position   = ode.dBodyGetPosition  (self._bodyID)
     self._quaternion = ode.dBodyGetQuaternion(self._bodyID)

Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx
===================================================================
--- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx       2008-02-25 
22:32:47 UTC (rev 986)
+++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx       2008-02-25 
23:04:04 UTC (rev 987)
@@ -34,6 +34,7 @@
 
 cimport gl
 cimport py
+cimport stdio
 cimport soy._internals
 cimport soy.meshes
 

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to