Author: ArcRiley
Date: 2008-03-04 11:15:45 -0500 (Tue, 04 Mar 2008)
New Revision: 1018

Modified:
   trunk/pysoy/src/bodies._bodies/Body.pxi
   trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
Log:
Ticket #934 :
  * changed Body._mesh from object to void*
  * added appropriate INCREF/DECREF in property mesh :
  * now testing _mesh against NULL instead of None, which caused problems


Modified: trunk/pysoy/src/bodies._bodies/Body.pxi
===================================================================
--- trunk/pysoy/src/bodies._bodies/Body.pxi     2008-03-04 15:53:53 UTC (rev 
1017)
+++ trunk/pysoy/src/bodies._bodies/Body.pxi     2008-03-04 16:15:45 UTC (rev 
1018)
@@ -30,7 +30,7 @@
                 *args, **keywords) :
     #
     # Preset to avoid threading bugs
-    self._mesh  = None
+    self._mesh  = NULL
     self._shape = None
     self._tags  = soy._datatypes.HashTable()
     #
@@ -261,17 +261,31 @@
     Defaults to None.
     '''
     def __get__(self) :
-      return self._mesh
+      if self._mesh == NULL :
+        return None
+      return <soy.meshes.Mesh> self._mesh
+
     def __set__(self, _mesh) :
-      if not (isinstance(_mesh, soy.meshes.Mesh) or self._mesh == None ) :
+      if _mesh == None :
+        del(self.mesh)
+      elif isinstance(_mesh, soy.meshes.Mesh) :
+        del(self.mesh)
+        # renderlock
+        self._mesh = <void*> _mesh
+        py.Py_INCREF(<soy.meshes.Mesh> self._mesh)
+        # renderunlock
+      else :
         raise TypeError('must be an instance of soy.meshes.Mesh')
-      # renderlock
-      self._mesh = _mesh
+
     def __del__(self) :
+      if self._mesh == NULL :
+        return
       # renderlock
-      self._mesh = None
+      py.Py_DECREF(<soy.meshes.Mesh> self._mesh)
+      self._mesh = NULL
+      # renderunlock
+ 
 
-
   property shape :
     '''Body's shape, if it has one.
     
@@ -361,22 +375,20 @@
 
   cdef void _coreRender(self) :
     cdef gl.GLfloat _mtx[16]
-    if self._mesh == None :
-      stdio.printf('Not rendering\n')
+    if self._mesh == NULL :
       return
-    stdio.printf('Rendering\n')
     self._coreGetModelview(_mtx)
     gl.glPushMatrix()
     gl.glMultMatrixf(_mtx)
     (<soy.meshes.Mesh> self._mesh)._coreRender(<void *> self)
     gl.glPopMatrix()
-    stdio.printf('Done Rendering\n')
 
   cdef void _coreCreateVertFogCoords(self):
     cdef soy._datatypes.VertexList _verts
-    if self._mesh:
-      _verts = (<soy.meshes.Mesh> self._mesh)._verts
-      _verts._uploadFogCoord( <float> self._position[1] )
+    if self._mesh == NULL :
+      return
+    _verts = (<soy.meshes.Mesh> self._mesh)._verts
+    _verts._uploadFogCoord( <float> self._position[1] )
       
   cdef void _coreGetModelview(self, float* _mtx):
     _mtx[0]  = self._rotation[0]

Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
===================================================================
--- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd       2008-03-04 
15:53:53 UTC (rev 1017)
+++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd       2008-03-04 
16:15:45 UTC (rev 1018)
@@ -23,7 +23,7 @@
 cdef class Body :
   cdef ode.dBodyID              _bodyID
   cdef object                   _scene
-  cdef object                   _mesh
+  cdef void*                    _mesh
   cdef object                   _shape
   cdef soy._datatypes.HashTable _tags
   # for loading/saving

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

Reply via email to