[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26446] trunk/blender/source/gameengine: BGE: patch [#20293] Added python sensor attribute: Status.
Benoit Bolsee
benoit.bolsee at online.be
Sat Jan 30 19:53:33 CET 2010
Revision: 26446
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26446
Author: ben2610
Date: 2010-01-30 19:53:33 +0100 (Sat, 30 Jan 2010)
Log Message:
-----------
BGE: patch [#20293] Added python sensor attribute: Status.
Modified Paths:
--------------
trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h
trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
trunk/blender/source/gameengine/PyDoc/GameTypes.py
Modified: trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp 2010-01-30 18:23:13 UTC (rev 26445)
+++ trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp 2010-01-30 18:53:33 UTC (rev 26446)
@@ -360,6 +360,7 @@
KX_PYATTRIBUTE_BOOL_RW_CHECK("tap",SCA_ISensor,m_tap,pyattr_check_tap),
KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
+ KX_PYATTRIBUTE_RO_FUNCTION("status", SCA_ISensor, pyattr_get_status),
//KX_PYATTRIBUTE_TODO("links"),
//KX_PYATTRIBUTE_TODO("posTicks"),
//KX_PYATTRIBUTE_TODO("negTicks"),
@@ -382,6 +383,28 @@
return PyLong_FromSsize_t(self->GetState());
}
+PyObject* SCA_ISensor::pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ int status = 0;
+ if (self->GetState())
+ {
+ if (self->GetState() == self->GetPrevState())
+ {
+ status = 2;
+ }
+ else
+ {
+ status = 1;
+ }
+ }
+ else if (self->GetState() != self->GetPrevState())
+ {
+ status = 3;
+ }
+ return PyLong_FromSsize_t(status);
+}
+
int SCA_ISensor::pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
Modified: trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h 2010-01-30 18:23:13 UTC (rev 26445)
+++ trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h 2010-01-30 18:53:33 UTC (rev 26446)
@@ -160,6 +160,12 @@
{
return m_state;
}
+
+ /** get the previous state of the sensor: positive or negative */
+ bool GetPrevState()
+ {
+ return m_prev_state;
+ }
/** Resume sensing. */
void Resume();
@@ -178,8 +184,17 @@
static PyObject* pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
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);
+
+ enum SensorStatus {
+ KX_SENSOR_INACTIVE = 0,
+ KX_SENSOR_JUST_ACTIVATED,
+ KX_SENSOR_ACTIVE,
+ KX_SENSOR_JUST_DEACTIVATED
+
+ };
#endif // DISABLE_PYTHON
};
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2010-01-30 18:23:13 UTC (rev 26445)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2010-01-30 18:53:33 UTC (rev 26446)
@@ -1420,7 +1420,13 @@
KX_MACRO_addTypesToDict(d, KX_STATE28, (1<<27));
KX_MACRO_addTypesToDict(d, KX_STATE29, (1<<28));
KX_MACRO_addTypesToDict(d, KX_STATE30, (1<<29));
-
+
+ /* All Sensors */
+ KX_MACRO_addTypesToDict(d, KX_SENSOR_JUST_ACTIVATED, SCA_ISensor::KX_SENSOR_JUST_ACTIVATED);
+ KX_MACRO_addTypesToDict(d, KX_SENSOR_ACTIVE, SCA_ISensor::KX_SENSOR_ACTIVE);
+ KX_MACRO_addTypesToDict(d, KX_SENSOR_JUST_DEACTIVATED, SCA_ISensor::KX_SENSOR_JUST_DEACTIVATED);
+ KX_MACRO_addTypesToDict(d, KX_SENSOR_INACTIVE, SCA_ISensor::KX_SENSOR_INACTIVE);
+
/* Radar Sensor */
KX_MACRO_addTypesToDict(d, KX_RADAR_AXIS_POS_X, KX_RadarSensor::KX_RADAR_AXIS_POS_X);
KX_MACRO_addTypesToDict(d, KX_RADAR_AXIS_POS_Y, KX_RadarSensor::KX_RADAR_AXIS_POS_Y);
Modified: trunk/blender/source/gameengine/PyDoc/GameTypes.py
===================================================================
--- trunk/blender/source/gameengine/PyDoc/GameTypes.py 2010-01-30 18:23:13 UTC (rev 26445)
+++ trunk/blender/source/gameengine/PyDoc/GameTypes.py 2010-01-30 18:53:33 UTC (rev 26446)
@@ -142,6 +142,11 @@
@type triggered: boolean
@ivar positive: True if this sensor brick is in a positive state. (read-only)
@type positive: boolean
+ @ivar status: The status of the sensor. (read-only)
+ KX_SENSOR_INACTIVE, KX_SENSOR_JUST_ACTIVATED,
+ KX_SENSOR_ACTIVE, KX_SENSOR_JUST_DEACTIVATED
+ Note: this convenient attribute combines the values of triggered and positive attributes
+ @type status: int from 0-3.
"""
def reset():
More information about the Bf-blender-cvs
mailing list