]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Scene.cc
fixed up video and texture handling
[chaz/yoink] / src / Moof / Scene.cc
index f4dd1c0e3f9597bdd7505ed236bd3d91591fc40c..5f4a440c4ce0d06655afe62ed06de1b9b1d456db 100644 (file)
@@ -123,7 +123,7 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
                        glPushMatrix();
                        //std::cout << "transforming..." << std::endl;
                        //std::cout << transformation << std::endl;
-                       glMultMatrixf(transformation.data());
+                       glMultMatrix(transformation.data());
 
                        glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
                        image.bind();
@@ -143,13 +143,13 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
                                        {
                                                glBegin(GL_TRIANGLE_FAN);
                                                        glTexCoord2f(texCoords[0], texCoords[1]);
-                                                       glVertex3f(xf, yf, 0.0f);
+                                                       glVertex2f(xf, yf);
                                                        glTexCoord2f(texCoords[2], texCoords[3]);
-                                                       glVertex3f(xf+1.0, yf, 0.0f);
+                                                       glVertex2f(xf+1.0, yf);
                                                        glTexCoord2f(texCoords[4], texCoords[5]);
-                                                       glVertex3f(xf+1.0, yf+1.0, 0.0f);
+                                                       glVertex2f(xf+1.0, yf+1.0);
                                                        glTexCoord2f(texCoords[6], texCoords[7]);
-                                                       glVertex3f(xf, yf+1.0, 0.0f);
+                                                       glVertex2f(xf, yf+1.0);
                                                glEnd();
                                        }
                                }
@@ -174,7 +174,8 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
                Billboard(const Matrix4& transform, const std::string& textureName,
                                SerializablePtr root) :
                        Scenery(transform, textureName),
-                       index(0)
+                       index(0),
+                       uScale(1)
                {
                        std::map<std::string,SerializablePtr> rootObj;
 
@@ -190,6 +191,10 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
                                                index = Tilemap::Index(value);
                                        }
                                }
+                               if ((it = rootObj.find("u_scale")) != rootObj.end())
+                               {
+                                       (*it).second->get(uScale);
+                               }
                        }
 
                        image.getTileCoords(index, texCoords);
@@ -198,21 +203,28 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
                void draw(Scalar alpha)
                {
                        glPushMatrix();
-                       glMultMatrixf(transformation.data());
+                       glMultMatrix(transformation.data());
 
                        glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
                        image.bind();
 
+                       float increment = 1.0f / float(uScale);
+                       int x;
+                       float xf;
+
+                       for (x = 0, xf = 0.0f; x < uScale; x++, xf += increment)
+                       {
                        glBegin(GL_TRIANGLE_FAN);
                                glTexCoord2f(texCoords[0], texCoords[1]);
-                               glVertex2f(0.0f, 0.0f);
+                               glVertex2f(xf, 0.0f);
                                glTexCoord2f(texCoords[2], texCoords[3]);
-                               glVertex2f(1.0f, 0.0f);
+                               glVertex2f(xf+increment, 0.0f);
                                glTexCoord2f(texCoords[4], texCoords[5]);
-                               glVertex2f(1.0f, 1.0f);
+                               glVertex2f(xf+increment, 1.0f);
                                glTexCoord2f(texCoords[6], texCoords[7]);
-                               glVertex2f(0.0f, 1.0f);
+                               glVertex2f(xf, 1.0f);
                        glEnd();
+                       }
 
                        glPopMatrix();
                }
@@ -225,6 +237,7 @@ class Scene::SceneImpl : public Mippleton<SceneImpl>
        private:
                Tilemap::Index  index;
                Scalar                  texCoords[8];
+               long                    uScale;
        };
 
 
This page took 0.020875 seconds and 4 git commands to generate.