Author: ArcRiley
Date: 2007-07-08 07:40:24 -0400 (Sun, 08 Jul 2007)
New Revision: 422

Modified:
   trunk/pysoy/src/_datatypes/FaceList.pxi
   trunk/pysoy/src/_datatypes/VertexList.pxi
   trunk/pysoy/src/_datatypes/soy._datatypes.pxd
   trunk/pysoy/src/_datatypes/soy._datatypes.pyx
   trunk/pysoy/src/atoms/Face.pxi
   trunk/pysoy/src/atoms/Vertex.pxi
   trunk/pysoy/src/atoms/soy.atoms.pxd
   trunk/pysoy/src/bodies._bodies/Mesh.pxi
   trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
Log:
Moning Mesh "Face" stuff to soy._datatypes.FaceList


Modified: trunk/pysoy/src/_datatypes/FaceList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/FaceList.pxi     2007-07-08 09:37:55 UTC (rev 
421)
+++ trunk/pysoy/src/_datatypes/FaceList.pxi     2007-07-08 11:40:24 UTC (rev 
422)
@@ -17,51 +17,101 @@
 #
 # $Id$
 
-cimport soy.atoms
-cimport soy.bodies._bodies
-
 cdef class FaceList :
   '''PySoy FaceList
 
      This is a list-like container class for the faces of a soy.bodies.Mesh
   '''
-  # This class is not intended to be stored or transfered on it's own but
-  # rather as part of it's parent Mesh.  Parent must be in __new__ as
-  # it's parent holds the data this class works on.
-
   def __new__(self, mesh) :
     if not isinstance(mesh, soy.bodies._bodies.Mesh) :
       raise TypeError('argument must be of type soy.bodies.Mesh')
-    self._mesh = mesh
+    self._mesh = <void *> mesh
+    self._children = soy._internals.Children()
 
+
   def __len__(self) :
-    return (<soy.bodies._bodies.Mesh> self._mesh)._nface
+    return self._arraySize
 
+
   def __str__(self) :
     return '<FaceList with %d faces>' % self.__len__()
 
+
   def __repr__(self) :
-    return self.__str__()
+    return '<FaceList with %d faces>' % self.__len__()
 
-  def __getitem__(self, index) :
-    cdef object f
-    f = soy.atoms.Face()
-    (<soy.atoms.Face> f)._addList(mesh, index)
-    return f
 
-  def append(self, item) :
+  def __getitem__(self, _index) :
+    cdef int i, _found
+    cdef soy.atoms.Face _face
+    #
+    # Check to see if there's already a Face instance made, if so return it,
+    # otherwise create a new instance and return that.  We do this to prevent
+    # duplicate Face instances and to prevent having to internally hold an
+    # instance of every face in every mesh - that'd eat way too much memory.
+    #
+    _found = 0
+    self._children.lock()
+    for i from 0 <= i < self._children.current :
+      if (<soy.atoms.Face> self._children.list[i])._index == _index :
+        _face = <soy.atoms.Face> self._children.list[i]
+        _found = 1
+        break
+    self._children.unlock()
+    if not _found :
+      _face = soy.atoms.Face(mesh = <soy.bodies._bodies.Mesh> self._mesh,
+                             index= _index)
+    return _face
+
+  
+  cdef void _renderArray(self, int _offset, int _length) :
+    gl.glDrawElements (gl.GL_TRIANGLES, _length*3,
+                       gl.GL_UNSIGNED_SHORT, self._array + _offset)
+
+
+  cdef void _renderBuffer(self, int _offset, int _length) :
+    gl.glDrawElements (gl.GL_TRIANGLES, _length*3,
+                       gl.GL_UNSIGNED_SHORT, (<Face *> 0) + _offset)
+
+
+  cdef void _createBuffer(self) :
+    self._bufferAlloc = self._arrayAlloc
+    self._updateRange.offset = -1
+    gl.glGenBuffersARB(1, &self._buffer)
+    gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._buffer)
+    gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+                       self._array, gl.GL_STATIC_DRAW_ARB)
+
+
+  cdef void _flagUpdated(self, int _index) :
+    if _index < self._updateRange.offset or self._updateRange.offset == -1 :
+      self._updateRange.offset = _index
+    if _index - self._updateRange.offset > self._updateRange.length :
+      self._updateRange.length = _index - self._updateRange.offset
+
+  cdef void _sendUpdated(self) :
+    if self._updateRange.offset == -1 :
+      return
+    # If in the process of writing, wait until next cycle to send
+    if not self._children.trylock() :
+      return
+    # If the range to be updated is larger than the existing buffer
+    if self._updateRange.offset+self._updateRange.length > self._bufferAlloc :
+      self._bufferAlloc = self._arrayAlloc
+      gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+                         self._array, gl.GL_STATIC_DRAW_ARB)
+    else :
+      gl.glBufferSubDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB,
+                            6 * self._updateRange.offset,
+                            6 * (self._updateRange.length+1),
+                            &self._array[self._updateRange.offset])
+    self._updateRange.offset = -1
+    self._updateRange.length = 0
+    self._children.unlock()
+
+
+  cdef void _allocArray(self, int num) :
     cdef soy.bodies._bodies.Mesh _mesh
