34 virtual void GetAudioListenerPosition(FVector& OutLocation, FVector& OutFrontDir, FVector& OutRightDir)
const override;
37 virtual void BindActions(UInputMappingContext* Context);
45 PlayerOptions.bInvertedCamera = bInvert;
46 return PlayerOptions.bInvertedCamera;
50 PlayerOptions.bInvertedHorizontalCamera = bInvert;
51 return PlayerOptions.bInvertedHorizontalCamera;
59 PlayerOptions.CameraSensitivity = NewValue;
60 return PlayerOptions.CameraSensitivity;
64 PlayerOptions.CameraHorizontalSensitivity = NewValue;
65 return PlayerOptions.CameraHorizontalSensitivity;
69 PlayerOptions.CameraVerticalSensitivity = NewValue;
70 return PlayerOptions.CameraVerticalSensitivity;
74 PlayerOptions.CameraAimedSensitivityMultiplier = NewValue;
79 PlayerOptions.bUseSeparateCameraAxisSensitivity = bValue;
83 PlayerOptions.AimAssistLevel = Value;
92 return PlayerOptions.CameraSensitivity;
96 return PlayerOptions.CameraAimedSensitivityMultiplier;
100 return PlayerOptions.CameraHorizontalSensitivity;
104 return PlayerOptions.CameraVerticalSensitivity;
108 return PlayerOptions.bUseSeparateCameraAxisSensitivity;
112 return PlayerOptions.bInvertedCamera;
116 return PlayerOptions.bInvertedHorizontalCamera;
120 return PlayerOptions.AimAssistLevel;
129 virtual bool RegisterLayer(
const FGameplayTag LayerName, UUserWidget* LayerWidget)
override;
130 virtual UUserWidget* PushContentToLayer(
const FGameplayTag LayerName,
const TSoftClassPtr<UUserWidget> WidgetClass)
override;
131 virtual bool PopContentFromLayer(
const FGameplayTag LayerName)
override;
132 virtual bool ClearLayer(
const FGameplayTag LayerName)
override;
133 virtual bool ToggleWidget(
const FGameplayTag LayerName, UUserWidget* Widget)
override;
134 virtual UUserWidget* AddWidgetToLayer(
const FGameplayTag LayerName,
const TSoftClassPtr<UUserWidget> WidgetClass)
override;
135 virtual UUserWidget* GetContentFromLayer(
const FGameplayTag LayerName,
const TSoftClassPtr<UUserWidget> WidgetClass)
override;
136 virtual UUserWidget* AddWidgetToLayerWithSlot(
const FGameplayTag LayerName,
const FGameplayTag SlotTag,
const TSoftClassPtr<UUserWidget> WidgetClass)
override;
139 virtual int32 CloseRadialMenu()
override;
140 virtual bool GetIsRadialMenuOpen()
const override;
141 virtual void SetCharacterMode(
const FGameplayTag& Mode)
override;
143 virtual void ToggleGameLog()
override;
145 virtual FVector2D
GetLookAxis()
const override {
return FVector2D(LookAxisX, LookAxisY);};
146 virtual FVector2D
GetMoveAxis()
const override {
return FVector2D(MoveAxisX, MoveAxisY);};
147 virtual FVector2D GetScreenCenter()
const override;
151 virtual FVector GetPawnLocation()
const override;
152 virtual void GetControllerViewPoint(FVector& out_Location, FRotator& out_Rotation)
const override;
157 virtual bool SaveGame()
override;
158 virtual bool LoadGame()
override;
161 UFUNCTION(BlueprintImplementableEvent, Category=
"Controller")
162 void OnCharacterModeChanged(const FGameplayTag& Mode);
166 virtual
void BeginPlay() override;
168 virtual
void SetupInputs();
169 virtual
void SetupComponents();
171 virtual
bool SavePlayerOptions(const FString& SlotName = "
Default");
172 virtual
bool LoadPlayerOptions(const FString& SlotName = "
Default");
176 virtual
void OnPossess(APawn* NewPawn) override;
177 virtual
void OnRep_Pawn() override;
178 virtual
void SetupInputComponent() override;
179 virtual
void OnPawnSpawn();
180 virtual
void OnPawnSpawnComplete();
183 virtual
float CalculateCameraSensitivity(const
float CameraInput) const;
188 virtual
void MenuConfirmAction(const FInputActionValue& Value);
190 virtual
void MenuBackAction(const FInputActionValue& Value);
192 virtual
void SelectionUpAction(const FInputActionValue& Value);
194 virtual
void ForwardMovementAction(const FInputActionValue& Value);
196 virtual
void RightMovementAction(const FInputActionValue& Value);
198 virtual
void CameraUpAction(const FInputActionValue& Value);
200 virtual
void CameraRightAction(const FInputActionValue& Value);
202 virtual
void CharacterModeAction(const FInputActionValue& Value);
209 void LogDebugError(const FString& Message) const;
210 void LogDebugError(const FString& Message, const int32 Value) const;
211 void LogDebugError(const FString& Message, const
float Value) const;
212 void LogDebugWarning(const FString& Message) const;
213 void LogDebugWarning(const FString& Message, const int32 Value) const;
214 void LogDebugWarning(const FString& Message, const
float Value) const;
216 void LogDebugMessage(const FString& Message, const
bool bWarning = false, const
bool bError = false) const;
217 void LogDebugMessage(const FString& Message, const int32 Value, const
bool bWarning = false, const
bool bError = false) const;
218 void LogDebugMessage(const FString& Message, const
float Value, const
bool bWarning = false, const
bool bError = false) const;
219 void LogDebugMessage(const FString& Message, const
bool bValue, const
bool bWarning, const
bool bError) const;
220 void LogOnScreenMessage(const int32 Key, const FString& Message, FColor Color = FColor::Green) const;
222 void SetCategoryName(const FLogCategoryBase& Category){CategoryName = Category.GetCategoryName();};
226 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category =
"Character")
235 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="
Multiplayer")
236 int32 MaxPawnSpawnAttempts = 5;
238 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Controller|Status")
242 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Input")
243 TObjectPtr<UInputMappingContext> MenuInputMappingContext =
nullptr;
244 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Input")
245 TObjectPtr<UInputMappingContext> MainInputMappingContext =
nullptr;
247 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Controller|Debugging")
248 bool bDebuggingMode = false;
249 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Controller|Debugging")
250 FName AudioSocket = FName("head");
257 virtual
bool LoadAudioOptions();
261 FLogCategoryName CategoryName = LogBasePlayerController.GetCategoryName();
269 UPROPERTY(VisibleAnywhere, Category="Player Options")
271 UPROPERTY(VisibleAnywhere, Category="Player Options")
274 UPROPERTY(EditAnywhere, Category="Player Options")
275 bool bUsingController = false;
278 UPROPERTY(VisibleAnywhere, Category="Player Options")
279 FString PlayerOptionsSaveName = "_PlayerSettings";
281 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
282 float MoveAxisY = 0.0f;
283 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
284 float MoveAxisX = 0.0f;
285 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
286 float LookAxisY = 0.0f;
287 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
288 float LookAxisX = 0.0f;
290 UPROPERTY(EditAnywhere, Category = "Controller|Delay")
291 float MultiplayerStartDelay = 0.5f;
293 FTimerHandle SetupCompleteDelayTimerHandle;
294 int32 PawnSpawnAttempts = 0;