2024-04-12 13:10:06 -07:00
|
|
|
|
#pragma once
|
|
|
|
|
|
2024-04-12 13:30:01 -07:00
|
|
|
|
#include "GasaCommon.h"
|
2024-04-12 14:53:47 -07:00
|
|
|
|
#include "GameFramework/PlayerController.h"
|
2024-04-12 13:30:01 -07:00
|
|
|
|
|
2024-04-12 13:10:06 -07:00
|
|
|
|
#include "GasaPlayerController.generated.h"
|
|
|
|
|
|
|
|
|
|
UCLASS(Blueprintable)
|
|
|
|
|
class GASA_API AGasaPlayerController : public APlayerController
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
2024-04-12 23:31:49 -07:00
|
|
|
|
#pragma region Camera
|
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
|
|
|
|
TObjectPtr<ACameraMount> Cam;
|
|
|
|
|
#pragma endregion Camera
|
|
|
|
|
|
|
|
|
|
// This will be implemented in the base until it needs to be lifted into an abstraction.
|
|
|
|
|
#if 0
|
|
|
|
|
#pragma region Highlighting
|
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Highlighting")
|
|
|
|
|
EHighlight HighlightState;
|
|
|
|
|
|
|
|
|
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
|
|
|
|
void SetHighlight( EHighlight Desired );
|
2024-04-12 13:30:01 -07:00
|
|
|
|
|
2024-04-12 23:31:49 -07:00
|
|
|
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
|
|
|
|
FORCEINLINE void Highlight() { SetHighlight(EHighlight::Enabled); };
|
|
|
|
|
|
|
|
|
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
|
|
|
|
FORCEINLINE void Dehighlight() { SetHighlight(EHighlight::Disabled); };
|
|
|
|
|
#pragma endregion Highlighting
|
|
|
|
|
#endif
|
|
|
|
|
|
2024-04-12 14:53:47 -07:00
|
|
|
|
#pragma region Input
|
2024-04-12 19:05:09 -07:00
|
|
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
2024-04-12 23:31:49 -07:00
|
|
|
|
TObjectPtr<AGasaCharacter> HoverPrev;
|
2024-04-12 19:05:09 -07:00
|
|
|
|
|
|
|
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
2024-04-12 23:31:49 -07:00
|
|
|
|
TObjectPtr<AGasaCharacter> HoverCurr;
|
2024-04-12 19:05:09 -07:00
|
|
|
|
|
2024-04-12 14:53:47 -07:00
|
|
|
|
UPROPERTY(EditAnywhere, Category="Input")
|
2024-04-12 13:30:01 -07:00
|
|
|
|
TObjectPtr<UInputMappingContext> IMC;
|
2024-04-12 14:53:47 -07:00
|
|
|
|
|
|
|
|
|
UPROPERTY(EditAnywhere, Category="Input")
|
|
|
|
|
TObjectPtr<UInputAction> IA_Move;
|
2024-04-13 08:56:19 -07:00
|
|
|
|
|
|
|
|
|
void Move(FInputActionValue const& ActionValue);
|
2024-04-12 14:53:47 -07:00
|
|
|
|
#pragma endregion Input
|
2024-04-12 13:10:06 -07:00
|
|
|
|
|
2024-04-12 13:30:01 -07:00
|
|
|
|
AGasaPlayerController();
|
|
|
|
|
|
2024-04-21 15:56:57 -07:00
|
|
|
|
inline AGasaPlayerState* GetPlayerState();
|
2024-04-12 14:53:47 -07:00
|
|
|
|
|
|
|
|
|
#pragma region PlayerController
|
2024-04-21 06:51:51 -07:00
|
|
|
|
void SpawnDefaultHUD() override;
|
|
|
|
|
|
2024-04-12 23:31:49 -07:00
|
|
|
|
void OnPossess(APawn* InPawn) override;
|
|
|
|
|
|
|
|
|
|
void OnUnPossess() override;
|
|
|
|
|
|
2024-04-12 19:05:09 -07:00
|
|
|
|
void PlayerTick(float DeltaTime) override;
|
|
|
|
|
|
2024-04-12 14:53:47 -07:00
|
|
|
|
void SetupInputComponent() override;
|
|
|
|
|
#pragma endregion PlayerController
|
|
|
|
|
|
|
|
|
|
#pragma region Actor
|
2024-04-12 13:30:01 -07:00
|
|
|
|
void BeginPlay() override;
|
2024-04-12 23:31:49 -07:00
|
|
|
|
|
|
|
|
|
void PostInitializeComponents() override;
|
|
|
|
|
|
|
|
|
|
void Tick(float DeltaSeconds) override;
|
2024-04-12 14:53:47 -07:00
|
|
|
|
#pragma endregion Actor
|
2024-04-12 13:10:06 -07:00
|
|
|
|
};
|
2024-04-13 02:32:52 -07:00
|
|
|
|
|
|
|
|
|
namespace Gasa
|
|
|
|
|
{
|
|
|
|
|
inline
|
|
|
|
|
AGasaPlayerController* GetPrimaryPlayerController(UObject* Context)
|
|
|
|
|
{
|
|
|
|
|
UWorld* World = GEngine->GetWorldFromContextObject(Context, EGetWorldErrorMode::LogAndReturnNull);
|
|
|
|
|
if (World == nullptr)
|
|
|
|
|
{
|
|
|
|
|
Log("World is null... are you running in a proper context?", ELogV::Error);
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
return Cast<AGasaPlayerController>(World->GetFirstPlayerController());
|
|
|
|
|
}
|
|
|
|
|
}
|