From 9dea7cbaf96d82ee7c85146f971ceb0aba00485f Mon Sep 17 00:00:00 2001 From: Major Cooke Date: Sun, 8 May 2022 00:03:05 -0500 Subject: [PATCH] Added QF_3D flag for quakes. When used, the quake thinker will perform a 3D distance check instead of 2D. --- src/playsim/a_sharedglobal.h | 1 + src/playsim/mapthinkers/a_quake.cpp | 6 +++++- wadsrc/static/zscript/constants.zs | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/playsim/a_sharedglobal.h b/src/playsim/a_sharedglobal.h index 349c4c670..d9497bc73 100644 --- a/src/playsim/a_sharedglobal.h +++ b/src/playsim/a_sharedglobal.h @@ -112,6 +112,7 @@ enum QF_MAX = 1 << 3, QF_FULLINTENSITY = 1 << 4, QF_WAVE = 1 << 5, + QF_3D = 1 << 6, }; struct FQuakeJiggers diff --git a/src/playsim/mapthinkers/a_quake.cpp b/src/playsim/mapthinkers/a_quake.cpp index 93aff41ec..69e17513d 100644 --- a/src/playsim/mapthinkers/a_quake.cpp +++ b/src/playsim/mapthinkers/a_quake.cpp @@ -297,7 +297,11 @@ int DEarthquake::StaticGetQuakeIntensities(double ticFrac, AActor *victim, FQuak { if (quake->m_Spot != nullptr) { - const double dist = quake->m_Spot->Distance2D(victim, true); + double dist; + + if (quake->m_Flags & QF_3D) dist = quake->m_Spot->Distance3D(victim, true); + else dist = quake->m_Spot->Distance2D(victim, true); + if (dist < quake->m_TremorRadius) { ++count; diff --git a/wadsrc/static/zscript/constants.zs b/wadsrc/static/zscript/constants.zs index eb35065d6..35b202ed3 100644 --- a/wadsrc/static/zscript/constants.zs +++ b/wadsrc/static/zscript/constants.zs @@ -633,6 +633,7 @@ enum EQuakeFlags QF_MAX = 1 << 3, QF_FULLINTENSITY = 1 << 4, QF_WAVE = 1 << 5, + QF_3D = 1 << 6, }; // A_CheckProximity flags