-
-    if not isinstance(item, soy.atoms.Face) :
-      raise TypeError('may only add instances of soy.atoms.Face to this list')
-    if (<soy.atoms.Face> item)._index != -1 :
-      raise TypeError('this Face is already part of a Mesh, try .clone()')
     _mesh = <soy.bodies._bodies.Mesh> self._mesh
-    _mesh._cface.lock()
-    _mesh._allocFaces(_mesh._nface + 1)
-    (<soy.atoms.Face> item)._addList(_mesh, _mesh._nface)        
-    (<soy.atoms.Face> item)._setList()
-    self._mesh._flagFaceVBO(self._index)        
-    _mesh._nface = _mesh._nface + 1
-    _mesh._cface.unlock()
-
+    self._array = <Face *> _mesh._alloc(num, &self._arrayAlloc,
+                                        self._array, sizeof(Face))

Modified: trunk/pysoy/src/_datatypes/VertexList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/VertexList.pxi   2007-07-08 09:37:55 UTC (rev 
421)
+++ trunk/pysoy/src/_datatypes/VertexList.pxi   2007-07-08 11:40:24 UTC (rev 
422)
@@ -62,7 +62,7 @@
 
 
   def __getitem__(self, _index) :
-    cdef int i, f
+    cdef int i, _found
     cdef soy.atoms.Vertex _vert
     #
     # Check to see if there's already a Vertex instance made, if so return it,
@@ -70,18 +70,20 @@
     # duplicate Vertex instances and to prevent having to internally hold an
     # instance of every vertex in every mesh - that'd eat way too much memory.
     #
+    _found = 0
     self._children.lock()
     for i from 0 <= i < self._children.current :
       if (<soy.atoms.Vertex> self._children.list[i])._index == _index :
         _vert = <soy.atoms.Vertex> self._children.list[i]
-        f = 1
+        _found = 1
         break
     self._children.unlock()
-    if not f :
+    if not _found :
       _vert = soy.atoms.Vertex(mesh = <soy.bodies._bodies.Mesh> self._mesh, 
                                index= _index)
     return _vert
 
+
   cdef void _renderArray(self) :
     gl.glVertexPointer  (3,  gl.GL_FLOAT, 36, &self._array[0].px)
     gl.glNormalPointer  (    gl.GL_FLOAT, 36, &self._array[0].nx)
@@ -120,7 +122,7 @@
     # If the range to be updated is larger than the existing buffer
     if self._updateRange.offset+self._updateRange.length > self._bufferAlloc :
       self._bufferAlloc = self._arrayAlloc
