MCPcopy Create free account
hub / github.com/crownengine/crown / read

Method read

src/device/input_manager.cpp:334–424  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332}
333
334void InputManager::read(const OsEvent &event)
335{
336 InputDevice *dev;
337 InputEvent input_ev;
338
339 switch (event.type) {
340 case OsEventType::BUTTON: {
341 const ButtonEvent ev = event.button;
342
343 dev = device_from_type(ev.device_id, ev.device_num);
344 if (CE_UNLIKELY(dev == NULL))
345 return;
346
347 // Publish the event.
348 dev->set_button(ev.button_num, ev.pressed);
349
350 input_ev.id = ev.button_num;
351 input_ev.type = ev.pressed ? InputEventType::BUTTON_PRESSED : InputEventType::BUTTON_RELEASED;
352 input_ev.value = VECTOR3_ZERO;
353 input_ev.device = dev;
354
355 _events[_num_events++] = input_ev;
356 break;
357 }
358
359 case OsEventType::AXIS: {
360 const AxisEvent ev = event.axis;
361
362 dev = device_from_type(ev.device_id, ev.device_num);
363 if (CE_UNLIKELY(dev == NULL))
364 return;
365
366 Vector3 axis;
367
368 if (ev.device_id == InputDeviceType::MOUSE) {
369 if (ev.axis_num == MouseAxis::CURSOR_DELTA) {
370 const Vector3 delta = _has_delta_axis_event ?
371 dev->axis(MouseAxis::CURSOR_DELTA)
372 : VECTOR3_ZERO
373 ;
374
375 axis.x = delta.x + ev.axis_x;
376 axis.y = delta.y + ev.axis_y;
377 axis.z = 0.0f;
378
379 _has_delta_axis_event = true;
380 } else {
381 axis.x = ev.axis_x;
382 axis.y = ev.axis_y;
383 axis.z = ev.axis_z;
384 }
385 } else if (ev.device_id == InputDeviceType::JOYPAD) {
386 axis.x = (f32)ev.axis_x / (f32)INT16_MAX;
387 axis.y = (f32)ev.axis_y / (f32)INT16_MAX;
388 axis.z = (f32)ev.axis_z / (f32)INT16_MAX;
389
390 axis = deadzone(dev, ev.axis_num, axis);
391 } else {

Callers 5

process_eventsMethod · 0.45
run_input_threadMethod · 0.45
run_output_threadMethod · 0.45
do_chunked_ioMethod · 0.45

Calls 4

deadzoneFunction · 0.85
set_buttonMethod · 0.80
set_axisMethod · 0.80
axisMethod · 0.45

Tested by

no test coverage detected