summaryrefslogtreecommitdiff
path: root/lib/glsprite.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/glsprite.cc')
-rw-r--r--lib/glsprite.cc26
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/glsprite.cc b/lib/glsprite.cc
index 18df7eb..f60c3a2 100644
--- a/lib/glsprite.cc
+++ b/lib/glsprite.cc
@@ -14,28 +14,38 @@ mogltk::glSprite::glSprite(Uint8 * p, int asx, int asy) : Sprite(p, asx, asy) {
mogltk::glSprite::~glSprite() {
}
-void mogltk::glSprite::draw(int dx, int dy, ColorP c) {
+void mogltk::glSprite::draw(int dx, int dy, ColorP c, float sx, float sy) {
bool was2D;
- was2D = mogltk::engine::glbase_o->is2D();
-
- if (!was2D)
+ if (!(was2D = mogltk::engine::glbase_o->is2D()))
mogltk::engine::glbase_o->Enter2DMode();
c.Bind();
Bind();
glBegin(GL_TRIANGLE_STRIP);
- glTexCoord2i(GetPX() , GetPY() ); glVertex2i(dx , dy );
- glTexCoord2i(GetPX() + GetSX(), GetPY() ); glVertex2i(dx + GetSX(), dy );
- glTexCoord2i(GetPX() , GetPY() + GetSY()); glVertex2i(dx , dy + GetSY());
- glTexCoord2i(GetPX() + GetSX(), GetPY() + GetSY()); glVertex2i(dx + GetSX(), dy + GetSY());
+ glTexCoord2i(GetPX() , GetPY() ); glVertex2i(dx , dy );
+ glTexCoord2i(GetPX() + GetSX(), GetPY() ); glVertex2i(dx + GetSX() * sx, dy );
+ glTexCoord2i(GetPX() , GetPY() + GetSY()); glVertex2i(dx , dy + GetSY() * sy);
+ glTexCoord2i(GetPX() + GetSX(), GetPY() + GetSY()); glVertex2i(dx + GetSX() * sx, dy + GetSY() * sy);
glEnd();
if (!was2D)
mogltk::engine::glbase_o->Leave2DMode();
}
+void mogltk::glSprite::bindcorner(float fx, float fy) {
+ if (fx > 1)
+ fx = 1;
+ if (fy > 1)
+ fy = 1;
+ if (fx < 0)
+ fx = 0;
+ if (fy < 0)
+ fy = 0;
+ glTexCoord2i(GetPX() + fx * GetSX(), GetPY() + fy * GetSY());
+}
+
void mogltk::glSprite::drawrotate(int cx, int cy, double a, ColorP c) {
bool was2D;