#ifndef SPRITE_H #define SPRITE_H #include namespace Engine { class Sprite { public: Sprite() { mScale = 1.; mWidth = 0; mHeight = 0; mGlTextureName = 0; mAnimation = false; mSubSpriteCount = 1; } bool LoadFromPNG (const char *filename); void DrawAt (float xpos, float ypos, float zpos); void DrawAt2D (float xpos, float ypos); unsigned int GetWidth() { return mWidth; }; unsigned int GetHeight() { return mHeight; }; void SetScale (float scale) { mScale = scale; }; void SetAnimation (int frame_count, float frame_rate) { mAnimation = true; mAnimationFrameCount = frame_count; mAnimationFrameRate = frame_rate; mAnimationTimer = 0.; mWidth = static_cast(ceil (static_cast (mWidth / mAnimationFrameCount))); } void ResetAnimation () { mAnimationTimer = 0.; } void UpdateAnimation (float seconds) { mAnimationTimer += seconds; while (mAnimationTimer >= mAnimationFrameCount / mAnimationFrameRate) { mAnimationTimer -= mAnimationFrameCount / mAnimationFrameRate; } } void SetSubSpriteCount (const unsigned int count) { mSubSpriteCount = count; mWidth = static_cast(ceil (static_cast (mWidth / mSubSpriteCount))); } unsigned int GetSubSpriteCount () const { return mSubSpriteCount; } void DrawSubAt (unsigned int index, float xpos, float ypos, float zpos); private: float mScale; unsigned int mWidth; unsigned int mHeight; unsigned int mGlTextureName; unsigned int mSubSpriteCount; bool mAnimation; int mAnimationFrameCount; float mAnimationTimer; float mAnimationFrameRate; }; } #endif /* SPRITE_H */