diff --git a/Source/Entities/MovableObject.cpp b/Source/Entities/MovableObject.cpp index a8190cc418..7bd2a05b5a 100644 --- a/Source/Entities/MovableObject.cpp +++ b/Source/Entities/MovableObject.cpp @@ -763,7 +763,11 @@ bool MovableObject::IsAtRest() { bool MovableObject::OnMOHit(HitData& hd) { if (hd.RootBody[HITOR] != hd.RootBody[HITEE] && (hd.Body[HITOR] == this || hd.Body[HITEE] == this)) { - RunScriptedFunctionInAppropriateScripts("OnCollideWithMO", false, false, {hd.Body[hd.Body[HITOR] == this ? HITEE : HITOR], hd.RootBody[hd.Body[HITOR] == this ? HITEE : HITOR]}); + static const std::string functionName = "OnCollideWithMO"; + auto function = m_FunctionsAndScripts.find(functionName); + if (function != m_FunctionsAndScripts.end() && !function->second.empty()) { + RunScriptedFunctionInAppropriateScripts(functionName, false, false, {hd.Body[hd.Body[HITOR] == this ? HITEE : HITOR], hd.RootBody[hd.Body[HITOR] == this ? HITEE : HITOR]}); + } } return hd.Terminate[hd.RootBody[HITOR] == this ? HITOR : HITEE] = false; } @@ -775,7 +779,11 @@ unsigned char MovableObject::HitWhatTerrMaterial() const { void MovableObject::SetHitWhatTerrMaterial(unsigned char matID) { m_TerrainMatHit = matID; m_LastCollisionSimFrameNumber = g_MovableMan.GetSimUpdateFrameNumber(); - RunScriptedFunctionInAppropriateScripts("OnCollideWithTerrain", false, false, {}, {std::to_string(m_TerrainMatHit)}); + static const std::string functionName = "OnCollideWithTerrain"; + auto function = m_FunctionsAndScripts.find(functionName); + if (function != m_FunctionsAndScripts.end() && !function->second.empty()) { + RunScriptedFunctionInAppropriateScripts(functionName, false, false, {}, {std::to_string(m_TerrainMatHit)}); + } } Vector MovableObject::GetTotalForce() {