Am sad and feel bad.
This commit is contained in:
@@ -10,7 +10,7 @@ public class Aura : ModuleRules
|
||||
|
||||
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayAbilities" });
|
||||
|
||||
PrivateDependencyModuleNames.AddRange(new string[] { "GameplayTags", "GameplayTasks", "NavigationSystem" });
|
||||
PrivateDependencyModuleNames.AddRange(new string[] { "GameplayTags", "GameplayTasks", "NavigationSystem", "Niagara" });
|
||||
|
||||
// Uncomment if you are using Slate UI
|
||||
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
|
||||
|
||||
@@ -4,4 +4,5 @@
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
|
||||
#define CUSTOM_DEPTH_RED 250;
|
||||
#define CUSTOM_DEPTH_RED 250
|
||||
#define ECC_PROJECTILE ECollisionChannel::ECC_EngineTraceChannel1
|
||||
|
||||
@@ -56,10 +56,10 @@ void UAuraAbilitySystemComponent::AbilityInputTagReleased(const FGameplayTag& In
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void UAuraAbilitySystemComponent::ClientEffectApplied_Implementation(UAbilitySystemComponent* AbilitySystemComponent,
|
||||
const FGameplayEffectSpec& EffectSpec, FActiveGameplayEffectHandle ActiveEffectHandle)
|
||||
const FGameplayEffectSpec& EffectSpec, FActiveGameplayEffectHandle ActiveEffectHandle)
|
||||
{
|
||||
//GEngine->AddOnScreenDebugMessage(1,8.f, FColor::Blue,FString("Effect Applied!"));
|
||||
|
||||
FGameplayTagContainer TagContainer;
|
||||
EffectSpec.GetAllAssetTags(TagContainer);
|
||||
|
||||
@@ -84,41 +84,42 @@ void UAuraAttributeSet::PreAttributeChange(const FGameplayAttribute& Attribute,
|
||||
|
||||
void UAuraAttributeSet::SetEffectProperties(const FGameplayEffectModCallbackData& Data, FEffectProperties& Props) const
|
||||
{
|
||||
if (Data.EvaluatedData.Attribute == GetHealthAttribute())
|
||||
// Source = causer of the effect, Target = target of the effect (owner of this AS)
|
||||
|
||||
Props.EffectContextHandle = Data.EffectSpec.GetContext();
|
||||
Props.SourceASC = Props.EffectContextHandle.GetOriginalInstigatorAbilitySystemComponent();
|
||||
|
||||
if (IsValid(Props.SourceASC) && Props.SourceASC->AbilityActorInfo.IsValid() &&
|
||||
Props.SourceASC->AbilityActorInfo->AvatarActor.IsValid())
|
||||
{
|
||||
// Source = Causer of the effect, Target = target of the effect (Owner of this Attribute Set)
|
||||
Props.EffectContextHandle = Data.EffectSpec.GetContext();
|
||||
Props.SourceASC = Props.EffectContextHandle.GetOriginalInstigatorAbilitySystemComponent();
|
||||
|
||||
if (IsValid(Props.SourceASC) && Props.SourceASC->AbilityActorInfo.IsValid() && Props.SourceASC->AbilityActorInfo.IsValid())
|
||||
Props.SourceAvatarActor = Props.SourceASC->AbilityActorInfo->AvatarActor.Get();
|
||||
Props.SourceController = CastChecked<APawn>(Props.SourceAvatarActor)->GetController();
|
||||
if (Props.SourceController == nullptr && Props.SourceAvatarActor != nullptr)
|
||||
{
|
||||
Props.SourceAvatarActor = Props.SourceASC->AbilityActorInfo->AvatarActor.Get();
|
||||
Props.SourceController = Props.SourceASC->AbilityActorInfo->PlayerController.Get();
|
||||
if (Props.SourceController == nullptr && Props.SourceAvatarActor != nullptr)
|
||||
if (const APawn* Pawn = Cast<APawn>(Props.SourceAvatarActor))
|
||||
{
|
||||
if (APawn* Pawn = Cast<APawn>(Props.SourceAvatarActor))
|
||||
{
|
||||
Props.SourceController = Pawn->GetController();
|
||||
}
|
||||
}
|
||||
if (Props.SourceController)
|
||||
{
|
||||
Props.SourceCharacter = Cast<ACharacter>(Props.SourceController->GetPawn());
|
||||
Props.SourceController = Pawn->GetController();
|
||||
}
|
||||
}
|
||||
if (Props.SourceController)
|
||||
{
|
||||
ACharacter* SourceCharacter = Cast<ACharacter>(Props.SourceController->GetPawn());
|
||||
}
|
||||
}
|
||||
//Get all the target actor
|
||||
|
||||
if (Data.Target.AbilityActorInfo.IsValid() && Data.Target.AbilityActorInfo->AvatarActor.IsValid())
|
||||
{
|
||||
Props.TargetAvatarActor = Data.Target.AbilityActorInfo->AvatarActor.Get();
|
||||
Props.TargetController = Data.Target.AbilityActorInfo->PlayerController.Get();
|
||||
Props.TargetController = CastChecked<APawn>(Props.TargetAvatarActor)->GetController();
|
||||
Props.TargetCharacter = Cast<ACharacter>(Props.TargetAvatarActor);
|
||||
Props.TargetASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(Props.TargetAvatarActor);
|
||||
|
||||
//UE_LOG(LogTemp, Warning, TEXT("Target Info - Actor: %s - Controller %s - Character %s - ASC %s"),
|
||||
// *Props.TargetAvatarActor->GetName(), *Props.TargetController->GetName(), *Props.TargetCharacter->GetName(), *Props.TargetASC->GetName());
|
||||
}
|
||||
}
|
||||
|
||||
void UAuraAttributeSet::PostGameplayEffectExecute(const struct FGameplayEffectModCallbackData& Data)
|
||||
void UAuraAttributeSet::PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data)
|
||||
{
|
||||
Super::PostGameplayEffectExecute(Data);
|
||||
|
||||
@@ -127,13 +128,11 @@ void UAuraAttributeSet::PostGameplayEffectExecute(const struct FGameplayEffectMo
|
||||
|
||||
if (Data.EvaluatedData.Attribute == GetHealthAttribute())
|
||||
{
|
||||
//if the value being modified is Health
|
||||
SetHealth(FMath::Clamp(GetHealth(), 0.f, GetMaxHealth()));
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Changed Health on %s, Health: %f"), *Props.TargetAvatarActor->GetName(), GetHealth());
|
||||
}
|
||||
if (Data.EvaluatedData.Attribute == GetManaAttribute())
|
||||
{
|
||||
//If the value being modified is Mana
|
||||
SetMana(FMath::Clamp(GetMana(), 0.f, GetMaxMana()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
|
||||
#include "AuraAssetManager.h"
|
||||
|
||||
#include "AbilitySystemGlobals.h"
|
||||
#include "AuraGameplayTags.h"
|
||||
|
||||
UAuraAssetManager& UAuraAssetManager::Get()
|
||||
@@ -16,5 +18,5 @@ void UAuraAssetManager::StartInitialLoading()
|
||||
Super::StartInitialLoading();
|
||||
|
||||
FAuraGameplayTags::InitializeNativeGameplayTags();
|
||||
|
||||
UAbilitySystemGlobals::Get().InitGlobalData();
|
||||
}
|
||||
|
||||
@@ -33,18 +33,21 @@ void FAuraGameplayTags::InitializeNativeGameplayTags()
|
||||
*Input Tags
|
||||
*
|
||||
*/
|
||||
GameplayTags.Input_InputTag_LMB = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.LMB"), FString("Input Tag - Left Mouse Button"));
|
||||
GameplayTags.Input_InputTag_RMB = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.RMB"), FString("Input Tag - Right Mouse Button"));
|
||||
GameplayTags.Input_InputTag_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.1"), FString("Input Tag - Input 1"));
|
||||
GameplayTags.Input_InputTag_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.2"), FString("Input Tag - Input 2"));
|
||||
GameplayTags.Input_InputTag_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.3"), FString("Input Tag - Input 3"));
|
||||
GameplayTags.Input_InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.4"), FString("Input Tag - Input 4"));
|
||||
GameplayTags.Input_InputTag_5 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.5"), FString("Input Tag - Input 5"));
|
||||
GameplayTags.Input_InputTag_6 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.6"), FString("Input Tag - Input 6"));
|
||||
GameplayTags.Input_InputTag_7 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.7"), FString("Input Tag - Input 7"));
|
||||
GameplayTags.Input_InputTag_8 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.8"), FString("Input Tag - Input 8"));
|
||||
GameplayTags.Input_InputTag_9 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.9"), FString("Input Tag - Input 9"));
|
||||
GameplayTags.Input_InputTag_10 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.10"), FString("Input Tag - Input 10"));
|
||||
GameplayTags.Input_InputTag_LMB = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.LMB"), FString("Input Tag - Left Mouse Button"));
|
||||
GameplayTags.Input_InputTag_RMB = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.RMB"), FString("Input Tag - Right Mouse Button"));
|
||||
GameplayTags.Input_InputTag_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.1"), FString("Input Tag - Input 1"));
|
||||
GameplayTags.Input_InputTag_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.2"), FString("Input Tag - Input 2"));
|
||||
GameplayTags.Input_InputTag_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.3"), FString("Input Tag - Input 3"));
|
||||
GameplayTags.Input_InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.4"), FString("Input Tag - Input 4"));
|
||||
GameplayTags.Input_InputTag_5 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.5"), FString("Input Tag - Input 5"));
|
||||
GameplayTags.Input_InputTag_6 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.6"), FString("Input Tag - Input 6"));
|
||||
GameplayTags.Input_InputTag_7 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.7"), FString("Input Tag - Input 7"));
|
||||
GameplayTags.Input_InputTag_8 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.8"), FString("Input Tag - Input 8"));
|
||||
GameplayTags.Input_InputTag_9 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.9"), FString("Input Tag - Input 9"));
|
||||
GameplayTags.Input_InputTag_10 = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.10"), FString("Input Tag - Input 10"));
|
||||
GameplayTags.Input_InputTag_Q = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.Q"), FString("Input Tag - Input Q"));
|
||||
GameplayTags.Input_InputTag_E = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.E"), FString("Input Tag - Input E"));
|
||||
GameplayTags.Input_InputTag_Shift = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Input.InputTag.Shift"), FString("Input Tag - Input Shift"));
|
||||
|
||||
}
|
||||
|
||||
@@ -4,11 +4,17 @@
|
||||
#include "Character/AuraCharacterBase.h"
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AbilitySystem/AuraAbilitySystemComponent.h"
|
||||
#include "Aura/Aura.h"
|
||||
#include "Components/CapsuleComponent.h"
|
||||
|
||||
AAuraCharacterBase::AAuraCharacterBase()
|
||||
{
|
||||
PrimaryActorTick.bCanEverTick = false;
|
||||
|
||||
GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore); //Make it so that the Capsule for Character doesn't block the camera.
|
||||
GetCapsuleComponent()->SetGenerateOverlapEvents(false);
|
||||
GetMesh()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore); //Make it so that the Character Mesh doesn't block the Camera
|
||||
GetMesh()->SetCollisionResponseToChannel(ECC_PROJECTILE, ECR_Overlap); //
|
||||
GetMesh()->SetGenerateOverlapEvents(true);
|
||||
Weapon = CreateDefaultSubobject<USkeletalMeshComponent>("Weapon");
|
||||
Weapon->SetupAttachment(GetMesh(), FName("WeaponHandSocket"));
|
||||
Weapon->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "Character/AuraEnemy.h"
|
||||
|
||||
#include "AbilitySystem/AuraAbilitySystemComponent.h"
|
||||
@@ -10,20 +9,18 @@
|
||||
AAuraEnemy::AAuraEnemy()
|
||||
{
|
||||
GetMesh()->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block);
|
||||
|
||||
AbilitySystemComponent = CreateDefaultSubobject<UAuraAbilitySystemComponent>("AbilitySystemComponent");
|
||||
AbilitySystemComponent->SetIsReplicated(true);
|
||||
AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Minimal);
|
||||
|
||||
AttributeSet = CreateDefaultSubobject<UAuraAttributeSet>("AttributeSet");
|
||||
}
|
||||
|
||||
void AAuraEnemy::HighlightActor()
|
||||
{
|
||||
GetMesh()->SetRenderCustomDepth(true);
|
||||
GetMesh()->SetCustomDepthStencilValue(250.f);
|
||||
GetMesh()->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
|
||||
Weapon->SetRenderCustomDepth(true);
|
||||
Weapon->SetCustomDepthStencilValue(250.f);
|
||||
Weapon->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
|
||||
}
|
||||
|
||||
void AAuraEnemy::UnHighlightActor()
|
||||
@@ -49,4 +46,4 @@ void AAuraEnemy::InitAbilityActorInfo()
|
||||
Cast<UAuraAbilitySystemComponent>(AbilitySystemComponent)->AbilityActorInfoSet();
|
||||
|
||||
InitializeDefaultAttributes();
|
||||
}
|
||||
}
|
||||
@@ -64,7 +64,7 @@ void AAuraPlayerController::CursorTrace()
|
||||
void AAuraPlayerController::AbilityInputTagPressed(FGameplayTag InputTag)
|
||||
{
|
||||
//For Debug of key pressed
|
||||
GEngine->AddOnScreenDebugMessage(1, 3.f, FColor::Red, *InputTag.ToString());
|
||||
//GEngine->AddOnScreenDebugMessage(1, 3.f, FColor::Red, *InputTag.ToString());
|
||||
|
||||
//Are we targetting something?
|
||||
if (InputTag.MatchesTagExact(FAuraGameplayTags::Get().Input_InputTag_LMB))
|
||||
@@ -79,18 +79,15 @@ void AAuraPlayerController::AbilityInputTagReleased(FGameplayTag InputTag)
|
||||
{
|
||||
|
||||
//For Debug of Key Held
|
||||
GEngine->AddOnScreenDebugMessage(2, 3.f, FColor::Blue, *InputTag.ToString());
|
||||
//GEngine->AddOnScreenDebugMessage(2, 3.f, FColor::Blue, *InputTag.ToString());
|
||||
if (!InputTag.MatchesTagExact(FAuraGameplayTags::Get().Input_InputTag_LMB))
|
||||
{
|
||||
if (GetASC()) GetASC()->AbilityInputTagReleased(InputTag);
|
||||
return;
|
||||
}
|
||||
|
||||
if (bTargeting)
|
||||
{
|
||||
if (GetASC()) GetASC()->AbilityInputTagReleased(InputTag);
|
||||
}
|
||||
else
|
||||
if (GetASC()) GetASC()->AbilityInputTagReleased(InputTag);
|
||||
|
||||
if (!bTargeting && !bShiftKeyDown)
|
||||
{
|
||||
APawn* ControlledPawn = GetPawn();
|
||||
//Why no Splines?
|
||||
@@ -129,7 +126,7 @@ void AAuraPlayerController::AbilityInputTagHeld(FGameplayTag InputTag)
|
||||
if (GetASC()) GetASC()->AbilityInputTagHeld(InputTag);
|
||||
return;
|
||||
}
|
||||
if (bTargeting)
|
||||
if (bTargeting || bShiftKeyDown)
|
||||
{
|
||||
if (GetASC()) GetASC()->AbilityInputTagHeld(InputTag);
|
||||
}
|
||||
@@ -185,10 +182,13 @@ void AAuraPlayerController::SetupInputComponent()
|
||||
|
||||
UAuraInputComponent* AuraInputComponent = CastChecked<UAuraInputComponent>(InputComponent);
|
||||
AuraInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AAuraPlayerController::Move);
|
||||
|
||||
AuraInputComponent->BindAction(ShiftAction, ETriggerEvent::Started, this, &AAuraPlayerController::ShiftPressed);
|
||||
AuraInputComponent->BindAction(ShiftAction, ETriggerEvent::Completed, this, &AAuraPlayerController::ShiftReleased);
|
||||
AuraInputComponent->BindAbilityActions(InputConfig, this, &ThisClass::AbilityInputTagPressed, &ThisClass::AbilityInputTagReleased, &ThisClass::AbilityInputTagHeld);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void AAuraPlayerController::Move(const FInputActionValue& InputActionValue)
|
||||
{
|
||||
const FVector2D InputAxisVector = InputActionValue.Get<FVector2D>();
|
||||
|
||||
@@ -52,6 +52,9 @@ public:
|
||||
FGameplayTag Input_InputTag_8;
|
||||
FGameplayTag Input_InputTag_9;
|
||||
FGameplayTag Input_InputTag_10;
|
||||
FGameplayTag Input_InputTag_Q;
|
||||
FGameplayTag Input_InputTag_E;
|
||||
FGameplayTag Input_InputTag_Shift;
|
||||
|
||||
private:
|
||||
static FAuraGameplayTags GameplayTags;
|
||||
|
||||
@@ -31,9 +31,9 @@ protected:
|
||||
FName WeaponTipSocketName;
|
||||
|
||||
virtual FVector GetCombatSocketLocation() override;
|
||||
|
||||
UPROPERTY()
|
||||
TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;
|
||||
|
||||
UPROPERTY()
|
||||
TObjectPtr<UAttributeSet> AttributeSet;
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Character/AuraCharacterBase.h"
|
||||
#include "Interact/CombatInterface.h"
|
||||
#include "Interact/EnemyInterface.h"
|
||||
#include "AuraEnemy.generated.h"
|
||||
|
||||
@@ -33,6 +32,7 @@ protected:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Character Class Defaults")
|
||||
int32 Level = 1;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "CombatInterface.generated.h"
|
||||
|
||||
// This class does not need to be modified.
|
||||
UINTERFACE(MinimalAPI)
|
||||
UINTERFACE(MinimalAPI, BlueprintType)
|
||||
class UCombatInterface : public UInterface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
@@ -25,4 +25,7 @@ public:
|
||||
virtual int32 GetPlayerLevel();
|
||||
|
||||
virtual FVector GetCombatSocketLocation();
|
||||
|
||||
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
|
||||
void UpdateFacingTarget(const FVector& TargetLocation);
|
||||
};
|
||||
|
||||
@@ -37,6 +37,13 @@ private:
|
||||
|
||||
UPROPERTY(EditAnywhere, Category = "Input")
|
||||
TObjectPtr<UInputAction> MoveAction;
|
||||
|
||||
UPROPERTY(EditAnywhere, Category = "Input")
|
||||
TObjectPtr<UInputAction> ShiftAction;
|
||||
|
||||
void ShiftPressed() {bShiftKeyDown = true; }
|
||||
void ShiftReleased(){bShiftKeyDown = false; }
|
||||
bool bShiftKeyDown = false;
|
||||
|
||||
void Move(const FInputActionValue& InputActionValue);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user