From 6b399f2c91337429476bcbd9eec7663a10c7158c Mon Sep 17 00:00:00 2001 From: ghostie Date: Sun, 31 Aug 2025 15:05:46 -0500 Subject: [PATCH] init ability actor info --- .../Aura/Private/Character/AuraCharacter.cpp | 28 +++++++++++++++++++ Source/Aura/Private/Character/AuraEnemy.cpp | 7 +++++ Source/Aura/Public/Character/AuraCharacter.h | 4 +++ Source/Aura/Public/Character/AuraEnemy.h | 3 ++ 4 files changed, 42 insertions(+) diff --git a/Source/Aura/Private/Character/AuraCharacter.cpp b/Source/Aura/Private/Character/AuraCharacter.cpp index 092389c..f9b29a7 100644 --- a/Source/Aura/Private/Character/AuraCharacter.cpp +++ b/Source/Aura/Private/Character/AuraCharacter.cpp @@ -3,9 +3,11 @@ #include "Character/AuraCharacter.h" +#include "AbilitySystemComponent.h" #include "Camera/CameraComponent.h" #include "GameFramework/CharacterMovementComponent.h" #include "GameFramework/SpringArmComponent.h" +#include "Player/AuraPlayerState.h" AAuraCharacter::AAuraCharacter() { @@ -35,3 +37,29 @@ AAuraCharacter::AAuraCharacter() bUseControllerRotationYaw = false; bUseControllerRotationRoll = false; } + +void AAuraCharacter::PossessedBy(AController* NewController) +{ + Super::PossessedBy(NewController); + + // Init ability actor info for the server + InitAbilityActorInfo(); +} + +void AAuraCharacter::OnRep_PlayerState() +{ + Super::OnRep_PlayerState(); + + // Init ability actor info for the server + InitAbilityActorInfo(); +} + +void AAuraCharacter::InitAbilityActorInfo() +{ + AAuraPlayerState *AuraPlayerState = GetPlayerState(); + check(AuraPlayerState); + AuraPlayerState->GetAbilitySystemComponent()->InitAbilityActorInfo(AuraPlayerState, this); + + AbilitySystemComponent = AuraPlayerState->GetAbilitySystemComponent(); + AttributeSet = AuraPlayerState->GetAttributeSet(); +} diff --git a/Source/Aura/Private/Character/AuraEnemy.cpp b/Source/Aura/Private/Character/AuraEnemy.cpp index 5697755..1301ed4 100644 --- a/Source/Aura/Private/Character/AuraEnemy.cpp +++ b/Source/Aura/Private/Character/AuraEnemy.cpp @@ -31,3 +31,10 @@ void AAuraEnemy::UnHighlightActor() GetMesh()->SetRenderCustomDepth(false); Weapon->SetRenderCustomDepth(false); } + +void AAuraEnemy::BeginPlay() +{ + Super::BeginPlay(); + + AbilitySystemComponent->InitAbilityActorInfo(this, this); +} diff --git a/Source/Aura/Public/Character/AuraCharacter.h b/Source/Aura/Public/Character/AuraCharacter.h index e61f264..63b9fa3 100644 --- a/Source/Aura/Public/Character/AuraCharacter.h +++ b/Source/Aura/Public/Character/AuraCharacter.h @@ -16,6 +16,8 @@ class AURA_API AAuraCharacter : public AAuraCharacterBase public: AAuraCharacter (); + virtual void PossessedBy(AController* NewController) override; + virtual void OnRep_PlayerState() override; private: UPROPERTY (EditAnywhere) @@ -23,4 +25,6 @@ private: UPROPERTY (EditAnywhere) TObjectPtr Camera; + + void InitAbilityActorInfo (); }; diff --git a/Source/Aura/Public/Character/AuraEnemy.h b/Source/Aura/Public/Character/AuraEnemy.h index 65d11dd..a038a49 100644 --- a/Source/Aura/Public/Character/AuraEnemy.h +++ b/Source/Aura/Public/Character/AuraEnemy.h @@ -19,4 +19,7 @@ public: AAuraEnemy (); virtual void HighlightActor() override; virtual void UnHighlightActor() override; + +protected: + virtual void BeginPlay() override; };