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