BGE state system improvement: the sensor with Level option enabled will trigger the...
authorBenoit Bolsee <benoit.bolsee@online.be>
Sat, 23 Aug 2008 11:54:27 +0000 (11:54 +0000)
committerBenoit Bolsee <benoit.bolsee@online.be>
Sat, 23 Aug 2008 11:54:27 +0000 (11:54 +0000)
commitbc8f002a4c68235db766fbd72bc383feb7836341
treec56be248aa873c07af07f85061e4aa4f3bf8a3f4
parent2076703a286a61b175441a0413f348b0596e1964
BGE state system improvement: the sensor with Level option enabled will trigger the controller of a newly activated state, even if the sensor is already connected to an active state; new isTriggered() python function to determine which sensor triggered the current controller.

Previously, this behaviour was available only for sensors
that were not connected to any active state, which was
forcing the game designer to duplicate sensors in some
cases.
For example the Always sensors used to initialize the
states needed to be duplicated for each state. With this
patch, a single Always sensor with Level option enabled
will suffice to initialize all the states.
A Python controller can determine which sensor did trigger
with the new SCA_ISensor::isTriggered() function.

Notes:
- When a sensor with level option enabled is connected
  to multiple controllers, only those of newly activated
  states will be triggered. The controllers of already
  activated states will receive no trigger, unless the
  sensor internal state toggled, in which case all the
  controllers are triggered as always.
- The old isPositive() function returns the internal
  state of the sensor, positive or negative; the new
  isTriggered() function returns 1 only for sensors
  that generated an event in the current frame.
source/gameengine/GameLogic/SCA_IController.cpp
source/gameengine/GameLogic/SCA_ISensor.cpp
source/gameengine/GameLogic/SCA_ISensor.h
source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
source/gameengine/GameLogic/SCA_LogicManager.cpp
source/gameengine/GameLogic/SCA_LogicManager.h
source/gameengine/GameLogic/SCA_PythonController.cpp
source/gameengine/GameLogic/SCA_PythonController.h
source/gameengine/PyDoc/SCA_ISensor.py