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();
{
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();
}
}
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;
index = Tilemap::Index(value);
}
}
+ if ((it = rootObj.find("u_scale")) != rootObj.end())
+ {
+ (*it).second->get(uScale);
+ }
}
image.getTileCoords(index, texCoords);
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();
}
private:
Tilemap::Index index;
Scalar texCoords[8];
+ long uScale;
};