-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpyattr_get_active_inputs.cpp
30 lines (24 loc) · 1.08 KB
/
pyattr_get_active_inputs.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
PyObject *SCA_PythonMouse::pyattr_get_active_inputs(PyObjectPlus *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::BEGINMOUSE; i <= SCA_IInputDevice::ENDMOUSE; i++) {
SCA_InputEvent &input = self->m_mouse->GetInput((SCA_IInputDevice::SCA_EnumInputs)i);
unsigned int num_active = input.Find(SCA_InputEvent::ACTIVE);
if (input.Find(SCA_InputEvent::ACTIVE)) {
PyObject *key = PyLong_FromLong(i);
for (int i = 1; i < input.m_status.size(); i++) {
// Generate a input event with one of the accumulative events only
SCA_InputEvent temp;
temp.m_status.push_back(input.m_status[i]);
temp.m_values.push_back(input.m_values[i]);
temp.m_queue.push_back(input.m_queue[i-1]);
PyDict_SetItem(self->m_event_dict, key, temp.GetProxy());
Py_DECREF(key);
Py_INCREF(self->m_event_dict);
}
}
}
return self->m_event_dict;
}