From 5f7c2a8ee4c4b6e1be921367a61f146d617805a9 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 5 Apr 2013 16:23:09 +0200 Subject: [PATCH] Fixed character removal and getCharacters returning self. --- source/World.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/World.cpp b/source/World.cpp index f0eaf68..b85a378 100755 --- a/source/World.cpp +++ b/source/World.cpp @@ -232,6 +232,8 @@ std::vector > World::getCharacters(const sf::Vector2f& position, float maxDistance) const { std::vector > visible; for (auto it : mCharacters) { + if (position == it->getPosition()) + continue; if (thor::squaredLength(position - it->getPosition()) <= maxDistance * maxDistance) visible.push_back(it); @@ -288,14 +290,18 @@ World::step(int elapsed) { } /** - * Calls Character::onThink for each character. + * Calls Character::onThink for each character. Must be called + * before step (due to character removal). * * @param elapsed Time since last call. */ void World::think(int elapsed) { for (auto it : mCharacters) { - it->onThink(elapsed); + if (it->getDelete()) + removeCharacter(it); + else + it->onThink(elapsed); } }