X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FScene.cc;h=5f4a440c4ce0d06655afe62ed06de1b9b1d456db;hp=f4dd1c0e3f9597bdd7505ed236bd3d91591fc40c;hb=16d1a05b0777e97a45c48e2874aa4e5cc791282e;hpb=15cd32dc28e7fa5997d9850d7e10b889f69a7cae diff --git a/src/Moof/Scene.cc b/src/Moof/Scene.cc index f4dd1c0..5f4a440 100644 --- a/src/Moof/Scene.cc +++ b/src/Moof/Scene.cc @@ -123,7 +123,7 @@ class Scene::SceneImpl : public Mippleton 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 { 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 Billboard(const Matrix4& transform, const std::string& textureName, SerializablePtr root) : Scenery(transform, textureName), - index(0) + index(0), + uScale(1) { std::map rootObj; @@ -190,6 +191,10 @@ class Scene::SceneImpl : public Mippleton 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 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 private: Tilemap::Index index; Scalar texCoords[8]; + long uScale; };