Page MenuHome

active_events.patch

active_events.patch

Index: doc/python_api/rst/bge.types.rst
===================================================================
--- doc/python_api/rst/bge.types.rst (revision 43088)
+++ doc/python_api/rst/bge.types.rst (working copy)
@@ -66,6 +66,12 @@
:type: dictionary {:ref:`keycode<keyboard-keys>`::ref:`status<input-status>`, ...}
+ .. attribute:: active_events
+
+ A dictionary containing the status of only the active keyboard events or keys. (read-only).
+
+ :type: dictionary {:ref:`keycode<keyboard-keys>`::ref:`status<input-status>`, ...}
+
.. class:: SCA_PythonMouse(PyObjectPlus)
The current mouse.
@@ -75,6 +81,12 @@
a dictionary containing the status of each mouse event. (read-only).
:type: dictionary {:ref:`keycode<mouse-keys>`::ref:`status<input-status>`, ...}
+
+ .. attribute:: active_events
+
+ a dictionary containing the status of only the active mouse events. (read-only).
+
+ :type: dictionary {:ref:`keycode<mouse-keys>`::ref:`status<input-status>`, ...}
.. attribute:: position
Index: source/gameengine/GameLogic/SCA_PythonKeyboard.cpp
===================================================================
--- source/gameengine/GameLogic/SCA_PythonKeyboard.cpp (revision 43088)
+++ source/gameengine/GameLogic/SCA_PythonKeyboard.cpp (working copy)
@@ -84,6 +84,7 @@
PyAttributeDef SCA_PythonKeyboard::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("events", SCA_PythonKeyboard, pyattr_get_events),
+ KX_PYATTRIBUTE_RO_FUNCTION("active_events", SCA_PythonKeyboard, pyattr_get_active_events),
{ NULL } //Sentinel
};
@@ -101,4 +102,21 @@
return self->m_event_dict;
}
+PyObject* SCA_PythonKeyboard::pyattr_get_active_events(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_PythonKeyboard* self = static_cast<SCA_PythonKeyboard*>(self_v);
+
+ PyDict_Clear(self->m_event_dict);
+
+ for (int i=SCA_IInputDevice::KX_BEGINKEY; i<=SCA_IInputDevice::KX_ENDKEY; i++)
+ {
+ const SCA_InputEvent & inevent = self->m_keyboard->GetEventValue((SCA_IInputDevice::KX_EnumInputs)i);
+
+ if (inevent.m_status != SCA_InputEvent::KX_NO_INPUTSTATUS)
+ PyDict_SetItem(self->m_event_dict, PyLong_FromSsize_t(i), PyLong_FromSsize_t(inevent.m_status));
+ }
+ Py_INCREF(self->m_event_dict);
+ return self->m_event_dict;
+}
+
#endif
Index: source/gameengine/GameLogic/SCA_PythonKeyboard.h
===================================================================
--- source/gameengine/GameLogic/SCA_PythonKeyboard.h (revision 43088)
+++ source/gameengine/GameLogic/SCA_PythonKeyboard.h (working copy)
@@ -43,6 +43,7 @@
#ifdef WITH_PYTHON
static PyObject* pyattr_get_events(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_active_events(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
#endif
};
Index: source/gameengine/GameLogic/SCA_PythonMouse.cpp
===================================================================
--- source/gameengine/GameLogic/SCA_PythonMouse.cpp (revision 43088)
+++ source/gameengine/GameLogic/SCA_PythonMouse.cpp (working copy)
@@ -86,6 +86,7 @@
PyAttributeDef SCA_PythonMouse::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("events", SCA_PythonMouse, pyattr_get_events),
+ KX_PYATTRIBUTE_RO_FUNCTION("active_events", SCA_PythonMouse, pyattr_get_active_events),
KX_PYATTRIBUTE_RW_FUNCTION("position", SCA_PythonMouse, pyattr_get_position, pyattr_set_position),
KX_PYATTRIBUTE_RW_FUNCTION("visible", SCA_PythonMouse, pyattr_get_visible, pyattr_set_visible),
{ NULL } //Sentinel
@@ -105,7 +106,23 @@
return self->m_event_dict;
}
+PyObject* SCA_PythonMouse::pyattr_get_active_events(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_PythonMouse* self = static_cast<SCA_PythonMouse*>(self_v);
+ PyDict_Clear(self->m_event_dict);
+
+ for (int i=SCA_IInputDevice::KX_BEGINMOUSE; i<=SCA_IInputDevice::KX_ENDMOUSE; i++)
+ {
+ const SCA_InputEvent & inevent = self->m_mouse->GetEventValue((SCA_IInputDevice::KX_EnumInputs)i);
+
+ if (inevent.m_status != SCA_InputEvent::KX_NO_INPUTSTATUS)
+ PyDict_SetItem(self->m_event_dict, PyLong_FromSsize_t(i), PyLong_FromSsize_t(inevent.m_status));
+ }
+ Py_INCREF(self->m_event_dict);
+ return self->m_event_dict;
+}
+
PyObject* SCA_PythonMouse::pyattr_get_position(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_PythonMouse* self = static_cast<SCA_PythonMouse*>(self_v);
Index: source/gameengine/GameLogic/SCA_PythonMouse.h
===================================================================
--- source/gameengine/GameLogic/SCA_PythonMouse.h (revision 43088)
+++ source/gameengine/GameLogic/SCA_PythonMouse.h (working copy)
@@ -48,6 +48,7 @@
KX_PYMETHOD_DOC(SCA_PythonMouse, show);
static PyObject* pyattr_get_events(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_active_events(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_position(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_position(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject* value);
static PyObject* pyattr_get_visible(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
39/72/d7b37952a603e55b465aaaf72309

Event Timeline