fix: inputs
This commit is contained in:
BIN
Content/Blueprints/BP_MainPlayerController.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/BP_MainPlayerController.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Input/IMC_UI.uasset
(Stored with Git LFS)
Normal file
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)
BIN
Content/UI/WBP_SkillNode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/UI/WBP_SkillTree.uasset
(Stored with Git LFS)
BIN
Content/UI/WBP_SkillTree.uasset
(Stored with Git LFS)
Binary file not shown.
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"))
|
||||
|
||||
Reference in New Issue
Block a user