diff options
Diffstat (limited to 'src/libjin/graphics/je_sprite_sheet.cpp')
-rw-r--r-- | src/libjin/graphics/je_sprite_sheet.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/libjin/graphics/je_sprite_sheet.cpp b/src/libjin/graphics/je_sprite_sheet.cpp index 73d3e81..6129da7 100644 --- a/src/libjin/graphics/je_sprite_sheet.cpp +++ b/src/libjin/graphics/je_sprite_sheet.cpp @@ -18,7 +18,7 @@ namespace JinEngine { } - Sprite* SpriteSheet::createSprite(const Math::Quad& quad, Sprite::Origin origin) + Sprite* SpriteSheet::createSprite(const Math::Quad& quad, Origin origin) { Sprite* spr = new Sprite(mGraphic, quad, origin); return spr; @@ -30,41 +30,49 @@ namespace JinEngine return spr; } - std::vector<Sprite*> SpriteSheet::createSprites(uint row, uint colum, uint w, uint h, Sprite::Origin origin) + std::vector<Sprite*> SpriteSheet::createSprites(uint count, uint row, uint colum, uint w, uint h, Origin origin, uint offx, uint offy) { vector<Sprite*> sprites; + int i = 0; for (int r = 0; r < row; ++r) { for (int c = 0; c < colum; ++c) { Quad quad; - quad.x = (r * colum + c) * w; - quad.y = r * h; + quad.x = (r * colum + c) * w + offx; + quad.y = r * h + offy; quad.w = w; quad.h = h; Sprite* spr = new Sprite(mGraphic, quad, origin); sprites.push_back(spr); + if ((++i) == count) + goto done; } } + done: return sprites; } - vector<Sprite*> SpriteSheet::createSprites(uint row, uint colum, uint w, uint h, float ox, float oy) + vector<Sprite*> SpriteSheet::createSprites(uint count, uint row, uint colum, uint w, uint h, float ox, float oy, uint offx, uint offy) { vector<Sprite*> sprites; + int i = 0; for (int r = 0; r < row; ++r) { for (int c = 0; c < colum; ++c) { Quad quad; - quad.x = (r * colum + c) * w; - quad.y = r * h; + quad.x = (r * colum + c) * w + offx; + quad.y = r * h + offy; quad.w = w; quad.h = h; Sprite* spr = new Sprite(mGraphic, quad, ox, oy); sprites.push_back(spr); + if ((++i) == count) + goto done; } } + done: return sprites; } |