fix: inputs

This commit is contained in:
2025-10-12 15:19:25 +02:00
parent 9d3aecebf3
commit 83e28d3828
6 changed files with 52 additions and 12 deletions

Binary file not shown.

BIN
Content/Input/IMC_UI.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/UI/WBP_SkillNode.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/UI/WBP_SkillTree.uasset (Stored with Git LFS)

Binary file not shown.

View File

@@ -195,12 +195,29 @@ void AUTAD_UIPlayerController::ShowSkillTree()
{
SkillTreeWidget->AddToViewport(1);
// Set input mode to Game and UI
FInputModeGameAndUI InputMode;
// Switch to UI-only input mode to block gameplay actions (like click-to-move)
FInputModeUIOnly InputMode;
InputMode.SetWidgetToFocus(SkillTreeWidget->TakeWidget());
InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
SetInputMode(InputMode);
bShowMouseCursor = true;
// Switch input mapping context from gameplay to UI
if (UEnhancedInputLocalPlayerSubsystem* Subsystem =
ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(
GetLocalPlayer()))
{
// Remove gameplay context
if (DefaultMappingContext)
{
Subsystem->RemoveMappingContext(DefaultMappingContext);
}
// Add UI context with higher priority
if (UIMappingContext)
{
Subsystem->AddMappingContext(UIMappingContext, 1);
}
}
}
}
@@ -210,14 +227,29 @@ void AUTAD_UIPlayerController::HideSkillTree()
{
SkillTreeWidget->RemoveFromParent();
// Set input mode back to game and UI for top-down gameplay
// This allows mouse clicks to work for character movement
// Restore game and UI input mode for top-down gameplay
FInputModeGameAndUI InputMode;
InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
InputMode.SetHideCursorDuringCapture(false);
SetInputMode(InputMode);
// Keep mouse cursor visible for top-down game
bShowMouseCursor = true;
// Switch input mapping context back from UI to gameplay
if (UEnhancedInputLocalPlayerSubsystem* Subsystem =
ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(
GetLocalPlayer()))
{
// Remove UI context
if (UIMappingContext)
{
Subsystem->RemoveMappingContext(UIMappingContext);
}
// Restore gameplay context
if (DefaultMappingContext)
{
Subsystem->AddMappingContext(DefaultMappingContext, 0);
}
}
}
}

View File

@@ -43,11 +43,16 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input)
UNiagaraSystem* FXCursor;
/** MappingContext */
/** Gameplay Mapping Context (for movement and game actions) */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input,
meta = (AllowPrivateAccess = "true"))
UInputMappingContext* DefaultMappingContext;
/** UI Mapping Context (for UI-specific actions like closing menus) */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input,
meta = (AllowPrivateAccess = "true"))
UInputMappingContext* UIMappingContext;
/** Jump Input Action */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input,
meta = (AllowPrivateAccess = "true"))