Salty.uproject (UE 5.8) from the Third Person template with class redirects, the SaltyCore and Salty modules, the three build targets, USaltyAssetManager calling InitGlobalData, Config/Tags with the 23 root namespaces, Scripts/run-tests.sh, build.sh and Authoring/create_gym.py, L_Gym, Git LFS attributes and the placeholder test. Template variants kept as reference (D-41). The four Fab packs stay out of the repository for now (~10 GB). The editor serves the engine MCP plugin on 127.0.0.1:8000 through DefaultEditorPerProjectUserSettings.ini. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
#include "TemplatePlayerController.h"
|
|
#include "EnhancedInputSubsystems.h"
|
|
#include "Engine/LocalPlayer.h"
|
|
#include "InputMappingContext.h"
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "Salty.h"
|
|
#include "Widgets/Input/SVirtualJoystick.h"
|
|
|
|
void ATemplatePlayerController::BeginPlay()
|
|
{
|
|
Super::BeginPlay();
|
|
|
|
// only spawn touch controls on local player controllers
|
|
if (IsLocalPlayerController() && ShouldUseTouchControls())
|
|
{
|
|
// spawn the mobile controls widget
|
|
MobileControlsWidget = CreateWidget<UUserWidget>(this, MobileControlsWidgetClass);
|
|
|
|
if (MobileControlsWidget)
|
|
{
|
|
// add the controls to the player screen
|
|
MobileControlsWidget->AddToPlayerScreen(0);
|
|
|
|
} else {
|
|
|
|
UE_LOG(LogSalty, Error, TEXT("Could not spawn mobile controls widget."));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
void ATemplatePlayerController::SetupInputComponent()
|
|
{
|
|
Super::SetupInputComponent();
|
|
|
|
// only add IMCs for local player controllers
|
|
if (IsLocalPlayerController())
|
|
{
|
|
// Add Input Mapping Contexts
|
|
if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer()))
|
|
{
|
|
for (UInputMappingContext* CurrentContext : DefaultMappingContexts)
|
|
{
|
|
Subsystem->AddMappingContext(CurrentContext, 0);
|
|
}
|
|
|
|
// only add these IMCs if we're not using mobile touch input
|
|
if (!ShouldUseTouchControls())
|
|
{
|
|
for (UInputMappingContext* CurrentContext : MobileExcludedMappingContexts)
|
|
{
|
|
Subsystem->AddMappingContext(CurrentContext, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool ATemplatePlayerController::ShouldUseTouchControls() const
|
|
{
|
|
// are we on a mobile platform? Should we force touch?
|
|
return SVirtualJoystick::ShouldDisplayTouchInterface() || bForceTouchControls;
|
|
}
|