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

Reply via email to