GASATHON/Project/Source/Gasa/Game/GasaPlayerController.h

90 lines
2.3 KiB
C
Raw Normal View History

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"
2024-04-12 14:53:47 -07:00
2024-04-12 13:10:06 -07:00
UCLASS(Blueprintable)
class GASA_API AGasaPlayerController : public APlayerController
{
GENERATED_BODY()
public:
#pragma region Camera
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSubclassOf<ACameraMount> CamClass;
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
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)
TObjectPtr<AGasaCharacter> HoverPrev;
2024-04-12 19:05:09 -07:00
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
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;
#pragma endregion Input
2024-04-12 13:10:06 -07:00
2024-04-12 13:30:01 -07:00
AGasaPlayerController();
2024-04-12 14:53:47 -07:00
void Move(FInputActionValue const& ActionValue);
#pragma region PlayerController
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;
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
};
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());
}
}