diff options
Diffstat (limited to 'engines/sword25/gfx/renderobjectmanager.cpp')
-rw-r--r-- | engines/sword25/gfx/renderobjectmanager.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/engines/sword25/gfx/renderobjectmanager.cpp b/engines/sword25/gfx/renderobjectmanager.cpp index 994d9367ab..bc7dd02636 100644 --- a/engines/sword25/gfx/renderobjectmanager.cpp +++ b/engines/sword25/gfx/renderobjectmanager.cpp @@ -103,17 +103,20 @@ bool RenderObjectManager::render() { _uta->clear(); // Add rectangles of objects which don't exist in this frame any more - for (RenderObjectQueue::iterator it = _prevQueue->begin(); it != _prevQueue->end(); ++it) - if (!_currQueue->exists(*it)) - _uta->addRect((*it)._bbox); - // Add rectangles of objects which are different from the previous frame - for (RenderObjectQueue::iterator it = _currQueue->begin(); it != _currQueue->end(); ++it) - if (!_prevQueue->exists(*it)) - _uta->addRect((*it)._bbox); + for (RenderObjectQueue::iterator it = _prevQueue->begin(); it != _prevQueue->end(); ++it) { + if (!_currQueue->exists(*it)) + _uta->addRect((*it)._bbox); + } + + // Add rectangles of objects which are different from the previous frame + for (RenderObjectQueue::iterator it = _currQueue->begin(); it != _currQueue->end(); ++it) { + if (!_prevQueue->exists(*it)) + _uta->addRect((*it)._bbox); + } RectangleList *updateRects = _uta->getRectangles(); Common::Array<int> updateRectsMinZ; - + updateRectsMinZ.reserve(updateRects->size()); // Calculate the minimum drawing Z value of each update rectangle @@ -144,9 +147,9 @@ bool RenderObjectManager::render() { } delete updateRects; - + SWAP(_currQueue, _prevQueue); - + return true; } @@ -171,7 +174,7 @@ bool RenderObjectManager::persist(OutputPersistenceBlock &writer) { writer.write(_frameStarted); // Referenzen auf die TimedRenderObjects persistieren. - writer.write(_timedRenderObjects.size()); + writer.write((uint32)_timedRenderObjects.size()); RenderObjectList::const_iterator iter = _timedRenderObjects.begin(); while (iter != _timedRenderObjects.end()) { writer.write((*iter)->getHandle()); @@ -200,10 +203,10 @@ bool RenderObjectManager::unpersist(InputPersistenceBlock &reader) { _timedRenderObjects.resize(0); // Referenzen auf die TimedRenderObjects wieder herstellen. - uint timedObjectCount; + uint32 timedObjectCount; reader.read(timedObjectCount); - for (uint i = 0; i < timedObjectCount; ++i) { - uint handle; + for (uint32 i = 0; i < timedObjectCount; ++i) { + uint32 handle; reader.read(handle); _timedRenderObjects.push_back(handle); } |