summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Chunk.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/Chunk.cpp b/src/Chunk.cpp
index f213dbf69..66c8cf4c3 100644
--- a/src/Chunk.cpp
+++ b/src/Chunk.cpp
@@ -1625,9 +1625,8 @@ void cChunk::SetAreaBiome(int a_MinRelX, int a_MaxRelX, int a_MinRelZ, int a_Max
void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
{
- double PosX = a_Player.GetPosX();
- double PosY = a_Player.GetPosY();
- double PosZ = a_Player.GetPosZ();
+ auto BoundingBox = cBoundingBox(a_Player.GetPosition(), a_Player.GetWidth(), a_Player.GetHeight());
+ BoundingBox.Expand(1, 0.5, 1);
for (auto & Entity : m_Entities)
{
@@ -1635,11 +1634,8 @@ void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
{
continue; // Only pickups and projectiles can be picked up
}
- float DiffX = static_cast<float>(Entity->GetPosX() - PosX);
- float DiffY = static_cast<float>(Entity->GetPosY() - PosY);
- float DiffZ = static_cast<float>(Entity->GetPosZ() - PosZ);
- float SqrDist = DiffX * DiffX + DiffY * DiffY + DiffZ * DiffZ;
- if (SqrDist < 1.5f * 1.5f) // 1.5 block
+
+ if (BoundingBox.IsInside(Entity->GetPosition()))
{
/*
LOG("Pickup %d being collected by player \"%s\", distance %f",
@@ -1656,14 +1652,6 @@ void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
static_cast<cProjectileEntity &>(*Entity).CollectedBy(a_Player);
}
}
- else if (SqrDist < 5 * 5)
- {
- /*
- LOG("Pickup %d close to player \"%s\", but still too far to collect: %f",
- (*itr)->GetUniqueID(), a_Player->GetName().c_str(), SqrDist
- );
- */
- }
}
}