Author: ArcRiley Date: 2008-05-18 14:16:40 -0400 (Sun, 18 May 2008) New Revision: 1266
Modified: trunk/pysoy/include/soy.scenes.pxd trunk/pysoy/src/scenes/Scene.pym Log: '''Pyrex 0.9.8.2 work''': * added Scene._fields children to eliminate isinstance calls * cast more methods nogil Modified: trunk/pysoy/include/soy.scenes.pxd =================================================================== --- trunk/pysoy/include/soy.scenes.pxd 2008-05-18 17:14:51 UTC (rev 1265) +++ trunk/pysoy/include/soy.scenes.pxd 2008-05-18 18:16:40 UTC (rev 1266) @@ -53,24 +53,27 @@ cdef ode.dSpaceID _spaceID cdef ode.dJointGroupID _contactGroup cdef soy._internals.Children _bodies + cdef soy._internals.Children _fields cdef soy._internals.Children _joints cdef soy._internals.Children _lights cdef soy._internals.PointerSet _giveFields cdef soy._internals.PointerSet _callFields cdef object _ambient cdef void* _stepMutex - cdef void _stepLock ( self ) - cdef int _stepTryLock ( self ) - cdef void _stepUnLock ( self ) + cdef void _stepLock ( self ) nogil + cdef int _stepTryLock ( self ) nogil + cdef void _stepUnLock ( self ) nogil cdef ode.dReal _stepSize cdef ode.dReal _friction cdef double _prevTime cdef double _time # _coreloop methods cdef void _render ( self ) - cdef int _steps ( self ) - cdef void _updateTime ( self ) - cdef void _callback ( self, ode.dGeomID, ode.dGeomID ) + cdef int _steps ( self ) nogil + cdef void _updateTime ( self ) nogil + cdef void _callback ( self, + ode.dGeomID, + ode.dGeomID ) nogil cdef class Landscape (Scene) : cdef ode.dHeightfieldDataID _heightmapID Modified: trunk/pysoy/src/scenes/Scene.pym =================================================================== --- trunk/pysoy/src/scenes/Scene.pym 2008-05-18 17:14:51 UTC (rev 1265) +++ trunk/pysoy/src/scenes/Scene.pym 2008-05-18 18:16:40 UTC (rev 1266) @@ -40,6 +40,7 @@ self._spaceID = ode.dSimpleSpaceCreate(NULL) self._contactGroup = ode.dJointGroupCreate(0) self._bodies = soy._internals.Children() + self._fields = soy._internals.Children() self._joints = soy._internals.Children() self._lights = soy._internals.Children() self._ambient = gray @@ -88,28 +89,22 @@ self._callFields._empty() self._giveFields._empty() # - self._bodies._iterStart() - for _i from 0 <= _i < self._bodies._current : - # - # isinstance here == BAD, SLOW! - if isinstance(<soy.bodies.Body> self._bodies._list[_i], - soy.fields.Field) : - # Make sure every field is in givefields & _give each one - if not self._giveFields._has_key(<void*> self._bodies._list[_i]) : - (<soy.fields.Field> self._bodies._list[_i])._give(0) - self._giveFields._insert(<void*> self._bodies._list[_i]) + self._fields._iterStart() + for _i from 0 <= _i < self._fields._current : + # Make sure every field is in givefields & _give each one + if not self._giveFields._has_key(<void*> self._fields._list[_i]) : + (<soy.fields.Field> self._fields._list[_i])._give(0) + self._giveFields._insert(<void*> self._fields._list[_i]) # - for _i from 0 <= _i < self._bodies._current : - if isinstance(<soy.bodies.Body> self._bodies._list[_i], - soy.fields.Field) : - # Apply fields; add incompletly applied fields to the list - if not (<soy.fields.Field> self._bodies._list[_i])._apply() : - pass - #self._callFields._insert(self._bodies.list[_i]) + for _i from 0 <= _i < self._fields._current : + # Apply fields; add incompletly applied fields to the list + if not (<soy.fields.Field> self._fields._list[_i])._apply() : + pass + #self._callFields._insert(self._bodies.list[_i]) # # Apply any outstanding fields self._callFields._foreach(_runField, NULL) - self._bodies._iterDone() + self._fields._iterDone() # self._stepLock() _steps = self._steps() @@ -158,11 +153,11 @@ gl.glDisable(gl.GL_DEPTH_TEST) - cdef void _updateTime(self) : + cdef void _updateTime(self) nogil : self._time = _time() - cdef int _steps(self) : + cdef int _steps(self) nogil : cdef int _step cdef double _lapsTime _lapsTime = _time() - self._prevTime @@ -174,17 +169,17 @@ self._prevTime = self._prevTime + (_step * self._stepSize) return _step - cdef void _stepLock(self) : + cdef void _stepLock(self) nogil : py.PyThread_acquire_lock(self._stepMutex,1) - cdef int _stepTryLock(self) : + cdef int _stepTryLock(self) nogil : return py.PyThread_acquire_lock(self._stepMutex,0) - cdef void _stepUnLock(self) : + cdef void _stepUnLock(self) nogil : py.PyThread_release_lock(self._stepMutex) - cdef void _callback(self, ode.dGeomID _geomA, ode.dGeomID _geomB) : + cdef void _callback(self, ode.dGeomID _geomA, ode.dGeomID _geomB) nogil : cdef int _contactGeoms, _f, _i cdef ode.dJointID _joint cdef ode.dContact _contact _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn