MCPcopy Create free account
hub / github.com/Panzerschrek/Chasm-Reverse / GetInput

Method GetInput

PanzerChasm/system_window.cpp:609–674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

607}
608
609void SystemWindow::GetInput( SystemEvents& out_events )
610{
611 out_events.clear();
612
613 SDL_Event event;
614 while( SDL_PollEvent(&event) )
615 {
616 switch(event.type)
617 {
618 case SDL_WINDOWEVENT:
619 if( event.window.event == SDL_WINDOWEVENT_CLOSE )
620 {
621 out_events.emplace_back();
622 out_events.back().type= SystemEvent::Type::Quit;
623 }
624 break;
625
626 case SDL_QUIT:
627 out_events.emplace_back();
628 out_events.back().type= SystemEvent::Type::Quit;
629 break;
630
631 case SDL_KEYUP:
632 case SDL_KEYDOWN:
633 out_events.emplace_back();
634 out_events.back().type= SystemEvent::Type::Key;
635 out_events.back().event.key.key_code= TranslateKey( event.key.keysym.scancode );
636 out_events.back().event.key.pressed= event.type == SDL_KEYUP ? false : true;
637 out_events.back().event.key.modifiers= TranslateKeyModifiers( event.key.keysym.mod );
638 break;
639
640 case SDL_MOUSEBUTTONUP:
641 case SDL_MOUSEBUTTONDOWN:
642 out_events.emplace_back();
643 out_events.back().type= SystemEvent::Type::MouseKey;
644 out_events.back().event.mouse_key.mouse_button= TranslateMouseButton( event.button.button );
645 out_events.back().event.mouse_key.x= event.button.x;
646 out_events.back().event.mouse_key.y= event.button.y;
647 out_events.back().event.mouse_key.pressed= event.type == SDL_MOUSEBUTTONUP ? false : true;
648 break;
649
650 case SDL_MOUSEMOTION:
651 out_events.emplace_back();
652 out_events.back().type= SystemEvent::Type::MouseMove;
653 out_events.back().event.mouse_move.dx= event.motion.xrel;
654 out_events.back().event.mouse_move.dy= event.motion.yrel;
655 break;
656
657 case SDL_TEXTINPUT:
658 // Accept only visible ASCII
659 if( event.text.text[0] >= 32 )
660 // && event.text.text[0] < 128 )
661 {
662 out_events.emplace_back();
663 out_events.back().type= SystemEvent::Type::CharInput;
664 out_events.back().event.char_input.ch= event.text.text[0];
665 }
666 break;

Callers 1

LoopMethod · 0.80

Calls 3

TranslateKeyFunction · 0.85
TranslateKeyModifiersFunction · 0.85
TranslateMouseButtonFunction · 0.85

Tested by

no test coverage detected