diff options
author | Nate <nate@natedpalm.com> | 2021-04-06 18:16:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-06 18:16:31 +0200 |
commit | 8efe55c62c6737f3a22bbfce867b5a0aa942600f (patch) | |
tree | 00edbb5611196eb0c95eb0ab4e4961071ee1da4d /src/Entities | |
parent | Basic elytra flight (#5124) (diff) | |
download | cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar.gz cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar.bz2 cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar.lz cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar.xz cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.tar.zst cuberite-8efe55c62c6737f3a22bbfce867b5a0aa942600f.zip |
Diffstat (limited to 'src/Entities')
-rw-r--r-- | src/Entities/SplashPotionEntity.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/Entities/SplashPotionEntity.cpp b/src/Entities/SplashPotionEntity.cpp index 35d79e6cd..ce081aed1 100644 --- a/src/Entities/SplashPotionEntity.cpp +++ b/src/Entities/SplashPotionEntity.cpp @@ -57,7 +57,11 @@ void cSplashPotionEntity::OnHitEntity(cEntity & a_EntityHit, Vector3d a_HitPos) void cSplashPotionEntity::Splash(Vector3d a_HitPos) { - m_World->ForEachEntity([=](cEntity & a_Entity) + double XZCalculation = 8.25/2; + double YCalculation = 4.25/2; + cBoundingBox SplashDistanceBox = cBoundingBox(a_HitPos.x - XZCalculation, a_HitPos.x + XZCalculation, a_HitPos.y - YCalculation, a_HitPos.y + YCalculation, a_HitPos.z - XZCalculation, a_HitPos.z + XZCalculation); + + m_World->ForEachEntityInBox(SplashDistanceBox, [=](cEntity & a_Entity) { if (!a_Entity.IsPawn()) { @@ -65,15 +69,8 @@ void cSplashPotionEntity::Splash(Vector3d a_HitPos) return false; } - double SplashDistance = (a_Entity.GetPosition() - a_HitPos).Length(); - if (SplashDistance >= 20) - { - // Too far away - return false; - } - // y = -0.25x + 1, where x is the distance from the player. Approximation for potion splash. - // TODO: better equation + double SplashDistance = (a_Entity.GetPosition() - a_HitPos).Length(); double Reduction = -0.25 * SplashDistance + 1.0; Reduction = std::max(Reduction, 0.0); |