From 4864f63c6cc7ebede66c984328328524fd7093c6 Mon Sep 17 00:00:00 2001 From: Jonas Kulla Date: Wed, 4 Feb 2015 15:17:45 +0100 Subject: [PATCH] Sprite: Fix visibility calculation The previous code assumed the scene origin to always be 0,0. --- src/sprite.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sprite.cpp b/src/sprite.cpp index df2106f..d6bd9ae 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -58,6 +58,7 @@ struct SpritePrivate BlendType blendType; SDL_Rect sceneRect; + Vec2i sceneOrig; /* Would this sprite be visible on * the screen if drawn? */ @@ -183,8 +184,8 @@ struct SpritePrivate } SDL_Rect self; - self.x = trans.getPosition().x - trans.getOrigin().x; - self.y = trans.getPosition().y - trans.getOrigin().y; + self.x = trans.getPosition().x - (trans.getOrigin().x + sceneOrig.x); + self.y = trans.getPosition().y - (trans.getOrigin().y + sceneOrig.y); self.w = bitmap->width(); self.h = bitmap->height(); @@ -583,6 +584,8 @@ void Sprite::onGeometryChange(const Scene::Geometry &geo) p->sceneRect.w = geo.rect.w; p->sceneRect.h = geo.rect.h; + p->sceneOrig.x = geo.xOrigin; + p->sceneOrig.y = geo.yOrigin; } void Sprite::releaseResources()