diff --git a/Source/Aura/Aura.Build.cs b/Source/Aura/Aura.Build.cs index 7463fcb..9970760 100644 --- a/Source/Aura/Aura.Build.cs +++ b/Source/Aura/Aura.Build.cs @@ -8,9 +8,9 @@ public class Aura : ModuleRules { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" }); + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayAbilities" }); - PrivateDependencyModuleNames.AddRange(new string[] { "GameplayAbilities", "GameplayTags", "GameplayTasks" }); + PrivateDependencyModuleNames.AddRange(new string[] { "GameplayTags", "GameplayTasks" }); // Uncomment if you are using Slate UI // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); diff --git a/Source/Aura/Private/Character/AuraCharacterBase.cpp b/Source/Aura/Private/Character/AuraCharacterBase.cpp index 7d62120..3e0dfc9 100644 --- a/Source/Aura/Private/Character/AuraCharacterBase.cpp +++ b/Source/Aura/Private/Character/AuraCharacterBase.cpp @@ -10,7 +10,12 @@ AAuraCharacterBase::AAuraCharacterBase() Weapon->SetCollisionEnabled(ECollisionEnabled::NoCollision); } +UAbilitySystemComponent* AAuraCharacterBase::GetAbilitySystemComponent() const +{ + return AbilitySystemComponent; +} + void AAuraCharacterBase::BeginPlay() { Super::BeginPlay(); -} \ No newline at end of file +} diff --git a/Source/Aura/Private/Character/AuraEnemy.cpp b/Source/Aura/Private/Character/AuraEnemy.cpp index 4724205..98fe743 100644 --- a/Source/Aura/Private/Character/AuraEnemy.cpp +++ b/Source/Aura/Private/Character/AuraEnemy.cpp @@ -3,11 +3,18 @@ #include "Character/AuraEnemy.h" +#include "AbilitySystem/AuraAbilitySystemComponent.h" +#include "AbilitySystem/AuraAttributeSet.h" #include "Aura/Aura.h" AAuraEnemy::AAuraEnemy() { GetMesh()->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); + + AbilitySystemComponent = CreateDefaultSubobject("AbilitySystemComponent"); + AbilitySystemComponent->SetIsReplicated(true); + + AttributeSet = CreateDefaultSubobject("AttributeSet"); } void AAuraEnemy::HighlightActor() diff --git a/Source/Aura/Private/Player/AuraPlayerState.cpp b/Source/Aura/Private/Player/AuraPlayerState.cpp index aab9374..2d6f48a 100644 --- a/Source/Aura/Private/Player/AuraPlayerState.cpp +++ b/Source/Aura/Private/Player/AuraPlayerState.cpp @@ -3,7 +3,20 @@ #include "Player/AuraPlayerState.h" +#include "AbilitySystem/AuraAbilitySystemComponent.h" +#include "AbilitySystem/AuraAttributeSet.h" + AAuraPlayerState::AAuraPlayerState() { + AbilitySystemComponent = CreateDefaultSubobject("AbilitySystemComponent"); + AbilitySystemComponent->SetIsReplicated(true); + + AttributeSet = CreateDefaultSubobject("AttributeSet"); + SetNetUpdateFrequency(100.f); } + +UAbilitySystemComponent* AAuraPlayerState::GetAbilitySystemComponent() const +{ + return AbilitySystemComponent; +} diff --git a/Source/Aura/Public/Character/AuraCharacterBase.h b/Source/Aura/Public/Character/AuraCharacterBase.h index 45ac1fc..10ffb97 100644 --- a/Source/Aura/Public/Character/AuraCharacterBase.h +++ b/Source/Aura/Public/Character/AuraCharacterBase.h @@ -3,20 +3,32 @@ #pragma once #include "CoreMinimal.h" +#include "AbilitySystemInterface.h" #include "GameFramework/Character.h" #include "AuraCharacterBase.generated.h" +class UAbilitySystemComponent; +class UAttributeSet; + UCLASS(Abstract) // Abstract so that it cannot be dragged to a level -class AURA_API AAuraCharacterBase : public ACharacter +class AURA_API AAuraCharacterBase : public ACharacter, public IAbilitySystemInterface { GENERATED_BODY() public: AAuraCharacterBase(); + virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; + UAttributeSet* GetAttributeSet() const { return AttributeSet; } protected: virtual void BeginPlay() override; UPROPERTY(EditAnywhere, Category = "Combat") TObjectPtr Weapon; + + UPROPERTY () + TObjectPtr AbilitySystemComponent; + + UPROPERTY () + TObjectPtr AttributeSet; }; diff --git a/Source/Aura/Public/Player/AuraPlayerState.h b/Source/Aura/Public/Player/AuraPlayerState.h index 9566daf..ca107cc 100644 --- a/Source/Aura/Public/Player/AuraPlayerState.h +++ b/Source/Aura/Public/Player/AuraPlayerState.h @@ -3,17 +3,27 @@ #pragma once #include "CoreMinimal.h" +#include "AbilitySystemInterface.h" #include "GameFramework/PlayerState.h" #include "AuraPlayerState.generated.h" -/** - * - */ +class UAbilitySystemComponent; +class UAttributeSet; + UCLASS() -class AURA_API AAuraPlayerState : public APlayerState +class AURA_API AAuraPlayerState : public APlayerState, public IAbilitySystemInterface { GENERATED_BODY() public: AAuraPlayerState(); + virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; + UAttributeSet* GetAttributeSet() const { return AttributeSet; } + +protected: + UPROPERTY() + TObjectPtr AbilitySystemComponent; + + UPROPERTY() + TObjectPtr AttributeSet; };