-      gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+      gl.glBufferDataARB(gl.GL_ARRAY_BUFFER_ARB, 36*self._bufferAlloc,
                          self._array, gl.GL_STATIC_DRAW_ARB)
     else :
       gl.glBufferSubDataARB(gl.GL_ARRAY_BUFFER_ARB,

Modified: trunk/pysoy/src/_datatypes/soy._datatypes.pxd
===================================================================
--- trunk/pysoy/src/_datatypes/soy._datatypes.pxd       2007-07-08 09:37:55 UTC 
(rev 421)
+++ trunk/pysoy/src/_datatypes/soy._datatypes.pxd       2007-07-08 11:40:24 UTC 
(rev 422)
@@ -23,6 +23,13 @@
 cimport stdio
 cimport soy._internals
 
+
+cdef struct Face :
+  unsigned short a
+  unsigned short b
+  unsigned short c
+
+
 cdef struct Vert :
   float px
   float py
@@ -46,7 +53,20 @@
 
 
 cdef class FaceList :
-  cdef object _mesh
+  cdef void                      *_mesh
+  cdef soy._internals.Children    _children     # was cface
+  cdef Face                      *_array        # was faces
+  cdef unsigned int               _arraySize    # was nface   
+  cdef int                        _arrayAlloc   # was mface
+  cdef gl.GLuint                  _buffer       # was bface
+  cdef int                        _bufferAlloc  # was aface
+  cdef Range                      _updateRange  # was uface
+  cdef void                       _allocArray   (self, int)
+  cdef void                       _renderArray  (self, int, int)
+  cdef void                       _renderBuffer (self, int, int)
+  cdef void                       _createBuffer (self)
+  cdef void                       _sendUpdated  (self)
+  cdef void                       _flagUpdated  (self, int)
 
 
 cdef class VertexList :

Modified: trunk/pysoy/src/_datatypes/soy._datatypes.pyx
===================================================================
--- trunk/pysoy/src/_datatypes/soy._datatypes.pyx       2007-07-08 09:37:55 UTC 
(rev 421)
+++ trunk/pysoy/src/_datatypes/soy._datatypes.pyx       2007-07-08 11:40:24 UTC 
(rev 422)
@@ -26,6 +26,9 @@
               'by '+'$Author$'[9:-2]
 __version__ = 'Trunk (r'+'$Rev$'[6:-2]+')'
 
+cimport soy.atoms
+cimport soy.bodies._bodies
+
 include "HashTable.pxi"
 include "FaceList.pxi"
 include "VertexList.pxi"

Modified: trunk/pysoy/src/atoms/Face.pxi
===================================================================
--- trunk/pysoy/src/atoms/Face.pxi      2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/Face.pxi      2007-07-08 11:40:24 UTC (rev 422)
@@ -1,4 +1,4 @@
-# PySoy's Face class
+# PySoy's atoms.Face class
 #
 # Copyright (C) 2007 Team PySoy
 #
@@ -20,95 +20,69 @@
 cdef class Face :
   '''PySoy Face
 
-     An element of FaceList.
+     An element of FaceList with .verts property
   '''
-  def __new__(self, verts=(0,0,0)) :
-    self.verts = verts
-
-
-  def __richcmp__(self, peer, op) :
-    cdef int r
-    if not isinstance(peer, Face) :
-      return False
-    r = 0
-    #
-    # if not part of the same mesh, only return True for op !=
-    if self._index == -1 or (<Face> peer)._index == -1 or \
-       self._mesh != (<Face> peer)._mesh :
-      return (op == 3)
-    #
-    # < or <=
-    if op == 0 or op == 1 :        
-      r = r | self._index < (<Face> peer)._index
-    #
-    # == or !=
-    if op == 2 or op == 3 :
-      r = r | (not op & 1) == (self._index == (<Face> peer)._index)
-    #
-    # > or >=
-    elif op == 4 or op == 5:
-      r = r | self._index > (<Face> peer)._index
-    return r
-
-  def __repr__(self) :
-    if self._index == -1 :
-      return '<Face detached>'
+  def __new__(self, soy.bodies._bodies.Mesh mesh,
+              verts=None,
+              index=-1, *args, **keywords) :
+    self._index = -1
+    self._list = mesh._faces
+    if index >= 0 :
+      # For an instance of an existing vertex
+      if index >= self._list._arraySize :
+        raise ValueError('index out of range')
+      self._list._children.lock()
+      self._list._children.append(<void *>self)
+      self._index = index
+      self._list._children.unlock()
     else :
-      return '<Face attached as #%d>' % self._index
+      # For a brand new face
+      self._list._children.lock()
+      self._list._children.append(<void *>self)
+      self._index = self._list._arraySize
+      self._list._arraySize = self._list._arraySize + 1
+      self._list._allocArray (self._list._arraySize)
+      self._list._flagUpdated(self._index)
+      self._list._children.unlock()
+    if verts :
+      self.verts = verts
 
 
-  cdef void _addList(self, soy.bodies._bodies.Mesh mesh, int index) :
-    self._mesh  = mesh
-    self._index = index
-    self._mesh._cface.append(<void *>self)
-
-
-  cdef void _setList(self) :
-    self._mesh._faces[self._index].a = self._saved_a._index
-    self._mesh._faces[self._index].b = self._saved_b._index
-    self._mesh._faces[self._index].c = self._saved_c._index
-
-
-  cdef void _remList(self) :
-    self._index = -1
-    self._mesh._cface.lock()
-    self._mesh._cface.remove(<void *>self)
-    self._mesh._cface.unlock()
-
-
   def __dealloc__(self) :
-    if self._index > -1 :
-      self._remList()
+    if self._index >= 0 :
+      self._list._children.lock()
+      self._list._children.remove(<void *>self)
+      self._list._children.unlock()
 
 
-  def clone(self) :
-    clone = Face()
-    clone.verts = self.verts
-    return clone
+  def __repr__(self) :
+    return '<Face>'
 
 
   property verts :
     def __get__(self) :
-      if self._index != -1 :
-        return (self._saved.a, 
-                self._saved.b, 
-                self._saved.c)
-      else :
-        return (Vertex(self._mesh, self._mesh._faces[self._index].a),
-                Vertex(self._mesh, self._mesh._faces[self._index].b),
-                Vertex(self._mesh, self._mesh._faces[self._index].c))
+      cdef float a, b, c
+      cdef object t
+      cdef soy._datatypes.VertexList _verts
+      _verts = (<soy.bodies._bodies.Mesh> self._list._mesh)._verts
+      self._list._children.lock()
+      t = (_verts[self._list._array[self._index].a],
+           _verts[self._list._array[self._index].b],
+           _verts[self._list._array[self._index].c])
+      self._list._children.unlock()
+      return t
     def __set__(self, value) :
       cdef int i
-      if type(value)!=tuple and type(value)!=list :
+      if type(value) != tuple and type(value) != list :
         raise TypeError('Must provide a tuple or list')
-      if len(value)!=3 :
+      if len(value) != 3 :
         raise TypeError('Must provide (x,y,z)')
       for i from 0 <= i < 3 :
         if type(value[i]) != Vertex :
-          raise TypeError('All three items must be of type Vertex')
-      self._saved_a = value[0]
-      self._saved_b = value[1]
-      self._saved_c = value[2]
-      if self._index > -1 :
-        self._setList()
-        self._mesh._flagFaceVBO(self._index)
+          raise TypeError('All three elements must be of type Vertex')
+      self._list._children.lock()
+      self._list._array[self._index].a = (<Vertex> value[0])._index
+      self._list._array[self._index].b = (<Vertex> value[1])._index
+      self._list._array[self._index].c = (<Vertex> value[2])._index
+      self._list._flagUpdated(self._index)
+      self._list._children.unlock()

Modified: trunk/pysoy/src/atoms/Vertex.pxi
===================================================================
--- trunk/pysoy/src/atoms/Vertex.pxi    2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/Vertex.pxi    2007-07-08 11:40:24 UTC (rev 422)
@@ -1,4 +1,4 @@
-# PySoy's soy.atoms.Vertex class
+# PySoy's atoms.Vertex class
 #
 # Copyright (C) 2007 Team PySoy
 #
@@ -76,10 +76,14 @@
       self._list._children.unlock()
       return t
     def __set__(self, value) :
+      cdef int i
       if type(value)!=tuple and type(value)!=list :
         raise TypeError('Must provide a tuple or list')
       if len(value)!=3 :
         raise TypeError('Must provide (x,y,z)')
+      for i from 0 <= i < 3 :
+        if type(value[i]) != float and type(value[i]) != int :
+          raise TypeError('All three elements must be of type float')
       self._list._children.lock()
       self._list._array[self._index].px = value[0]
       self._list._array[self._index].py = value[1]

Modified: trunk/pysoy/src/atoms/soy.atoms.pxd
===================================================================
--- trunk/pysoy/src/atoms/soy.atoms.pxd 2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/soy.atoms.pxd 2007-07-08 11:40:24 UTC (rev 422)
@@ -29,14 +29,7 @@
 
 
 cdef class Face :
-  cdef soy.bodies._bodies.Mesh    _mesh
+  cdef soy._datatypes.FaceList    _list
   cdef int                        _index
-  cdef Vertex                     _saved_a
-  cdef Vertex                     _saved_b
-  cdef Vertex                     _saved_c
-  cdef void                      *_saved_m
-  cdef void                       _addList(self,soy.bodies._bodies.Mesh,int)
-  cdef void                       _remList(self)
-  cdef void                       _setList(self)
 
 

Modified: trunk/pysoy/src/bodies._bodies/Mesh.pxi
===================================================================
--- trunk/pysoy/src/bodies._bodies/Mesh.pxi     2007-07-08 09:37:55 UTC (rev 
421)
+++ trunk/pysoy/src/bodies._bodies/Mesh.pxi     2007-07-08 11:40:24 UTC (rev 
422)
@@ -23,13 +23,13 @@
      This is a body which renders a group of triangles called a "mesh".
   '''
   def __new__(self, scene=None, *args, **keywords) :
-    self._cface = soy._internals.Children()
+    self._faces = soy._datatypes.FaceList(self)
     self._verts = soy._datatypes.VertexList(self)
 
 
   def __repr__(self) :
     return '<Mesh with %d verticies, %d faces, and %d materials>' % (
-             len(self._verts), self._nface, self._nmate)
+             len(self._verts), len(self._faces), self._nmate)
 
 
   property faces :
@@ -38,7 +38,7 @@
     This is a list-like object for manipulating the faces of a Mesh.
     '''
     def __get__(self) :
-      return soy._datatypes.FaceList(self)
+      return self._faces
 
 
   property verts :
@@ -122,68 +122,30 @@
     self._verts._renderArray()
     for i from 0 <= i < self._nmate :
       (<soy.materials.Material> self._mates[i].mat)._bind()
-      gl.glDrawElements (gl.GL_TRIANGLES, self._mates[i].length*3, 
-                         gl.GL_UNSIGNED_SHORT, 
-                         self._faces + self._mates[i].offset)
+      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._nface == 0 :
+    if self._faces._arraySize == 0 :
       return
-    if self._bface == 0 :
+    if self._faces._buffer == 0 :
       self._createVBO()
-    gl.glBindBufferARB  (gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._bface)
-    self._sendFaceVBO()
+    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()
-      gl.glDrawElements (gl.GL_TRIANGLES, self._mates[i].length*3, 
-                         gl.GL_UNSIGNED_SHORT, 
-                         (<Face *> 0) + self._mates[i].offset)
+      self._faces._renderBuffer(self._mates[i].offset, self._mates[i].length)
       (<soy.materials.Material> self._mates[i].mat)._unbind()
 
 
   cdef void _createVBO(self) :
-    self._aface = self._mface
-    self._uface.offset = -1
-    gl.glGenBuffersARB(1, &self._bface)
-    gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._bface)
-    gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._aface, 
-                       self._faces, gl.GL_STATIC_DRAW_ARB)
+    self._faces._createBuffer()
     self._verts._createBuffer()
 
 
