Author: ArcRiley Date: 2008-03-22 05:44:37 -0400 (Sat, 22 Mar 2008) New Revision: 1203
Modified: trunk/pysoy/src/_datatypes/BodyPosition.pxi trunk/pysoy/src/_datatypes/Datatype.pxi trunk/pysoy/src/_datatypes/FaceList.pxi trunk/pysoy/src/_datatypes/HashTable.pxi trunk/pysoy/src/_datatypes/MaterialList.pxi trunk/pysoy/src/_datatypes/VertexList.pxi Log: Ticket #950 : * various cleanups for _datatypes Modified: trunk/pysoy/src/_datatypes/BodyPosition.pxi =================================================================== --- trunk/pysoy/src/_datatypes/BodyPosition.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/BodyPosition.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -24,6 +24,11 @@ This is a container for the position of bodies. Accepts a body or list (x,y,z) for the only parameter. ''' + + ############################################################################ + # + # Python functions + # def __cinit__(self, parent) : if isinstance(parent, soy.bodies.Body) : @@ -56,9 +61,11 @@ _position[2] + value[2])) return NotImplemented + def __radd__(BodyPosition self, value) : return self+value + def __sub__(BodyPosition self, value) : cdef float* _position # @@ -78,6 +85,7 @@ _position[2] - value[2])) return NotImplemented + def __rsub__(BodyPosition self, value) : cdef float* _position # @@ -97,6 +105,7 @@ value[2] - _position[2])) return NotImplemented + def __div__(BodyPosition self, value) : cdef float* _position # @@ -116,6 +125,7 @@ _position[2] / value[2])) return NotImplemented + def __rdiv__(BodyPosition self, value) : cdef float* _position # @@ -135,6 +145,7 @@ value[2] / _position[2])) return NotImplemented + def __mul__(BodyPosition self, value) : cdef float* _position # @@ -154,9 +165,11 @@ _position[2] * value[2])) return NotImplemented + def __rmul__(BodyPosition self, value) : return self*value + def __mod__(BodyPosition self, value) : cdef float* _position # @@ -176,6 +189,7 @@ _position[2] % value[2])) return NotImplemented + def __rmod__(BodyPosition self, value) : cdef float* _position # @@ -194,6 +208,7 @@ value[1] % _position[1], value[2] % _position[2])) + def __richcmp__(BodyPosition self, that, int _oper) : cdef int _x, _y, _z cdef float* _positionA @@ -246,9 +261,11 @@ def __neg__(BodyPosition self) : return self *-1 + def __pos__(BodyPosition self) : return self + def __getitem__(self, index) : if type(index) != int : raise TypeError('Position index must be an int') @@ -323,6 +340,7 @@ ''' def __get__(self) : return self[0] + def __set__(self, value) : self[0] = value @@ -334,6 +352,7 @@ ''' def __get__(self) : return self[1] + def __set__(self, value) : self[1] = value @@ -345,5 +364,6 @@ ''' def __get__(self) : return self[2] + def __set__(self, value) : self[2] = value Modified: trunk/pysoy/src/_datatypes/Datatype.pxi =================================================================== --- trunk/pysoy/src/_datatypes/Datatype.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/Datatype.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -20,10 +20,16 @@ # The only purpose of this class is to provide functions to other datatypes cdef class Datatype : - '''PySoy Datatype + '''soy._datatypes.Datatype This is not useful to you. It provides C functions to other datatypes. ''' + + ############################################################################ + # + # General C functions + # + cdef void *_alloc(self, int num, int* m, void* store, int size) : if num == 0 : m[0] = 0 Modified: trunk/pysoy/src/_datatypes/FaceList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/FaceList.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/FaceList.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -18,10 +18,16 @@ # $Id$ cdef class FaceList (Datatype) : - '''PySoy FaceList + '''soy._datatypes.FaceList This is a list-like container class for the faces of a soy.bodies.Mesh ''' + + ############################################################################ + # + # Python functions + # + def __cinit__(self, mesh) : if not isinstance(mesh, soy.models.Mesh) : raise TypeError('argument must be of type soy.models.Mesh') @@ -68,26 +74,12 @@ index= _index) return _face - - cdef void _render(self, int _offset, int _length) : - gl.glDrawElements (gl.GL_TRIANGLES, _length*3, - gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset) + ############################################################################ + # + # General C functions + # - 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) : - self._bufferAlloc = self._arrayAlloc - self._updateRange.length = 0 - 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 _offset, int _length) : cdef int _top cdef int _start @@ -107,6 +99,30 @@ self._updateRange.length = _top - _start + ############################################################################ + # + # WindowLoop functions + # + + cdef void _render(self, int _offset, int _length) : + gl.glDrawElements (gl.GL_TRIANGLES, _length*3, + gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset) + + + 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) : + self._bufferAlloc = self._arrayAlloc + self._updateRange.length = 0 + 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 _sendUpdated(self) : gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._buffer) if self._updateRange.length == 0 : @@ -134,5 +150,5 @@ self._array = <Face*> self._alloc(num, &self._arrayAlloc, self._array, sizeof(Face)) self._arrayList = <unsigned int*> self._alloc(num, &self._arrayAlloc, - self._arrayList, 4) + self._arrayList, 4) Modified: trunk/pysoy/src/_datatypes/HashTable.pxi =================================================================== --- trunk/pysoy/src/_datatypes/HashTable.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/HashTable.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -1,4 +1,4 @@ -# PySoy HashTable class +# PySoy's _datatypes.HashTable class # # Copyright (C) 2006,2007,2008 PySoy Group # @@ -18,19 +18,50 @@ # $Id$ cdef class HashTable : - '''GLib GHashTable + '''soy._datatypes.HashTable - wrapped to allow ease of use by other PySoy classes. + This is a glib GHashTable wrapped to allow ease of use by other classes. ''' + + ############################################################################ + # + # Python functions + # + def __cinit__(self) : self._hashtable = glib.g_hash_table_new_full(glib.g_str_hash, glib.g_str_equal, glib.g_free, glib.g_free) + def __dealloc__(self) : glib.g_hash_table_destroy(self._hashtable) + def insert(self, key, data) : self._insert(key, data) + + def lookup(self, key) : + return self._lookup(key) + + + def has_key(self, key) : + if self._has_key(key) : + return True + else : + return False + + + def remove(self, key) : + if self._remove(key) : + return True + else : + return False + + ############################################################################ + # + # General C functions + # + cdef void _insert(self, char* key, float data) : cdef glib.gchar* k cdef glib.gpointer d @@ -39,8 +70,6 @@ k = glib.g_strdup(key) glib.g_hash_table_insert(self._hashtable, k, d) - def lookup(self, key) : - return self._lookup(key) cdef float _lookup(self, char* key) : cdef float* f @@ -49,21 +78,11 @@ raise RuntimeError('No such key') return f[0] - def has_key(self, key) : - if self._has_key(key) : - return True - else : - return False cdef int _has_key(self, char* key) : cdef glib.gpointer k, d return glib.g_hash_table_lookup_extended(self._hashtable, key, &k, &d) + - def remove(self, key) : - if self._remove(key) : - return True - else : - return False - cdef int _remove(self, char* key) : return glib.g_hash_table_remove(self._hashtable, key) Modified: trunk/pysoy/src/_datatypes/MaterialList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -1,4 +1,4 @@ -# PySoy _datatypes.MaterialList class +# PySoy's _datatypes.MaterialList class # # Copyright (C) 2006,2007,2008 PySoy Group # @@ -22,10 +22,16 @@ # it's parent holds the data this class works on. cdef class MaterialList (Datatype) : - '''PySoy MaterialList + '''soy._datatypes.MaterialList This is a list-like container class for materials used by a mesh ''' + + ############################################################################ + # + # Python functions + # + def __cinit__(self, mesh) : if not isinstance(mesh, soy.models.Mesh) : raise TypeError('argument must be of type soy.bodies.Mesh') @@ -76,6 +82,11 @@ return _mat + ############################################################################ + # + # WindowLoop functions + # + cdef void _render(self, void* body) : cdef int _i cdef soy.models.Mesh _mesh Modified: trunk/pysoy/src/_datatypes/VertexList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-22 09:35:19 UTC (rev 1202) +++ trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-22 09:44:37 UTC (rev 1203) @@ -26,6 +26,12 @@ This is a list-like container class for shared vertices. ''' + + ############################################################################ + # + # Python functions + # + def __cinit__(self, mesh) : if not isinstance(mesh, soy.models.Mesh) : raise TypeError('argument must be of type soy.bodies.Mesh') @@ -90,6 +96,23 @@ return _vert + ############################################################################ + # + # General C functions + # + + 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 + + + ############################################################################ + # + # WindowLoop functions + # + cdef void _render(self) : gl.glClientActiveTexture(gl.GL_TEXTURE1) gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY) @@ -130,13 +153,6 @@ 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 @@ -169,21 +185,23 @@ self._tslvArray = <float*> self._alloc(_num, &self._tslvSize, self._tslvArray, 3*sizeof(float)) + cdef void _uploadFogCoord(self, float _yCoord) : cdef int _i #cdef float* fog_coord_array #fog_coord_array = ( <float*> stdlib.malloc(4 * self._bufferAlloc) ) # - for _i from 0 <= _i < self._fogSize: + for _i from 0 <= _i < self._fogSize : self._fogArray[_i] = _yCoord + self._array[_i].py # - if self._bufferAlloc: + if self._bufferAlloc : gl.glBindBufferARB (gl.GL_ARRAY_BUFFER_ARB, self._buffer) gl.glBufferSubDataARB(gl.GL_ARRAY_BUFFER_ARB, sizeof(Vert) * self._bufferAlloc, 4 * self._bufferAlloc, self._fogArray) #stdlib.free( fog_coord_array) + cdef void _calculateTSLV(self, void* __body) : # # Calculate TSLV (Tangent Space Light Vector) _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn