summaryrefslogtreecommitdiffstats
path: root/src/Entities/Pickup.cpp
diff options
context:
space:
mode:
authorTycho <work.tycho+git@gmail.com>2014-09-05 16:26:30 +0200
committerTycho <work.tycho+git@gmail.com>2014-09-05 16:26:30 +0200
commitaa2495e3867e87ea37729b58b0df3f2ce940dbb6 (patch)
tree9f71b03f914cd7b077f6c13cd2b6ae2f691c5c66 /src/Entities/Pickup.cpp
parentMoved to passing pointers instead of passing by reference. (diff)
parentMerge pull request #1375 from mc-server/EntitiesInBox (diff)
downloadcuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.gz
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.bz2
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.lz
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.xz
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.zst
cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.zip
Diffstat (limited to '')
-rw-r--r--src/Entities/Pickup.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Entities/Pickup.cpp b/src/Entities/Pickup.cpp
index 9f07d2fa0..20d0f2c6e 100644
--- a/src/Entities/Pickup.cpp
+++ b/src/Entities/Pickup.cpp
@@ -150,10 +150,14 @@ void cPickup::Tick(float a_Dt, cChunk & a_Chunk)
}
}
- if (!IsDestroyed() && (m_Item.m_ItemCount < m_Item.GetMaxStackSize())) // Don't combine into an already full pickup
+ // Try to combine the pickup with adjacent same-item pickups:
+ if (!IsDestroyed() && (m_Item.m_ItemCount < m_Item.GetMaxStackSize())) // Don't combine if already full
{
+ // By using a_Chunk's ForEachEntity() instead of cWorld's, pickups don't combine across chunk boundaries.
+ // That is a small price to pay for not having to traverse the entire world for each entity.
+ // The speedup in the tick thread is quite considerable.
cPickupCombiningCallback PickupCombiningCallback(GetPosition(), this);
- m_World->ForEachEntity(PickupCombiningCallback); // Not ForEachEntityInChunk, otherwise pickups don't combine across chunk boundaries
+ a_Chunk.ForEachEntity(PickupCombiningCallback);
if (PickupCombiningCallback.FoundMatchingPickup())
{
m_World->BroadcastEntityMetadata(*this);