-  cdef void _flagFaceVBO(self, int index) :
-    if index < self._uface.offset or self._uface.offset == -1 :
-      self._uface.offset = index
-    if index-self._uface.offset > self._uface.length :
-      self._uface.length = index-self._uface.offset
-
-
-  cdef void _sendFaceVBO(self) :
-    if self._uface.offset == -1 :
-      return
-    if self._uface.offset + self._uface.length > self._aface :
-      self._aface = self._mface
-      self._cface.lock() 
-      gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._mface, 
-                         self._faces, gl.GL_STATIC_DRAW_ARB)
-      self._cface.unlock()
-      return
-    # If in the process of writing, wait until next cycle to send
-    if not self._cface.trylock() :
-      return
-    gl.glBufferSubDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 
-                          6*self._uface.offset,
-                          6*(self._uface.length+1),
-                          &self._faces[self._uface.offset])
-    self._uface.offset = -1
-    self._uface.length = 0
-    self._cface.unlock()
-
-
   cdef void *_alloc(self, int num, int* m, void* store, int size) :
     if num == 0 :
       m[0] = 0
@@ -198,11 +160,6 @@
     return store
 
 
-  cdef void _allocFaces(self, int num) :
-    self._faces = <Face *> self._alloc(num, &self._mface, 
-                                       self._faces, sizeof(Face))
-
-
   cdef void _allocMates(self, int num) :
     self._mates = <MatRange *> self._alloc(num, &self._mmate,
                                        self._mates, sizeof(MatRange))
