diff options
Diffstat (limited to 'backends/platform/3ds/sprite.cpp')
-rw-r--r-- | backends/platform/3ds/sprite.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/backends/platform/3ds/sprite.cpp b/backends/platform/3ds/sprite.cpp index 1f2c72e2d3..bbccf94fe6 100644 --- a/backends/platform/3ds/sprite.cpp +++ b/backends/platform/3ds/sprite.cpp @@ -42,6 +42,8 @@ Sprite::Sprite() , actualHeight(0) , posX(0) , posY(0) + , offsetX(0) + , offsetY(0) , scaleX(1.f) , scaleY(1.f) { @@ -85,7 +87,6 @@ void Sprite::create(uint16 width, uint16 height, const Graphics::PixelFormat &f) memcpy(vertices, tmp, sizeof(vertex) * 4); } - void Sprite::free() { linearFree(vertices); linearFree(pixels); @@ -138,12 +139,18 @@ void Sprite::setPosition(int x, int y) { } } +void Sprite::setOffset(uint16 x, uint16 y) { + offsetX = x; + offsetY = y; + dirtyMatrix = true; +} + C3D_Mtx* Sprite::getMatrix() { if (dirtyMatrix) { dirtyMatrix = false; Mtx_Identity(&modelview); Mtx_Scale(&modelview, scaleX, scaleY, 1.f); - Mtx_Translate(&modelview, posX, posY, 0, true); + Mtx_Translate(&modelview, posX - offsetX, posY - offsetY, 0, true); } return &modelview; } |