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