@@ -211,10 +168,9 @@
 cdef class Pyramid(Mesh) :
   '''This is for testing only'''
   def __new__(self, object scene=None, object tex=None, *args, **keywords) :
+    cdef object  a, b, c, d, e
     self._allocMates(3)
-    self._allocFaces(6)
     self._nmate = 3
-    self._nface = 6
     import soy.colors
     self.mat0 = soy.materials.Material(ambient=soy.colors.BlueViolet(),
                                        diffuse=soy.colors.Cyan())
@@ -232,37 +188,19 @@
     self._mates[2].offset = 4
     self._mates[2].length = 2
 
-    self._faces[0].a = 0
-    self._faces[0].b = 1
-    self._faces[0].c = 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))
+    c = soy.atoms.Vertex(self,position=( 1,-1, 1), texcoord=(0,1,0))
+    d = soy.atoms.Vertex(self,position=( 1,-1,-1), texcoord=(1,1,0))
+    e = soy.atoms.Vertex(self,position=(-1,-1,-1), texcoord=(1,0,0)) 
 
-    self._faces[1].a = 0
-    self._faces[1].b = 3
-    self._faces[1].c = 4
+    soy.atoms.Face(self, verts=(a,b,c))
+    soy.atoms.Face(self, verts=(a,d,e))
+    soy.atoms.Face(self, verts=(a,c,d))
+    soy.atoms.Face(self, verts=(a,e,b))
+    soy.atoms.Face(self, verts=(d,c,b))
+    soy.atoms.Face(self, verts=(e,d,b))
 
