diff options
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/Converter/KX_ConvertSensors.cpp | 8 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_ISensor.cpp | 34 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_ISensor.h | 8 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_RandomSensor.cpp | 2 |
4 files changed, 38 insertions, 14 deletions
diff --git a/source/gameengine/Converter/KX_ConvertSensors.cpp b/source/gameengine/Converter/KX_ConvertSensors.cpp index 0d706fcd924..b781e4d1cc8 100644 --- a/source/gameengine/Converter/KX_ConvertSensors.cpp +++ b/source/gameengine/Converter/KX_ConvertSensors.cpp @@ -105,7 +105,7 @@ void BL_ConvertSensors(struct Object* blenderobject, bSensor* sens = (bSensor*)blenderobject->sensors.first; bool pos_pulsemode = false; bool neg_pulsemode = false; - int frequency = 0; + int skipped_ticks = 0; bool invert = false; bool level = false; bool tap = false; @@ -120,13 +120,13 @@ void BL_ConvertSensors(struct Object* blenderobject, while (sens) { SCA_ISensor* gamesensor=NULL; - /* All sensors have a pulse toggle, frequency, and invert field. */ + /* All sensors have a pulse toggle, skipped ticks parameter, and invert field. */ /* These are extracted here, and set when the sensor is added to the */ /* list. */ pos_pulsemode = (sens->pulse & SENS_PULSE_REPEAT)!=0; neg_pulsemode = (sens->pulse & SENS_NEG_PULSE_MODE)!=0; - frequency = sens->freq; + skipped_ticks = sens->freq; invert = !(sens->invert == 0); level = !(sens->level == 0); tap = !(sens->tap == 0); @@ -602,7 +602,7 @@ void BL_ConvertSensors(struct Object* blenderobject, /* Conversion succeeded, so we can set the generic props here. */ gamesensor->SetPulseMode(pos_pulsemode, neg_pulsemode, - frequency); + skipped_ticks); gamesensor->SetInvert(invert); gamesensor->SetLevel(level); gamesensor->SetTap(tap); diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp index 1cb17af8325..66dd69f93c4 100644 --- a/source/gameengine/GameLogic/SCA_ISensor.cpp +++ b/source/gameengine/GameLogic/SCA_ISensor.cpp @@ -67,7 +67,7 @@ SCA_ISensor::SCA_ISensor(SCA_IObject* gameobj, m_neg_ticks = 0; m_pos_pulsemode = false; m_neg_pulsemode = false; - m_pulse_frequency = 0; + m_skipped_ticks = 0; m_state = false; m_prev_state = false; @@ -102,11 +102,11 @@ bool SCA_ISensor::IsPositiveTrigger() void SCA_ISensor::SetPulseMode(bool posmode, bool negmode, - int freq) + int skippedticks) { m_pos_pulsemode = posmode; m_neg_pulsemode = negmode; - m_pulse_frequency = freq; + m_skipped_ticks = skippedticks; } void SCA_ISensor::SetInvert(bool inv) @@ -263,7 +263,7 @@ void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr) * not set :( */ if (m_pos_pulsemode) { m_pos_ticks++; - if (m_pos_ticks > m_pulse_frequency) { + if (m_pos_ticks > m_skipped_ticks) { if ( m_state ) { ActivateControllers(logicmgr); @@ -276,7 +276,7 @@ void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr) if (m_neg_pulsemode && !m_tap) { m_neg_ticks++; - if (m_neg_ticks > m_pulse_frequency) { + if (m_neg_ticks > m_skipped_ticks) { if (!m_state ) { ActivateControllers(logicmgr); @@ -367,7 +367,7 @@ PyMethodDef SCA_ISensor::Methods[] = { PyAttributeDef SCA_ISensor::Attributes[] = { KX_PYATTRIBUTE_BOOL_RW("usePosPulseMode",SCA_ISensor,m_pos_pulsemode), KX_PYATTRIBUTE_BOOL_RW("useNegPulseMode",SCA_ISensor,m_neg_pulsemode), - KX_PYATTRIBUTE_INT_RW("frequency",0,100000,true,SCA_ISensor,m_pulse_frequency), + KX_PYATTRIBUTE_INT_RW("skippedTicks",0,100000,true,SCA_ISensor,m_skipped_ticks), KX_PYATTRIBUTE_BOOL_RW("invert",SCA_ISensor,m_invert), KX_PYATTRIBUTE_BOOL_RW_CHECK("level",SCA_ISensor,m_level,pyattr_check_level), KX_PYATTRIBUTE_BOOL_RW_CHECK("tap",SCA_ISensor,m_tap,pyattr_check_tap), @@ -376,6 +376,7 @@ PyAttributeDef SCA_ISensor::Attributes[] = { KX_PYATTRIBUTE_RO_FUNCTION("status", SCA_ISensor, pyattr_get_status), KX_PYATTRIBUTE_RO_FUNCTION("pos_ticks", SCA_ISensor, pyattr_get_posTicks), KX_PYATTRIBUTE_RO_FUNCTION("neg_ticks", SCA_ISensor, pyattr_get_negTicks), + KX_PYATTRIBUTE_RW_FUNCTION("frequency", SCA_ISensor, pyattr_get_frequency, pyattr_set_frequency), { NULL } //Sentinel }; @@ -444,6 +445,27 @@ int SCA_ISensor::pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrde self->m_level = false; return 0; } + +PyObject *SCA_ISensor::pyattr_get_frequency(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + SCA_ISensor *self = static_cast<SCA_ISensor*>(self_v); + ShowDeprecationWarning("SCA_ISensor.frequency", "SCA_ISensor.skippedTicks"); + return PyLong_FromLong(self->m_skipped_ticks); +} + +int SCA_ISensor::pyattr_set_frequency(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) +{ + SCA_ISensor *self = static_cast<SCA_ISensor*>(self_v); + ShowDeprecationWarning("SCA_ISensor.frequency", "SCA_ISensor.skippedTicks"); + if (PyLong_Check(value)) { + self->m_skipped_ticks = PyLong_AsLong(value); + return PY_SET_ATTR_SUCCESS; + } + else { + PyErr_SetString(PyExc_TypeError, "sensor.frequency = int: Sensor, expected an integer"); + return PY_SET_ATTR_FAIL; + } +} #endif // WITH_PYTHON /* eof */ diff --git a/source/gameengine/GameLogic/SCA_ISensor.h b/source/gameengine/GameLogic/SCA_ISensor.h index 7bbba7aaafe..1e82f3ab11f 100644 --- a/source/gameengine/GameLogic/SCA_ISensor.h +++ b/source/gameengine/GameLogic/SCA_ISensor.h @@ -57,8 +57,8 @@ protected: /** Pulse negative pulses? */ bool m_neg_pulsemode; - /** Repeat frequency in pulse mode. */ - int m_pulse_frequency; + /** Number of skipped ticks between two active pulses. */ + int m_skipped_ticks; /** Number of ticks since the last positive pulse. */ int m_pos_ticks; @@ -125,7 +125,7 @@ public: */ void SetPulseMode(bool posmode, bool negmode, - int freq); + int skippedticks); /** Set inversion of pulses on or off. */ void SetInvert(bool inv); @@ -201,6 +201,8 @@ public: static PyObject* pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); static PyObject* pyattr_get_posTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); static PyObject* pyattr_get_negTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static PyObject* pyattr_get_frequency(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_frequency(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); static int pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); static int pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.cpp b/source/gameengine/GameLogic/SCA_RandomSensor.cpp index 4e93556453a..2fe4d18a7fc 100644 --- a/source/gameengine/GameLogic/SCA_RandomSensor.cpp +++ b/source/gameengine/GameLogic/SCA_RandomSensor.cpp @@ -107,7 +107,7 @@ bool SCA_RandomSensor::Evaluate() bool evaluateResult = false; - if (++m_interval > m_pulse_frequency) { + if (++m_interval > m_skipped_ticks) { bool drawResult = false; m_interval = 0; if (m_iteration > 31) { |