Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public ModularGameplayAbilities(ReadOnlyTargetRules Target) : base(Target)
"Core",
"GameFeatures",
"GameplayAbilities",
"CommonGame",
"ModalCamera",
"ModularGameplay",
"ModularGameplayExperiences"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#include "ModularAbilityPlayerController.h"

#include "ModularAbilityPlayerState.h"
#include "ActorComponent/ModularAbilitySystemComponent.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(ModularAbilityPlayerController)

AModularAbilityPlayerController::AModularAbilityPlayerController(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
AbilitySystemComponent = nullptr;
}

void AModularAbilityPlayerController::OnPossess(APawn* APawn)
{
Super::OnPossess(APawn);

if (auto* PS = GetPlayerState<AModularAbilityPlayerState>())
{
AbilitySystemComponent = PS->GetModularAbilitySystemComponent();
}
}

void AModularAbilityPlayerController::OnUnPossess()
{
AbilitySystemComponent = nullptr;

Super::OnUnPossess();
}

void AModularAbilityPlayerController::PostProcessInput(const float DeltaTime, const bool bGamePaused)
{
if (AbilitySystemComponent.IsValid())
{
AbilitySystemComponent->ProcessAbilityInput(DeltaTime, bGamePaused);
}

Super::PostProcessInput(DeltaTime, bGamePaused);
}

UModularAbilitySystemComponent* AModularAbilityPlayerController::GetAbilitySystemComponent() const
{
return AbilitySystemComponent.Get();
}

void AModularAbilityPlayerController::OnRep_PlayerState()
{
Super::OnRep_PlayerState();

if (const auto* PS = GetPlayerState<AModularAbilityPlayerState>())
{
AbilitySystemComponent = PS->GetModularAbilitySystemComponent();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#pragma once

#include "CoreMinimal.h"
#include "CommonPlayerController.h"
#include "ModularAbilityPlayerController.generated.h"


class UModularAbilitySystemComponent;

/**
* AModularAbilityPlayerController
*
* Drives ModularAbilitySystemComponent input processing.
* Inherits from ACommonPlayerController to work with CommonUI.
*/
UCLASS()
class MODULARGAMEPLAYABILITIES_API AModularAbilityPlayerController : public ACommonPlayerController
{
GENERATED_BODY()

public:
AModularAbilityPlayerController(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());

virtual void OnPossess(APawn* APawn) override;
virtual void OnUnPossess() override;
virtual void PostProcessInput(const float DeltaTime, const bool bGamePaused) override;

UModularAbilitySystemComponent* GetAbilitySystemComponent() const;

protected:
virtual void OnRep_PlayerState() override;

private:
// Cache ASC for input processing purposes
UPROPERTY(BlueprintReadOnly, Category = AbilitySystem, meta=(AllowPrivateAccess="true"))
TWeakObjectPtr<UModularAbilitySystemComponent> AbilitySystemComponent;
};