Author: ArcRiley
Date: 2008-03-20 03:38:07 -0400 (Thu, 20 Mar 2008)
New Revision: 1188

Modified:
   trunk/pysoy/src/_datatypes/FaceList.pxi
   trunk/pysoy/src/_datatypes/MaterialList.pxi
   trunk/pysoy/src/_datatypes/VertexList.pxi
   trunk/pysoy/src/atoms/Face.pxi
   trunk/pysoy/src/bodies/Body.pxi
   trunk/pysoy/src/bodies/soy.bodies.pxd
   trunk/pysoy/src/materials/Material.pxi
   trunk/pysoy/src/materials/soy.materials.pxd
Log:
Ticket #936 :
  * improved checking (tabulates _hasBumps now)
  * renamed some _core* and fixed some long lines
  * eliminated redundant _has_bumpmap() function
  * seems to work again - mostly.


Modified: trunk/pysoy/src/_datatypes/FaceList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/FaceList.pxi     2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/_datatypes/FaceList.pxi     2008-03-20 07:38:07 UTC (rev 
1188)
@@ -74,8 +74,9 @@
                        gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset)
 
 
-  cdef void _renderBumpPass (self, int a , int b):
-    pass
+  cdef void _renderBumpPass(self, int _offset, int _length):
+    gl.glDrawElements (gl.GL_TRIANGLES, _length*3,
+                       gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset)
 
 
   cdef void _createBuffer(self) :

Modified: trunk/pysoy/src/_datatypes/MaterialList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-20 07:38:07 UTC (rev 
1188)
@@ -82,6 +82,7 @@
     if self._children._current == 0 :
       return
     _mesh = <soy.models.Mesh> self._mesh
+
     if self._hasBumps :
       _mesh._verts._calculateTSLV(body)
 
@@ -92,17 +93,18 @@
     _mesh._faces._sendUpdated()
     _mesh._verts._renderBumpPass()
 
-    self._children._iterStart()
-    for _i from 0 <= _i < self._children._current :
-      if (<soy.materials.Material>
-          self._children._list[_i])._has_bumpmap() :
-        (<soy.materials.Material> 
-          self._children._list[_i])._coreBindBumpPass()
-        _mesh._faces._render(self._ranges[_i].offset, 
-                                        self._ranges[_i].length)
-        (<soy.materials.Material>
-          self._children._list[_i])._coreUnBindBumpPass()
-    self._children._iterDone()
+    if self._hasBumps :
+      self._children._iterStart()
+      for _i from 0 <= _i < self._children._current :
+        if (<soy.materials.Material>
+            self._children._list[_i])._normal :
+          (<soy.materials.Material> 
+           self._children._list[_i])._coreBindBumpPass()
+          _mesh._faces._render(self._ranges[_i].offset, 
+                               self._ranges[_i].length)
+          (<soy.materials.Material>
+           self._children._list[_i])._coreUnBindBumpPass()
+      self._children._iterDone()
 
     _mesh._verts._render()
     self._children._iterStart()

Modified: trunk/pysoy/src/_datatypes/VertexList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/VertexList.pxi   2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/_datatypes/VertexList.pxi   2008-03-20 07:38:07 UTC (rev 
1188)
@@ -110,12 +110,14 @@
     #
     gl.glNormalPointer  (    gl.GL_FLOAT, sizeof(Vert), <float*> 12)
     gl.glVertexPointer  (3,  gl.GL_FLOAT, sizeof(Vert), <float*>  0)
-    gl.glFogCoordPointerEXT( gl.GL_FLOAT,  0, <float*> (sizeof(Vert) * 
self._bufferAlloc))
+    gl.glFogCoordPointerEXT( gl.GL_FLOAT,  0, <float*>
+                             (sizeof(Vert) * self._bufferAlloc))
     gl.glTexCoordPointer(3,  gl.GL_FLOAT, sizeof(Vert), <float*> 24)
     #
     gl.glClientActiveTexture(gl.GL_TEXTURE1)
     gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY)
