bool UInputBlueprintLibrary::K2_RebindActionKey(FValorActionInputBinding OriginalBinding, FValorActionInputBinding NewBinding) { UInputSettings* Settings = const_cast<UInputSettings*>(GetDefault<UInputSettings>()); if (!Settings) { return false; } TArray<FInputActionKeyMapping>& ActionMappings = Settings->ActionMappings; bool bFound = false; for (FInputActionKeyMapping& ActionKeyMapping : ActionMappings) { if (ActionKeyMapping.ActionName.ToString() == OriginalBinding.ActionName && ActionKeyMapping.Key == OriginalBinding.Key) { UpdateActionMapping(ActionKeyMapping, NewBinding); bFound = true; break; } } if (bFound) { const_cast<UInputSettings*>(Settings)->SaveKeyMappings(); for (TObjectIterator<UPlayerInput> It; It; ++It) { It->ForceRebuildingKeyMaps(true); } } return bFound; }
void ezVirtualThumbStick::UpdateInputSlotValues() { m_bIsActive = false; m_InputSlotValues[m_szOutputLeft ] = 0.0f; m_InputSlotValues[m_szOutputRight] = 0.0f; m_InputSlotValues[m_szOutputUp ] = 0.0f; m_InputSlotValues[m_szOutputDown ] = 0.0f; if (!m_bEnabled) { ezInputManager::RemoveInputAction(GetDynamicRTTI()->GetTypeName(), m_sName.GetData()); return; } UpdateActionMapping(); float fValue; ezInt8 iTriggerAlt; const ezKeyState::Enum ks = ezInputManager::GetInputActionState(GetDynamicRTTI()->GetTypeName(), m_sName.GetData(), &fValue, &iTriggerAlt); if (ks != ezKeyState::Up) { m_bIsActive = true; ezVec2 vTouchPos(0.0f); ezInputManager::GetInputSlotState(m_ActionConfig.m_sFilterByInputSlotX[iTriggerAlt].GetData(), &vTouchPos.x); ezInputManager::GetInputSlotState(m_ActionConfig.m_sFilterByInputSlotY[iTriggerAlt].GetData(), &vTouchPos.y); if (ks == ezKeyState::Pressed) { switch (m_CenterMode) { case CenterMode::InputArea: m_vCenter = m_vLowerLeft + (m_vUpperRight - m_vLowerLeft) * 0.5f; break; case CenterMode::ActivationPoint: m_vCenter = vTouchPos; break; } } ezVec2 vDir = vTouchPos - m_vCenter; vDir.y *= -1; const float fLength = ezMath::Min(vDir.GetLength(), m_fRadius) / m_fRadius; vDir.Normalize(); m_InputSlotValues[m_szOutputLeft ] = ezMath::Max(0.0f, -vDir.x) * fLength; m_InputSlotValues[m_szOutputRight] = ezMath::Max(0.0f, vDir.x) * fLength; m_InputSlotValues[m_szOutputUp ] = ezMath::Max(0.0f, vDir.y) * fLength; m_InputSlotValues[m_szOutputDown ] = ezMath::Max(0.0f, -vDir.y) * fLength; } }