[Scummvm-cvs-logs] SF.net SVN: scummvm:[44918] scummvm/branches/branch-1-0-0/engines/saga/ actor_path.cpp
agent-q at users.sourceforge.net
agent-q at users.sourceforge.net
Sun Oct 11 15:13:21 CEST 2009
Revision: 44918
http://scummvm.svn.sourceforge.net/scummvm/?rev=44918&view=rev
Author: agent-q
Date: 2009-10-11 13:13:21 +0000 (Sun, 11 Oct 2009)
Log Message:
-----------
Committing Max Horn's memory optimisation for ITE's pathfinder.
Modified Paths:
--------------
scummvm/branches/branch-1-0-0/engines/saga/actor_path.cpp
Modified: scummvm/branches/branch-1-0-0/engines/saga/actor_path.cpp
===================================================================
--- scummvm/branches/branch-1-0-0/engines/saga/actor_path.cpp 2009-10-11 13:10:12 UTC (rev 44917)
+++ scummvm/branches/branch-1-0-0/engines/saga/actor_path.cpp 2009-10-11 13:13:21 UTC (rev 44918)
@@ -232,7 +232,7 @@
int directionCount;
int16 compressX = (_vm->getGameId() == GID_ITE) ? 2 : 1;
- Common::Array<PathDirectionData> pathDirectionList;
+ Common::List<PathDirectionData> pathDirectionQueue;
pointCounter = 0;
bestRating = quickDistance(fromPoint, toPoint, compressX);
@@ -240,7 +240,7 @@
for (startDirection = 0; startDirection < 4; startDirection++) {
PathDirectionData tmp = { startDirection, fromPoint.x, fromPoint.y };
- pathDirectionList.push_back(tmp);
+ pathDirectionQueue.push_back(tmp);
}
if (validPathCellPoint(fromPoint)) {
@@ -251,10 +251,12 @@
#endif
}
- for (uint i = 0; i < pathDirectionList.size(); ++i) {
+ while (!pathDirectionQueue.empty()) {
+ PathDirectionData curPathDirection = pathDirectionQueue.front();
+ pathDirectionQueue.pop_front();
for (directionCount = 0; directionCount < 3; directionCount++) {
- samplePathDirection = &pathDirectionLUT[pathDirectionList[i].direction][directionCount];
- nextPoint = Point(pathDirectionList[i].x, pathDirectionList[i].y);
+ samplePathDirection = &pathDirectionLUT[curPathDirection.direction][directionCount];
+ nextPoint = Point(curPathDirection.x, curPathDirection.y);
nextPoint.x += samplePathDirection->x;
nextPoint.y += samplePathDirection->y;
@@ -274,7 +276,7 @@
PathDirectionData tmp = {
samplePathDirection->direction,
nextPoint.x, nextPoint.y };
- pathDirectionList.push_back(tmp);
+ pathDirectionQueue.push_back(tmp);
++pointCounter;
if (nextPoint == toPoint) {
bestPoint = toPoint;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list