-    gl.glTexCoordPointer(3, gl.GL_FLOAT, 0, <float*> ( 
(sizeof(Vert)+sizeof(float)) * self._bufferAlloc))
+    gl.glTexCoordPointer(3, gl.GL_FLOAT, 0, <float*> 
+                         ( (sizeof(Vert)+sizeof(float)) * self._bufferAlloc))
     gl.glClientActiveTexture(gl.GL_TEXTURE0)
 
 
@@ -201,7 +203,7 @@
 
     if _scene._lights._current > 0 :
       _light = <soy.bodies.Light> _scene._lights._list[0]
-      _body._coreGetModelviewInv(_inv_mm)
+      _body._getModelviewInv(_inv_mm)
       #
       # Vector by matrix multiplication by hand
       # This code needs to average the light color and vector

Modified: trunk/pysoy/src/atoms/Face.pxi
===================================================================
--- trunk/pysoy/src/atoms/Face.pxi      2008-03-20 07:35:51 UTC (rev 1187)
+++ trunk/pysoy/src/atoms/Face.pxi      2008-03-20 07:38:07 UTC (rev 1188)
@@ -52,6 +52,8 @@
         self._index = self._list._arraySize
         _mindex = mesh._mates._children._current
         mesh._mates._children._append(<void*> material)
+        if (<soy.materials.Material> material)._normal :
+          mesh._mates._hasBumps = mesh._mates._hasBumps + 1
         py.Py_INCREF(material)
         mesh._mates._allocRanges(mesh._mates._children._current)
         mesh._mates._ranges[_mindex].offset = self._index
@@ -163,6 +165,8 @@
           # If this was the only face using that material, remove it
           for i from _mindex < i < mlist._children._current :
             mlist._ranges[i-1] = mlist._ranges[i]
+          if (<soy.materials.Material> material)._normal :
+            mesh._mates._hasBumps = mesh._mates._hasBumps - 1
           py.Py_DECREF(<object> mlist._children._list[_mindex])
           mlist._children._remove(mlist._children._list[_mindex])
         #else :
@@ -180,6 +184,8 @@
         self._index = self._list._arraySize - 1
         _mindex = mlist._children._current
         mlist._children._append(<void*> material)
+        if (<soy.materials.Material> material)._normal :
+          mesh._mates._hasBumps = mesh._mates._hasBumps + 1
         py.Py_INCREF(material)
         mlist._allocRanges(mlist._children._current)
         mlist._ranges[_mindex].offset = self._index

Modified: trunk/pysoy/src/bodies/Body.pxi
===================================================================
--- trunk/pysoy/src/bodies/Body.pxi     2008-03-20 07:35:51 UTC (rev 1187)
+++ trunk/pysoy/src/bodies/Body.pxi     2008-03-20 07:38:07 UTC (rev 1188)
@@ -458,7 +458,7 @@
     cdef gl.GLfloat _mtx[16]
     if self._model == NULL :
       return
-    self._coreGetModelview(_mtx)
+    self._getModelview(_mtx)
     gl.glPushMatrix()
     gl.glMultMatrixf(_mtx)
     (<soy.models.Model> self._model)._render(<void*> self)
@@ -472,7 +472,7 @@
     _verts = (<soy.models.Model> self._model)._verts
     _verts._uploadFogCoord( <float> self._position[1] )
       
-  cdef void _coreGetModelview(self, float* _mtx):
+  cdef void _getModelview(self, float* _mtx):
     _mtx[0]  = self._rotation[0]
     _mtx[1]  = self._rotation[4]
     _mtx[2]  = self._rotation[8]
@@ -490,7 +490,7 @@
     _mtx[14] = self._position[2]
     _mtx[15] = 1.0
 
