diff options
author | wiseoldman95 <softwatt@gmx.com> | 2015-05-03 08:45:27 +0200 |
---|---|---|
committer | wiseoldman95 <softwatt@gmx.com> | 2015-05-03 09:49:06 +0200 |
commit | 599ad97b65139ad450e6f89e39b787c881f76672 (patch) | |
tree | 6976cddd3fc8b81fe0853bf3b6da019c5f9b5c24 /src/Mobs | |
parent | Merge pull request #1925 from SafwatHalaby/PathFinder_Optimze (diff) | |
download | cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar.gz cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar.bz2 cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar.lz cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar.xz cuberite-599ad97b65139ad450e6f89e39b787c881f76672.tar.zst cuberite-599ad97b65139ad450e6f89e39b787c881f76672.zip |
Diffstat (limited to 'src/Mobs')
-rw-r--r-- | src/Mobs/Monster.cpp | 4 | ||||
-rw-r--r-- | src/Mobs/Path.cpp | 10 | ||||
-rw-r--r-- | src/Mobs/Path.h | 4 |
3 files changed, 8 insertions, 10 deletions
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index 9b9bec51e..bce8467ba 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -131,12 +131,12 @@ void cMonster::TickPathFinding(cChunk & a_Chunk) // Can someone explain why are these two NOT THE SAME??? // m_Path = new cPath(GetWorld(), GetPosition(), m_FinalDestination, 30); - m_Path = new cPath(&a_Chunk, Vector3d(floor(position.x), floor(position.y), floor(position.z)), Vector3d(floor(Dest.x), floor(Dest.y), floor(Dest.z)), 20); + m_Path = new cPath(a_Chunk, Vector3d(floor(position.x), floor(position.y), floor(position.z)), Vector3d(floor(Dest.x), floor(Dest.y), floor(Dest.z)), 20); m_IsFollowingPath = false; } - m_PathStatus = m_Path->Step(&a_Chunk); + m_PathStatus = m_Path->Step(a_Chunk); switch (m_PathStatus) { diff --git a/src/Mobs/Path.cpp b/src/Mobs/Path.cpp index 32eff9d2b..f414b4c9e 100644 --- a/src/Mobs/Path.cpp +++ b/src/Mobs/Path.cpp @@ -35,17 +35,16 @@ bool compareHeuristics::operator()(cPathCell * & a_Cell1, cPathCell * & a_Cell2) /* cPath implementation */ cPath::cPath( - cChunk * a_Chunk, + cChunk & a_Chunk, const Vector3d & a_StartingPoint, const Vector3d & a_EndingPoint, int a_MaxSteps, double a_BoundingBoxWidth, double a_BoundingBoxHeight, int a_MaxUp, int a_MaxDown ) { - ASSERT(m_Chunk != nullptr); // TODO: if src not walkable OR dest not walkable, then abort. // Borrow a new "isWalkable" from ProcessIfWalkable, make ProcessIfWalkable also call isWalkable - m_Chunk = a_Chunk; + m_Chunk = &a_Chunk; m_Source = a_StartingPoint.Floor(); m_Destination = a_EndingPoint.Floor(); @@ -80,10 +79,9 @@ cPath::~cPath() -ePathFinderStatus cPath::Step(cChunk * a_Chunk) +ePathFinderStatus cPath::Step(cChunk & a_Chunk) { - m_Chunk = a_Chunk; - ASSERT(m_Chunk != nullptr); + m_Chunk = &a_Chunk; if (m_Status != ePathFinderStatus::CALCULATING) { return m_Status; diff --git a/src/Mobs/Path.h b/src/Mobs/Path.h index 9927d0a34..1bce0ace0 100644 --- a/src/Mobs/Path.h +++ b/src/Mobs/Path.h @@ -52,7 +52,7 @@ public: @param a_EndingPoint "The block where the Zombie's knees want to be". @param a_MaxSteps The maximum steps before giving up. */ cPath( - cChunk * a_Chunk, + cChunk & a_Chunk, const Vector3d & a_StartingPoint, const Vector3d & a_EndingPoint, int a_MaxSteps, double a_BoundingBoxWidth = 1, double a_BoundingBoxHeight = 2, int a_MaxUp = 1, int a_MaxDown = 1 @@ -62,7 +62,7 @@ public: ~cPath(); /** Performs part of the path calculation and returns true if the path computation has finished. */ - ePathFinderStatus Step(cChunk * a_Chunk); + ePathFinderStatus Step(cChunk & a_Chunk); /* Point retrieval functions, inlined for performance. */ /** Returns the next point in the path. */ |