Author: DavidCzech
Date: 2008-02-27 19:23:05 -0500 (Wed, 27 Feb 2008)
New Revision: 1004

Modified:
   trunk/pysoy/src/scenes/Planar.pxi
   trunk/pysoy/src/scenes/soy.scenes.pxd
Log:
Texture support for Planar

Modified: trunk/pysoy/src/scenes/Planar.pxi
===================================================================
--- trunk/pysoy/src/scenes/Planar.pxi   2008-02-27 23:22:29 UTC (rev 1003)
+++ trunk/pysoy/src/scenes/Planar.pxi   2008-02-28 00:23:05 UTC (rev 1004)
@@ -20,7 +20,7 @@
 DEF GeomBody = 2
 DEF GeomField = 4
 DEF GeomLight = 8
-
+cimport soy.materials
 cdef Vert midpoint(Vert a,Vert b):
   X = 0.5*(a.px+b.px)
   Y = 0.5*(a.py+b.py)
@@ -38,7 +38,7 @@
     This is a scene based on a collision plane of infinite size facing up in 
     the direction of gravity.
   '''
-  def __cinit__(self,offset=0, *args, **kw) :
+  def __cinit__(self,offset=0, material=None, *args, **kw) :
     self._offset = offset
     self._planeID = ode.dCreatePlane(self._spaceID, 0.0, 1.0, 0.0, 
self._offset)
     ode.dGeomSetCategoryBits(self._planeID,GeomScene)
@@ -57,16 +57,28 @@
     self._faces[0].a  =  0
     self._faces[0].b  =  2
     self._faces[0].c  =  1
-
     _a = self._verts[0] 
     _b = self._verts[1]    
     _c = self._verts[2]   
 
+    self._verts[0].tx = _a.px - ode.dFabs(_a.px)
+    self._verts[0].ty = _a.pz - ode.dFabs(_a.pz)
+    self._verts[1].tx = _b.px - ode.dFabs(_b.px)
+    self._verts[1].ty = _b.pz - ode.dFabs(_b.pz)
+    self._verts[2].tx = _c.px - ode.dFabs(_c.px)
+    self._verts[2].ty = _c.pz - ode.dFabs(_c.pz)
+    
     cdef int _i
     for _i from 1 <= _i < 15 :
       _d = midpoint(_a,_b) # We get the midpoints from the Big Triangle and 
create faces from them
       _e = midpoint(_b,_c)
       _f = midpoint(_c,_a)
+      _d.tx = _d.px - ode.dFabs(_d.px)
+      _d.ty = _d.pz - ode.dFabs(_d.pz)
+      _e.tx = _e.px - ode.dFabs(_e.px)
+      _e.ty = _e.pz - ode.dFabs(_e.pz)
+      _f.tx = _f.px - ode.dFabs(_f.px)
+      _f.ty = _f.pz - ode.dFabs(_f.pz)
       self._verts[((_i*3)-2)+2] = _d
       self._verts[((_i*3)-1)+2] = _e
       self._verts[ (_i*3)   +2] = _f
@@ -76,28 +88,41 @@
       _a = _d
       _b = _e
       _c = _f
+    if isinstance(material, soy.materials.Material) :    
+      self._material = material      
+    else:
+      raise TypeError("Thats not a material!")
     
-    
   def __delalloc__(self) :
     ode.dGeomDestroy(self._planeID)
 
   cdef void _coreRender(self) :
     #gl.glDisable(gl.GL_DEPTH_BUFFER)
+    #stdio.printf("Testing\n")
+
+    self._material._coreBind()
+    gl.glEnableClientState( gl.GL_VERTEX_ARRAY )
     gl.glVertexPointer  (3,  gl.GL_FLOAT, 48, &self._verts[0].px)
     gl.glNormalPointer  (    gl.GL_FLOAT, 48, &self._verts[0].nx)
     gl.glTexCoordPointer(3,  gl.GL_FLOAT, 48, &self._verts[0].tx)
+    #if (<soy.textures.Texture> self._texture)._chans & 1:
+    #    gl.glDisable(gl.GL_BLEND)
+    #else:
+    #    gl.glEnable(gl.GL_BLEND)
+    #    gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
     #cdef gl.GLfloat  mtx[16]
     #self._coreGetModelview(mtx)
     #gl.glPushMatrix()
     #gl.glMultMatrixf(mtx)
     #(<soy.meshes.Mesh> self._mesh)._coreRender(<void *> self)#Faces go here?
     #
-    
     #gl.glTranslatef(0,0,1)
     gl.glDrawElements   (gl.GL_TRIANGLES, 60, gl.GL_UNSIGNED_SHORT, 
                          <unsigned short *> self._faces)
     #gl.glPopMatrix()
+    self._material._coreUnBind()
     Scene._coreRender(self)
+    gl.glDisableClientState( gl.GL_VERTEX_ARRAY )
     #gl.glEnable(gl.GL_DEPTH_BUFFER)
     
   property gravity :

Modified: trunk/pysoy/src/scenes/soy.scenes.pxd
===================================================================
--- trunk/pysoy/src/scenes/soy.scenes.pxd       2008-02-27 23:22:29 UTC (rev 
1003)
+++ trunk/pysoy/src/scenes/soy.scenes.pxd       2008-02-28 00:23:05 UTC (rev 
1004)
@@ -23,6 +23,7 @@
 cimport py
 cimport soy._internals
 cimport soy._datatypes
+cimport soy.materials
 #DEF Geom = 16
 #DEF GeomLight = 32
 #DEF GeomLight = 64
@@ -77,5 +78,6 @@
 cdef class Planar (Scene) :
   cdef ode.dGeomID                _planeID
   cdef int                        _offset
+  cdef soy.materials.Material     _material
   cdef Vert                       _verts[60]
   cdef Face                       _faces[40]

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

Reply via email to