-  cdef void _coreGetModelviewInv(self, float* _mtx):
+  cdef void _getModelviewInv(self, float* _mtx):
     _mtx[0]  = self._rotation[0]
     _mtx[4]  = self._rotation[4]
     _mtx[8]  = self._rotation[8]

Modified: trunk/pysoy/src/bodies/soy.bodies.pxd
===================================================================
--- trunk/pysoy/src/bodies/soy.bodies.pxd       2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/bodies/soy.bodies.pxd       2008-03-20 07:38:07 UTC (rev 
1188)
@@ -44,8 +44,8 @@
   # WindowLoop functions
   cdef void                     _render                  ( self )
   cdef void                     _coreCreateVertFogCoords ( self )
-  cdef void                     _coreGetModelview        ( self, float* )
-  cdef void                     _coreGetModelviewInv     ( self, float* )
+  cdef void                     _getModelview            ( self, float* )
+  cdef void                     _getModelviewInv         ( self, float* )
 
 
 cdef class Camera (Body) :

Modified: trunk/pysoy/src/materials/Material.pxi
===================================================================
--- trunk/pysoy/src/materials/Material.pxi      2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/materials/Material.pxi      2008-03-20 07:38:07 UTC (rev 
1188)
@@ -35,7 +35,10 @@
     else :
       self._color = None
 
-    self._normal = normal
+    if normal :
+      self._normal = normal
+    else :
+      self._normal = None
 
     if ambient :
       self._ambient = ambient
@@ -61,7 +64,6 @@
     self._emissive = soy.colors.black
 
 
-
   def __repr__(self) :
     return '<Material>'
 
@@ -88,10 +90,6 @@
         return 1
       return 0
 
-  cdef int _has_bumpmap(self):
-    if self._normal:
-      return 1
-    return 0
 
   cdef void _coreBind(self) :
     cdef gl.GLfloat _ambient[4]
@@ -125,7 +123,7 @@
     if self._color :
       (<soy.textures.Texture> self._color)._enable()
 
-    if self._has_bumpmap():
+    if self._normal :
       gl.glEnable(gl.GL_BLEND)
       gl.glBlendFunc(gl.GL_DST_COLOR, gl.GL_ZERO)
       gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
@@ -138,8 +136,7 @@
   cdef void _coreUnBind(self) :
     if self._color :
       (<soy.textures.Texture> self._color)._disable()
-
-    if self._has_bumpmap():
+    if self._normal :
       gl.glDisable(gl.GL_BLEND)
       gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
       gl.glPolygonOffset(0,0)
@@ -150,7 +147,7 @@
       gl.glEnable(gl.GL_LIGHTING)
 
   cdef void _coreBindBumpPass(self) :
-    if not self._has_bumpmap() :
+    if not self._normal :
       return
     if not _normalisation_cube_map._was_created :
       _normalisation_cube_map._generate(32,32)
@@ -168,7 +165,7 @@
     gl.glActiveTexture(gl.GL_TEXTURE0)
 
   cdef void _coreUnBindBumpPass(self) :
-    if not self._has_bumpmap() :
+    if not self._normal :
       return
     gl.glActiveTexture(gl.GL_TEXTURE0)
     (<soy.textures.Texture> self._normal)._disable()
@@ -282,9 +279,6 @@
     def __get__(self):
       return self._is_transparent()
 
-  property has_bumpmap:
-    def __get__(self):
-      return self._has_bumpmap()
 
   property shadeless:
     def __get__(self):

Modified: trunk/pysoy/src/materials/soy.materials.pxd
===================================================================
--- trunk/pysoy/src/materials/soy.materials.pxd 2008-03-20 07:35:51 UTC (rev 
1187)
+++ trunk/pysoy/src/materials/soy.materials.pxd 2008-03-20 07:38:07 UTC (rev 
1188)
@@ -44,4 +44,3 @@
   cdef void   _coreBindBumpPass(self)
   cdef void   _coreUnBindBumpPass(self)
   cdef int    _is_transparent(self)
-  cdef int    _has_bumpmap(self)

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to