-    self._faces[2].a = 0
-    self._faces[2].b = 2
-    self._faces[2].c = 3
 
-    self._faces[3].a = 0
-    self._faces[3].b = 4
-    self._faces[3].c = 1
-
-    self._faces[4].a = 3
-    self._faces[4].b = 2
-    self._faces[4].c = 1
-
-    self._faces[5].a = 4
-    self._faces[5].b = 3
-    self._faces[5].c = 1
-
-    soy.atoms.Vertex(self,position=(0,1,0),  normal=(0,1,0),  texcoord=(0,0,0))
-    soy.atoms.Vertex(self,position=(-1,-1,1),normal=(-1,-1,1),texcoord=(0,0,0))
-    soy.atoms.Vertex(self,position=(1,-1,1), normal=(1,-1,1), texcoord=(0,1,0))
-    soy.atoms.Vertex(self,position=(1,-1,-1),normal=(1,-1,-1),texcoord=(1,1,0))
-    
soy.atoms.Vertex(self,position=(-1,-1,-1),normal=(0,-1,0),texcoord=(1,0,0)) 
-
-
   def __dealloc__(self) :
-    self._allocFaces(0)
     self._allocMates(0)

Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
===================================================================
--- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd       2007-07-08 
09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd       2007-07-08 
11:40:24 UTC (rev 422)
@@ -69,17 +69,7 @@
 
 
 cdef class Mesh (Body) :
-  #
-  # Face Data
-  cdef int                        _aface   # Allocated buffer size
-  cdef gl.GLuint                  _bface   # element array Buffer  
-  cdef soy._internals.Children    _cface   # "Face" Children
-  cdef Range                      _uface   # Updated vertex array
-  cdef unsigned int               _nface   # number of current _faces
-  cdef int                        _mface   # malloc size of _faces
-  cdef Face                      *_faces   # indices for each face
-  #
-  # Vertex Data
+  cdef soy._datatypes.FaceList    _faces
   cdef soy._datatypes.VertexList  _verts
   #
   # Texture Data
@@ -92,10 +82,7 @@
   cdef void             _renderVA    (self)
   cdef void             _renderVBO   (self)
   cdef void             _createVBO   (self)
-  cdef void             _flagFaceVBO (self, int)
-  cdef void             _sendFaceVBO (self)
   cdef void            *_alloc       (self, int, int*, void*, int)
-  cdef void             _allocFaces  (self, 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