more refactoring

actorid
gus 12 years ago
parent 63424ade56
commit 47cc945ef4

@ -59,7 +59,7 @@ bool MWMechanics::AiTravel::execute (const MWWorld::Ptr& actor)
}
}
if(!mPathFinder.mIsPathConstructed ||cellChange)
if(!mPathFinder.isPathConstructed() ||cellChange)
{
cellX = actor.getCell()->mCell->mData.mX;
cellY = actor.getCell()->mCell->mData.mY;
@ -81,7 +81,7 @@ bool MWMechanics::AiTravel::execute (const MWWorld::Ptr& actor)
dest.mY = pos.pos[1];
dest.mZ = pos.pos[2];
mPathFinder.findPath(start,dest,pathgrid,xCell,yCell);
mPathFinder.buildPath(start,dest,pathgrid,xCell,yCell);
}
if(mPathFinder.checkIfNextPointReached(pos.pos[0],pos.pos[1],pos.pos[2]))
{

@ -118,7 +118,7 @@ namespace MWMechanics
return graph;
}
std::list<ESM::Pathgrid::Point> getPath(PointID start,PointID end,PathGridGraph graph){
std::list<ESM::Pathgrid::Point> findPath(PointID start,PointID end,PathGridGraph graph){
std::vector<PointID> p(boost::num_vertices(graph));
std::vector<float> d(boost::num_vertices(graph));
std::list<ESM::Pathgrid::Point> shortest_path;
@ -149,7 +149,7 @@ namespace MWMechanics
mIsPathConstructed = false;
}
std::list<ESM::Pathgrid::Point> PathFinder::findPath(ESM::Pathgrid::Point startPoint,ESM::Pathgrid::Point endPoint,
void PathFinder::buildPath(ESM::Pathgrid::Point startPoint,ESM::Pathgrid::Point endPoint,
const ESM::Pathgrid* pathGrid,float xCell,float yCell)
{
int start = getClosestPoint(pathGrid,startPoint.mX - xCell,startPoint.mY - yCell,startPoint.mZ);
@ -158,13 +158,11 @@ namespace MWMechanics
if(start != -1 && end != -1)
{
PathGridGraph graph = buildGraph(pathGrid,xCell,yCell);
mPath = getPath(start,end,graph);
mPath = findPath(start,end,graph);
}
mPath.push_back(endPoint);
mIsPathConstructed = true;
return mPath;
}
float PathFinder::getZAngleToNext(float x,float y,float z)
@ -198,4 +196,13 @@ namespace MWMechanics
}
return false;
}
std::list<ESM::Pathgrid::Point> PathFinder::getPath()
{
return mPath;
}
bool PathFinder::isPathConstructed()
{
return mIsPathConstructed;
}
}

@ -11,13 +11,16 @@ namespace MWMechanics
public:
PathFinder();
std::list<ESM::Pathgrid::Point> findPath(ESM::Pathgrid::Point startPoint,ESM::Pathgrid::Point endPoint,
void buildPath(ESM::Pathgrid::Point startPoint,ESM::Pathgrid::Point endPoint,
const ESM::Pathgrid* pathGrid,float xCell = 0,float yCell = 0);
bool checkIfNextPointReached(float x,float y,float z);//returns true if the last point of the path has been reached.
float getZAngleToNext(float x,float y,float z);
std::list<ESM::Pathgrid::Point> getPath();
bool isPathConstructed();
private:
std::list<ESM::Pathgrid::Point> mPath;
bool mIsPathConstructed;
};

Loading…
Cancel
Save