1
0

Fall particles: check for valid Y

This commit is contained in:
Tiger Wang 2021-04-06 00:06:58 +01:00
parent 4cd49d7eca
commit d6b264bc21

View File

@ -425,15 +425,18 @@ void cPawn::HandleFalling(void)
TakeDamage(dtFalling, nullptr, Damage, static_cast<float>(Damage), 0); TakeDamage(dtFalling, nullptr, Damage, static_cast<float>(Damage), 0);
// Fall particles // Fall particles:
GetWorld()->BroadcastParticleEffect( if (const auto Below = POS_TOINT.addedY(-1); Below.y >= 0)
"blockdust", {
GetPosition(), GetWorld()->BroadcastParticleEffect(
{ 0, 0, 0 }, "blockdust",
(Damage - 1.f) * ((0.3f - 0.1f) / (15.f - 1.f)) + 0.1f, // Map damage (1 - 15) to particle speed (0.1 - 0.3) GetPosition(),
static_cast<int>((Damage - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f), // Map damage (1 - 15) to particle quantity (20 - 50) { 0, 0, 0 },
{ { GetWorld()->GetBlock(POS_TOINT - Vector3i(0, 1, 0)), 0 } } (Damage - 1.f) * ((0.3f - 0.1f) / (15.f - 1.f)) + 0.1f, // Map damage (1 - 15) to particle speed (0.1 - 0.3)
); static_cast<int>((Damage - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f), // Map damage (1 - 15) to particle quantity (20 - 50)
{ { GetWorld()->GetBlock(Below), 0 } }
);
}
} }
m_bTouchGround = true; m_bTouchGround = true;