Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2008-08-05 20:23:33 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2008-08-05 20:23:33 +0400
commit553694b614be5d20d8be77bea93149ae69da39b9 (patch)
treefc366beb7dd9d0227b35caa857f23f24bd588c87 /source/gameengine/Ketsji/KX_TouchEventManager.cpp
parentb277de28958e8113e2b0ec2f595546fa54b81f3b (diff)
BGE fix bug #17430: BGE Collide/Touch Sensor interfearing with other unrelated sensor states. The bug was introduced in the recent logic optimization patch. It only affects collision and touch sensors. The bug is fixed by keeping track of registration count.
Diffstat (limited to 'source/gameengine/Ketsji/KX_TouchEventManager.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_TouchEventManager.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/source/gameengine/Ketsji/KX_TouchEventManager.cpp b/source/gameengine/Ketsji/KX_TouchEventManager.cpp
index 7528fdbbc34..48d4cf59a2b 100644
--- a/source/gameengine/Ketsji/KX_TouchEventManager.cpp
+++ b/source/gameengine/Ketsji/KX_TouchEventManager.cpp
@@ -100,17 +100,17 @@ bool KX_TouchEventManager::newBroadphaseResponse(void *client_data,
void KX_TouchEventManager::RegisterSensor(SCA_ISensor* sensor)
{
KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(sensor);
- m_sensors.insert(touchsensor);
-
- touchsensor->RegisterSumo(this);
+ if (m_sensors.insert(touchsensor).second)
+ // the sensor was effectively inserted, register it
+ touchsensor->RegisterSumo(this);
}
void KX_TouchEventManager::RemoveSensor(SCA_ISensor* sensor)
{
KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(sensor);
- m_sensors.erase(touchsensor);
-
- touchsensor->UnregisterSumo(this);
+ if (m_sensors.erase(touchsensor))
+ // the sensor was effectively removed, unregister it
+ touchsensor->UnregisterSumo(this);
}