MCPcopy Create free account
hub / github.com/defold/defold / UpdateBinding

Function UpdateBinding

engine/input/src/input.cpp:616–970  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

614 }
615
616 void UpdateBinding(HBinding binding, float dt)
617 {
618 DM_PROFILE(__FUNCTION__);
619 binding->m_Actions.Iterate<void>(ClearAction, 0x0);
620
621 dmHID::HContext hid_context = binding->m_Context->m_HidContext;
622 if (binding->m_KeyboardBinding != 0x0)
623 {
624 KeyboardBinding* keyboard_binding = binding->m_KeyboardBinding;
625 dmHID::KeyboardPacket* packet = &keyboard_binding->m_Packet;
626 dmHID::KeyboardPacket* prev_packet = &keyboard_binding->m_PreviousPacket;
627 if (dmHID::GetKeyboardPacket(keyboard_binding->m_Keyboard, packet))
628 {
629 const dmArray<KeyTrigger>& triggers = keyboard_binding->m_Triggers;
630 for (uint32_t i = 0; i < triggers.Size(); ++i)
631 {
632 const KeyTrigger& trigger = triggers[i];
633 float v = dmHID::GetKey(packet, KEY_MAP[trigger.m_Input]) ? 1.0f : 0.0f;
634 Action* action = binding->m_Actions.Get(trigger.m_ActionId);
635 if (action != 0x0)
636 {
637 if (dmMath::Abs(action->m_Value) < v)
638 {
639 action->m_Value = v;
640 }
641 UpdateActionPressedReleasedRepeated(action, binding->m_Context, dt);
642 }
643 }
644 *prev_packet = *packet;
645 }
646 }
647 if (binding->m_TextBinding != 0x0)
648 {
649 TextBinding* text_binding = binding->m_TextBinding;
650
651 dmHID::TextPacket* text_packet = &text_binding->m_TextPacket;
652 if (dmHID::GetTextPacket(hid_context, text_packet))
653 {
654 const dmArray<TextTrigger>& triggers = text_binding->m_Triggers;
655 for (uint32_t i = 0; i < triggers.Size(); ++i)
656 {
657 const TextTrigger& trigger = triggers[i];
658 if (trigger.m_Input == dmInputDDF::TEXT)
659 {
660 Action* action = binding->m_Actions.Get(trigger.m_ActionId);
661 if (action != 0x0)
662 {
663 for (uint32_t i = 0; i < text_packet->m_Size; ++i) {
664 action->m_Text[i] = text_packet->m_Text[i];
665 }
666 action->m_Count = text_packet->m_Size;
667 action->m_HasText = action->m_Count > 0;
668 }
669 }
670 }
671 }
672
673 dmHID::MarkedTextPacket* marked_packet = &text_binding->m_MarkedTextPacket;

Callers 2

StepFrameFunction · 0.85
TEST_FFunction · 0.85

Calls 15

GetKeyboardPacketFunction · 0.85
AbsFunction · 0.85
GetTextPacketFunction · 0.85
GetMarkedTextPacketFunction · 0.85
GetMousePacketFunction · 0.85
IsGamepadConnectedFunction · 0.85
GetGamepadConfigFunction · 0.85
GetGamepadPacketFunction · 0.85
dmStrlCpyFunction · 0.85
GetGamepadUserIdFunction · 0.85

Tested by 1

TEST_FFunction · 0.68