Author: ArcRiley Date: 2008-03-08 01:36:03 -0500 (Sat, 08 Mar 2008) New Revision: 1098
Modified: trunk/pysoy/examples/collide_blocks.py trunk/pysoy/src/_datatypes/VertexList.pxi trunk/pysoy/src/bodies._bodies/Body.pxi trunk/pysoy/src/bodies._bodies/Camera.pxi trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd trunk/pysoy/src/models/Liquid.pxi Log: Ticket #901 : * this segfaults almost immediatly, but may be in the right direction Modified: trunk/pysoy/examples/collide_blocks.py =================================================================== --- trunk/pysoy/examples/collide_blocks.py 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/examples/collide_blocks.py 2008-03-08 06:36:03 UTC (rev 1098) @@ -12,7 +12,9 @@ #m = soy.bodies.fields.Monopole(sce) #m.shape=soy.shapes.Sphere(15) #m.multiplier=.01 +print 'test' bks = blocks.blocks(sce) +print 'foo' fps = soy.textures.Print() scr = soy.Screen() Modified: trunk/pysoy/src/_datatypes/VertexList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-08 06:36:03 UTC (rev 1098) @@ -216,7 +216,7 @@ cdef int _i _body = <soy.bodies._bodies.Body> __body - _scene = _body._scene + _scene = <soy.scenes.Scene> _body._scene if _scene._lights._current > 0 : _light = <soy.bodies._bodies.Light> _scene._lights._list[0] Modified: trunk/pysoy/src/bodies._bodies/Body.pxi =================================================================== --- trunk/pysoy/src/bodies._bodies/Body.pxi 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/src/bodies._bodies/Body.pxi 2008-03-08 06:36:03 UTC (rev 1098) @@ -37,15 +37,16 @@ if scene == None : self._copySet(<ode.dReal*> py.PyMem_Malloc(sizeof(float) * 25)) self._bodyID = NULL - self._scene = None + self._scene = NULL elif isinstance(scene, soy.scenes.Scene) : (<soy.scenes.Scene> scene)._stepLock() - self._scene = scene + py.Py_INCREF(scene) + self._scene = <void*> scene self._create() (<soy.scenes.Scene> scene)._bodies._append(<void*> self) (<soy.scenes.Scene> scene)._stepUnLock() else : - self._scene = None + self._scene = NULL self._position = NULL raise TypeError('scene must be instance of soy.scenes.Scene or None') # @@ -66,6 +67,7 @@ self._remove() self._destroy() (<soy.scenes.Scene> self._scene)._stepUnLock() + py.Py_DECREF(<soy.scenes.Scene> self._scene) elif self._position != NULL : # If not in a scene and local storage alloc'ed, free it py.PyMem_Free(self._position) @@ -111,7 +113,7 @@ orientation, velocity, and rotation are all reset to (0,0,0). ''' def __get__(self) : - return self._scene + return <soy.scenes.Scene> self._scene # def __set__(self, soy.scenes.Scene _newscene) : cdef ode.dReal _store[25] @@ -131,10 +133,12 @@ ode.dGeomSetBody(_geomID, NULL) ode.dSpaceRemove((<soy.scenes.Scene> self._scene)._spaceID, _geomID) (<soy.scenes.Scene> self._scene)._stepUnLock() + py.Py_DECREF(<soy.scenes.Scene> self._scene) else : self._copyTo(_store) py.PyMem_Free(self._position) - self._scene = _newscene + py.Py_INCREF(_newscene) + self._scene = <void*> _newscene (<soy.scenes.Scene> self._scene)._stepLock() self._create() if _geomID != NULL : @@ -146,7 +150,7 @@ # def __del__(self) : cdef ode.dReal* _store - if not self._scene : + if self._scene == NULL : return _store = <ode.dReal*> py.PyMem_Malloc(sizeof(float) * 25) (<soy.scenes.Scene> self._scene)._stepLock() Modified: trunk/pysoy/src/bodies._bodies/Camera.pxi =================================================================== --- trunk/pysoy/src/bodies._bodies/Camera.pxi 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/src/bodies._bodies/Camera.pxi 2008-03-08 06:36:03 UTC (rev 1098) @@ -149,7 +149,9 @@ _mtx[15] = 1.0 gl.glLoadMatrixf(_mtx) gl.glTranslatef(-self._position[0], -self._position[1], -self._position[2]) + stdio.printf('Test1\n') (<soy.scenes.Scene> self._scene)._render() + stdio.printf('Test2\n') # # Framerate calc self._rpt = (self._rpt + 1) % 16 Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd =================================================================== --- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2008-03-08 06:36:03 UTC (rev 1098) @@ -22,7 +22,7 @@ cdef class Body : cdef ode.dBodyID _bodyID - cdef object _scene + cdef void* _scene cdef void* _model cdef void* _shape cdef soy._datatypes.HashTable _tags Modified: trunk/pysoy/src/models/Liquid.pxi =================================================================== --- trunk/pysoy/src/models/Liquid.pxi 2008-03-08 06:02:26 UTC (rev 1097) +++ trunk/pysoy/src/models/Liquid.pxi 2008-03-08 06:36:03 UTC (rev 1098) @@ -100,7 +100,6 @@ gl.glEnable(gl.GL_DEPTH_TEST) # #RENDER BODIES - _scene = ( <soy.bodies._bodies.Body> _body)._scene gl.glEnable(gl.GL_FOG) gl.glEnableClientState(gl.GL_FOG_COORDINATE_ARRAY_EXT) gl.glFogi(gl.GL_FOG_MODE, gl.GL_LINEAR) @@ -113,6 +112,7 @@ gl.glTranslatef(-pos[0],-pos[1], -pos[2]) # # We need not _iterStart here since _bodies is already iterating via Scene + _scene = <soy.scenes.Scene> (<soy.bodies._bodies.Body> _body)._scene for _i from 0 <= _i < _scene._bodies._current : if _body != (<void*> _scene._bodies._list[_i]) : (<soy.bodies._bodies.Body> _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn