MCPcopy Create free account
hub / github.com/ddnet/ddnet / Update

Method Update

src/engine/client/input.cpp:701–881  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

699#endif
700
701int CInput::Update()
702{
703 const int64_t Now = time_get();
704 if(m_LastUpdate != 0)
705 {
706 const float Diff = (Now - m_LastUpdate) / (float)time_freq();
707 m_UpdateTime = m_UpdateTime == 0.0f ? Diff : (m_UpdateTime * 0.8f + Diff * 0.2f);
708 }
709 m_LastUpdate = Now;
710
711 // keep the counter between 1..0xFFFFFFFF, 0 means not pressed
712 m_InputCounter = (m_InputCounter % std::numeric_limits<decltype(m_InputCounter)>::max()) + 1;
713
714 SDL_Event Event;
715 bool IgnoreKeys = false;
716
717 const auto &&AddKeyEventChecked = [&](int Key, int Flags) {
718 if(Key != KEY_UNKNOWN && !IgnoreKeys && (!(Flags & IInput::FLAG_PRESS) || !HasComposition()))
719 {
720 AddKeyEvent(Key, Flags);
721 }
722 };
723
724#if defined(CONF_PLATFORM_EMSCRIPTEN)
725 if(EmscriptenQuit)
726 {
727 return 1;
728 }
729#endif
730
731 while(SDL_PollEvent(&Event))
732 {
733 switch(Event.type)
734 {
735 case SDL_SYSWMEVENT:
736 ProcessSystemMessage(Event.syswm.msg);
737 break;
738
739 case SDL_TEXTEDITING:
740 HandleTextEditingEvent(Event.edit.text, Event.edit.start, Event.edit.length);
741 break;
742
743#if SDL_VERSION_ATLEAST(2, 0, 22)
744 case SDL_TEXTEDITING_EXT:
745 HandleTextEditingEvent(Event.editExt.text, Event.editExt.start, Event.editExt.length);
746 SDL_free(Event.editExt.text);
747 break;
748#endif
749
750 case SDL_TEXTINPUT:
751 m_CompositionString = "";
752 m_CompositionCursor = 0;
753 AddTextEvent(Event.text.text);
754 break;
755
756 // handle keys
757 case SDL_KEYDOWN:
758 AddKeyEventChecked(TranslateKeyEventKey(Event.key), IInput::FLAG_PRESS | (Event.key.repeat != 0 ? FLAG_REPEAT : 0));

Callers

nothing calls this directly

Calls 13

time_getFunction · 0.85
time_freqFunction · 0.85
TranslateKeyEventKeyFunction · 0.85
GraphicsFunction · 0.85
SwitchWindowScreenMethod · 0.80
GotResizedMethod · 0.80
str_copyFunction · 0.50
MoveMethod · 0.45
SaveMethod · 0.45
WindowDestroyNtfMethod · 0.45

Tested by

no test coverage detected