#include #include "glbase.h" #include "glsprite.h" #include "engine.h" #define TEXSIZE 256 mogltk::glSprite::glSprite(Handle * h, int asx, int asy) : Sprite(h, asx, asy) { } 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) { bool was2D; was2D = mogltk::engine::glbase_o->is2D(); if (!was2D) 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()); glEnd(); if (!was2D) mogltk::engine::glbase_o->Leave2DMode(); } void mogltk::glSprite::drawrotate(int cx, int cy, double a, ColorP c) { bool was2D; int sx, sy; sx = GetSX() / 2; sy = GetSY() / 2; was2D = mogltk::engine::glbase_o->is2D(); if (!was2D) mogltk::engine::glbase_o->Enter2DMode(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glRotated(a, 0, 0, 1); glTranslated(cx, cy, 0); glMatrixMode(GL_TEXTURE); glRotated(a, 0, 0, 1); c.Bind(); Bind(); glBegin(GL_TRIANGLE_STRIP); glTexCoord2i(GetPX() , GetPY() ); glVertex2i( - sx, - sy); glTexCoord2i(GetPX() + GetSX(), GetPY() ); glVertex2i(GetSX() - sx, - sy); glTexCoord2i(GetPX() , GetPY() + GetSY()); glVertex2i( - sx, GetSY() - sy); glTexCoord2i(GetPX() + GetSX(), GetPY() + GetSY()); glVertex2i(GetSX() - sx, GetSY() - sy); glEnd(); glPopMatrix(); if (!was2D) mogltk::engine::glbase_o->Leave2DMode(); }