Author: JaroslawTworek
Date: 2008-01-14 00:08:47 +0000 (Mon, 14 Jan 2008)
New Revision: 772

Modified:
   trunk/pysoy/src/meshes/Billboard.pxi
   trunk/pysoy/src/meshes/soy.meshes.pxd
Log:
Implemented Billboard#size property


Modified: trunk/pysoy/src/meshes/Billboard.pxi
===================================================================
--- trunk/pysoy/src/meshes/Billboard.pxi        2008-01-13 23:52:51 UTC (rev 
771)
+++ trunk/pysoy/src/meshes/Billboard.pxi        2008-01-14 00:08:47 UTC (rev 
772)
@@ -22,8 +22,10 @@
     
        This mesh rendering quad always facing the camera
     '''
-    def __cinit__(self, material, *args, **kwargs):
+    def __cinit__(self, material,size=(1,1), *args, **kwargs):
         self._material = material
+        self._size[0] = size[0]
+        self._size[1] = size[1]
     cdef void _render(self, void* _body):
         cdef float mmat[16]
 
@@ -36,23 +38,34 @@
 
         gl.glBegin(gl.GL_QUADS)
 
-        gl.glVertex3f(mmat[0] - mmat[1] ,
-                      mmat[4] - mmat[5],
-                      mmat[8] - mmat[9])
+        gl.glVertex3f( ( mmat[0] * self._size[1] - mmat[1] * self._size[0]) ,
+                       ( mmat[4] * self._size[1] - mmat[5] * self._size[0]),
+                       ( mmat[8] * self._size[1] - mmat[9] * self._size[0]))
 
-        gl.glVertex3f(mmat[0] + mmat[1] ,
-                      mmat[4] + mmat[5],
-                      mmat[8] + mmat[9])
+        gl.glVertex3f( ( mmat[0] * self._size[1] + mmat[1] * self._size[0]) ,
+                       ( mmat[4] * self._size[1] + mmat[5] * self._size[0]),
+                       ( mmat[8] * self._size[1] + mmat[9] * self._size[0]))
 
-        gl.glVertex3f(-mmat[0] + mmat[1] ,
-                      -mmat[4] + mmat[5],
-                      -mmat[8] + mmat[9])
+        gl.glVertex3f( (-mmat[0] * self._size[1] + mmat[1] * self._size[0]) ,
+                       (-mmat[4] * self._size[1] + mmat[5] * self._size[0]),
+                       (-mmat[8] * self._size[1] + mmat[9] * self._size[0]))
 
-        gl.glVertex3f(-mmat[0] - mmat[1] ,
-                      -mmat[4] - mmat[5],
-                      -mmat[8] - mmat[9])
+        gl.glVertex3f( (-mmat[0] * self._size[1] - mmat[1] * self._size[0]) ,
+                       (-mmat[4] * self._size[1] - mmat[5] * self._size[0]),
+                       (-mmat[8] * self._size[1] - mmat[9] * self._size[0]))
         gl.glEnd()
 
         gl.glPopMatrix()
         self._material._unbind()
+    property size:
+        '''Billboard.size
 
+        Specify the size of Billboard in horizontal and vertical direction
+        '''
+        def __get__(self):
+            return (self._size[0], self._size[1])
+        def __set__(self, newsize):
+            self._size[0] = newsize[0]
+            self._size[1] = newsize[1]
+
+

Modified: trunk/pysoy/src/meshes/soy.meshes.pxd
===================================================================
--- trunk/pysoy/src/meshes/soy.meshes.pxd       2008-01-13 23:52:51 UTC (rev 
771)
+++ trunk/pysoy/src/meshes/soy.meshes.pxd       2008-01-14 00:08:47 UTC (rev 
772)
@@ -44,5 +44,6 @@
 
 cdef class Billboard(Mesh):
     cdef soy.materials.Material     _material
+    cdef float                      _size[2]
     cdef void       _render         (self, void* )
 

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

Reply via email to