summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2015-05-03 11:51:09 +0200
committerMattes D <github@xoft.cz>2015-05-03 11:51:09 +0200
commitd757d75b6c5e1e8e604b544d73e6292a09781b1a (patch)
tree97167cb6cee1137db10569875158dd3e65aa5e73
parentFixed multiple mbedtls inclusion. (diff)
parentPathFinder - Crash fix, chunks in parameters are now references (diff)
downloadcuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar.gz
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar.bz2
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar.lz
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar.xz
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.tar.zst
cuberite-d757d75b6c5e1e8e604b544d73e6292a09781b1a.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. */