void FAxisMappingsNodeBuilder::AddAxisMappingToGroupButton_OnClick(const FMappingSet MappingSet) { const FScopedTransaction Transaction(LOCTEXT("AddAxisMappingToGroup_Transaction", "Add Axis Mapping To Group")); TArray<UObject*> OuterObjects; AxisMappingsPropertyHandle->GetOuterObjects(OuterObjects); if (OuterObjects.Num() == 1) { UInputSettings* InputSettings = CastChecked<UInputSettings>(OuterObjects[0]); InputSettings->Modify(); AxisMappingsPropertyHandle->NotifyPreChange(); FInputAxisKeyMapping NewMapping(MappingSet.SharedName); InputSettings->AxisMappings.Add(NewMapping); AxisMappingsPropertyHandle->NotifyPostChange(); } }
void FActionMappingsNodeBuilder::AddActionMappingToGroupButton_OnClick(const FMappingSet MappingSet) { const FScopedTransaction Transaction(LOCTEXT("AddActionMappingToGroup_Transaction", "Add Action Mapping To Group")); TArray<UObject*> OuterObjects; ActionMappingsPropertyHandle->GetOuterObjects(OuterObjects); if (OuterObjects.Num() == 1) { UInputSettings* InputSettings = CastChecked<UInputSettings>(OuterObjects[0]); InputSettings->Modify(); ActionMappingsPropertyHandle->NotifyPreChange(); DelayedGroupExpansionStates.Add(TPairInitializer<FName, bool>(MappingSet.SharedName, true)); FInputActionKeyMapping NewMapping(MappingSet.SharedName); InputSettings->ActionMappings.Add(NewMapping); ActionMappingsPropertyHandle->NotifyPostChange(); } }
void FAxisMappingsNodeBuilder::AddAxisMappingButton_OnClick() { static const FName BaseAxisMappingName(*LOCTEXT("NewAxisMappingName", "NewAxisMapping").ToString()); static int32 NewMappingCount = 0; const FScopedTransaction Transaction(LOCTEXT("AddAxisMapping_Transaction", "Add Axis Mapping")); TArray<UObject*> OuterObjects; AxisMappingsPropertyHandle->GetOuterObjects(OuterObjects); if (OuterObjects.Num() == 1) { UInputSettings* InputSettings = CastChecked<UInputSettings>(OuterObjects[0]); InputSettings->Modify(); AxisMappingsPropertyHandle->NotifyPreChange(); FName NewAxisMappingName; bool bFoundUniqueName; do { // Create a numbered name and check whether it's already been used NewAxisMappingName = FName(BaseAxisMappingName, ++NewMappingCount); bFoundUniqueName = true; for (int32 Index = 0; Index < InputSettings->AxisMappings.Num(); ++Index) { if (InputSettings->AxisMappings[Index].AxisName == NewAxisMappingName) { bFoundUniqueName = false; break; } } } while (!bFoundUniqueName); DelayedGroupExpansionStates.Add(TPairInitializer<FName, bool>(NewAxisMappingName, true)); FInputAxisKeyMapping NewMapping(NewAxisMappingName); InputSettings->AxisMappings.Add(NewMapping); AxisMappingsPropertyHandle->NotifyPostChange(); } }