From d7575bef1e530eac004c973b0384a12561f0bb8b Mon Sep 17 00:00:00 2001 From: pixel Date: Mon, 20 Oct 2003 16:21:24 +0000 Subject: Commit of the month --- lib/glsprite.cc | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'lib/glsprite.cc') 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; -- cgit v1.2.3