Index: source/simulation2/components/CCmpUnitMotion.h =================================================================== --- source/simulation2/components/CCmpUnitMotion.h +++ source/simulation2/components/CCmpUnitMotion.h @@ -519,10 +519,22 @@ void SetPassabilityClassName(const std::string& passClassName) override { + if (!m_FormationController) + { + LOGWARNING("Only formation controllers can change their passability class"); + return; + } m_PassClassName = passClassName; CmpPtr cmpPathfinder(GetSystemEntity()); if (cmpPathfinder) + { m_PassClass = cmpPathfinder->GetPassabilityClass(passClassName); + m_Clearance = cmpPathfinder->GetClearance(m_PassClass); + + CmpPtr cmpObstruction(GetEntityHandle()); + if (cmpObstruction) + cmpObstruction->SetUnitClearance(m_Clearance); + } } fixed GetCurrentSpeed() const override