summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwiseoldman95 <softwatt@gmx.com>2015-05-03 08:45:27 +0200
committerwiseoldman95 <softwatt@gmx.com>2015-05-03 09:49:06 +0200
commit599ad97b65139ad450e6f89e39b787c881f76672 (patch)
tree6976cddd3fc8b81fe0853bf3b6da019c5f9b5c24
parentMerge pull request #1925 from SafwatHalaby/PathFinder_Optimze (diff)
downloadcuberite-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
-rw-r--r--src/Mobs/Monster.cpp4
-rw-r--r--src/Mobs/Path.cpp10
-rw-r--r--src/Mobs/Path.h4
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. */