Author: ArcRiley
Date: 2007-07-08 20:24:10 -0400 (Sun, 08 Jul 2007)
New Revision: 438

Modified:
   trunk/pysoy/src/meshes/Mesh.pxi
   trunk/pysoy/src/meshes/soy.meshes.pxd
Log:
more work on ticket #257


Modified: trunk/pysoy/src/meshes/Mesh.pxi
===================================================================
--- trunk/pysoy/src/meshes/Mesh.pxi     2007-07-09 00:23:27 UTC (rev 437)
+++ trunk/pysoy/src/meshes/Mesh.pxi     2007-07-09 00:24:10 UTC (rev 438)
@@ -23,6 +23,7 @@
      This is a collection of triangles which may share verticies.
   '''
   def __new__(self, *args, **keywords) :
+    self._mates = soy._datatypes.MaterialList(self)
     self._faces = soy._datatypes.FaceList(self)
     self._verts = soy._datatypes.VertexList(self)
 
@@ -50,13 +51,13 @@
       return self._verts
 
 
-  property textures :
-    '''Mesh.textures
+  property materials :
+    '''Mesh.materials
 
-    This is a list-like object for manipulating the textures of a Mesh.
+    This is a list-like object for manipulating the materials of a Mesh.
     '''
     def __get__(self) :
-      return soy._datatypes.TextureList(self)
+      return soy._mates
 
 
   # Rendering Pipeline :
@@ -86,59 +87,11 @@
 
   cdef void _render(self) :
     if gl.GLEW_ARB_vertex_buffer_object :
-      self._renderVBO()
+      self._mates._renderBuffer()
     else :
-      self._renderVA()
+      self._mates._renderArray()
 
 
-  cdef void _renderVA(self) :
-    cdef int i
-    self._verts._renderArray()
-    for i from 0 <= i < self._nmate :
-      (<soy.materials.Material> self._mates[i].mat)._bind()
-      self._faces._renderArray(self._mates[i].offset, self._mates[i].length)
-      (<soy.materials.Material> self._mates[i].mat)._unbind()
-
-
-  cdef void _renderVBO(self) :
-    cdef int i
-    if self._faces._arraySize == 0 :
-      return
-    if self._faces._buffer == 0 :
-      self._createVBO()
-    gl.glBindBufferARB  (gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._faces._buffer)
-    self._faces._sendUpdated()
-    self._verts._renderBuffer()
-    for i from 0 <= i < self._nmate :
-      (<soy.materials.Material> self._mates[i].mat)._bind()
-      self._faces._renderBuffer(self._mates[i].offset, self._mates[i].length)
-      (<soy.materials.Material> self._mates[i].mat)._unbind()
-
-
-  cdef void _createVBO(self) :
-    self._faces._createBuffer()
-    self._verts._createBuffer()
-
-
-  cdef void *_alloc(self, int num, int* m, void* store, int size) :
-    if num == 0 :
-      m[0] = 0
-      py.PyMem_Free(store)
-      return NULL
-    if m[0] == 0 :
-      m[0] = num + 15
-      return py.PyMem_Malloc(m[0] * size)
-    if num > m[0] or num+120 < m[0] :
-      m[0] = num + 15
-      return py.PyMem_Realloc(store, m[0] * size)
-    return store
-
-
-  cdef void _allocMates(self, int num) :
-    self._mates = <MatRange *> self._alloc(num, &self._mmate,
-                                       self._mates, sizeof(MatRange))
-
-
 cdef class Pyramid(Mesh) :
   '''This is for testing only'''
   def __new__(self, tex=None, *args, **keywords) :
@@ -152,15 +105,15 @@
                                        diffuse=soy.colors.GoldenRod())
     self.mat2 = soy.materials.Material(color=tex)
 
-    self._mates[0].mat = <void *>self.mat0
-    self._mates[1].mat = <void *>self.mat1
-    self._mates[2].mat = <void *>self.mat2
-    self._mates[0].offset = 0
-    self._mates[0].length = 2
-    self._mates[1].offset = 2
-    self._mates[1].length = 2
-    self._mates[2].offset = 4
-    self._mates[2].length = 2
+    #self._mates[0].mat = <void *>self.mat0
+    #self._mates[1].mat = <void *>self.mat1
+    #self._mates[2].mat = <void *>self.mat2
+    #self._mates[0].offset = 0
+    #self._mates[0].length = 2
+    #self._mates[1].offset = 2
+    #self._mates[1].length = 2
+    #self._mates[2].offset = 4
+    #self._mates[2].length = 2
 
     a = soy.atoms.Vertex(self,position=( 0, 1, 0), texcoord=(0,0,0))
     b = soy.atoms.Vertex(self,position=(-1,-1, 1), texcoord=(0,0,0))

Modified: trunk/pysoy/src/meshes/soy.meshes.pxd
===================================================================
--- trunk/pysoy/src/meshes/soy.meshes.pxd       2007-07-09 00:23:27 UTC (rev 
437)
+++ trunk/pysoy/src/meshes/soy.meshes.pxd       2007-07-09 00:24:10 UTC (rev 
438)
@@ -26,28 +26,11 @@
 cimport soy.textures
 
 
-cdef struct MatRange :
-  void *mat
-  int offset
-  int length
-
-
 cdef class Mesh :
-  cdef soy._datatypes.FaceList    _faces
-  cdef soy._datatypes.VertexList  _verts
-  #
-  # Texture Data
-  cdef unsigned int               _nmate   # number of
-  cdef int                        _mmate   # malloced
-  cdef MatRange                  *_mates   # material ranges
-  #
-  # Mesh Functions
+  cdef soy._datatypes.MaterialList  _mates
+  cdef soy._datatypes.FaceList      _faces
+  cdef soy._datatypes.VertexList    _verts
   cdef void             _render      (self)
-  cdef void             _renderVA    (self)
-  cdef void             _renderVBO   (self)
-  cdef void             _createVBO   (self)
-  cdef void            *_alloc       (self, int, int*, void*, int)
-  cdef void             _allocMates  (self, int)
 
 
 cdef class Pyramid (Mesh) :

_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to