Author: ArcRiley Date: 2008-03-04 18:08:38 -0500 (Tue, 04 Mar 2008) New Revision: 1036
Modified: trunk/pysoy/src/scenes/Scene.pxi Log: Ticket #901 : * changed soy.scenes.Scene to new Children iteration system * soy.scenes should be clean Modified: trunk/pysoy/src/scenes/Scene.pxi =================================================================== --- trunk/pysoy/src/scenes/Scene.pxi 2008-03-04 23:00:30 UTC (rev 1035) +++ trunk/pysoy/src/scenes/Scene.pxi 2008-03-04 23:08:38 UTC (rev 1036) @@ -75,8 +75,8 @@ self._updateTime() self._callFields._empty() self._giveFields._empty() - self._bodies.lock() # + self._bodies._iterStart() for _i from 0 <= _i < self._bodies.current : if isinstance(<soy.bodies._bodies.Body> self._bodies.list[_i], soy.bodies.fields.Field) : @@ -95,6 +95,7 @@ # # Apply any outstanding fields self._callFields._foreach(_runField, NULL) + self._bodies._iterDone() # _step = self._steps() if _step > _maxstep : @@ -111,7 +112,6 @@ if _i != 0 : self._callFields._foreach(_runField, NULL) self._stepUnLock() - self._bodies.unlock() return 1 cdef void _coreRender(self) : @@ -123,20 +123,24 @@ gl.glEnable(gl.GL_LIGHTING) (<soy.colors.Color> self._ambient)._getRGBA(_ambientLight) gl.glLightModelfv(gl.GL_LIGHT_MODEL_AMBIENT, _ambientLight) - self._lights.lock() + # + # Turn on each light, keep it's iteration locked against mod until done + self._lights._iterStart() for i from 0 <= i < self._lights.current : # This is a quick hack (gl.GL_LIGHT0+i) (<soy.bodies.lights.Light> self._lights.list[i])._on(gl.GL_LIGHT0+i) - self._lights.unlock() - self._bodies.lock() + # + # Iterate over bodies + self._bodies._iterStart() for i from 0 <= i < self._bodies.current : (<soy.bodies._bodies.Body> self._bodies.list[i])._coreRender() - self._bodies.unlock() - self._lights.lock() + self._bodies._iterDone() + # + # Turn off all lights and finish iteration loop for i from 0 <= i < self._lights.current : # This is a quick hack (gl.GL_LIGHT0+i) (<soy.bodies.lights.Light> self._lights.list[i])._off(gl.GL_LIGHT0+i) - self._lights.unlock() + self._lights._iterDone() gl.glDisable(gl.GL_LIGHTING) gl.glDisable(gl.GL_DEPTH_TEST) @@ -280,10 +284,9 @@ def __get__(self) : return self._stepSize def __set__(self, value) : - global _scenes - _scenes.lock() + self._stepLock() self._stepSize = value - _scenes.unlock() + self._stepUnLock() property ambient : _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn