diff --git a/source/gameengine/GameLogic/SCA_LogicManager.cpp b/source/gameengine/GameLogic/SCA_LogicManager.cpp index bd1c44fb91e..49f01d643e5 100644 --- a/source/gameengine/GameLogic/SCA_LogicManager.cpp +++ b/source/gameengine/GameLogic/SCA_LogicManager.cpp @@ -174,6 +174,14 @@ void SCA_LogicManager::RemoveSensor(SCA_ISensor* sensor) } } +void SCA_LogicManager::RemoveController(SCA_IController* controller) +{ + std::map::iterator sit; + for (sit = m_sensorcontrollermapje.begin();!(sit==m_sensorcontrollermapje.end());++sit) + { + (*sit).second.remove(controller); + } +} void SCA_LogicManager::RemoveDestroyedActuator(SCA_IActuator* actuator) diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 0fbabe8d6a2..54003284e03 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -754,6 +754,7 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj) { (*itc)->UnlinkAllSensors(); (*itc)->UnlinkAllActuators(); + m_logicmgr->RemoveController(*itc); } SCA_ActuatorList& actuators = newobj->GetActuators();