mirror of
https://github.com/Ed94/Cog.git
synced 2026-08-05 15:18:47 +00:00
CogSample: Better placement of the damage vfx for the poison ability
This commit is contained in:
@@ -11,4 +11,5 @@ NetIndexFirstBitSegment=16
|
|||||||
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.Poison",DevComment="")
|
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.Poison",DevComment="")
|
||||||
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.PuhBack",DevComment="")
|
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.PuhBack",DevComment="")
|
||||||
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.Shield",DevComment="")
|
+GameplayTagList=(Tag="GameplayCue.Ability.Hero1.Shield",DevComment="")
|
||||||
|
+GameplayTagList=(Tag="GameplayCue.DamageReceived.Effect",DevComment="Gameplay cue of a damage received when the damage is trigerred by an effect on the target (such as a dot effect)")
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -122,17 +122,26 @@ void UCogSampleExecCalculation_Damage::Execute_Implementation(const FGameplayEff
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UCogSampleFunctionLibrary_Damage::ExecuteDamageGameplayCue(TargetAbilitySystem, HitResult, MitigatedDamage, EffectContext, false);
|
UCogSampleFunctionLibrary_Damage::ExecuteDamageGameplayCue(TargetAbilitySystem, EffectSpec, HitResult, MitigatedDamage, EffectContext, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void UCogSampleFunctionLibrary_Damage::ExecuteDamageGameplayCue(
|
void UCogSampleFunctionLibrary_Damage::ExecuteDamageGameplayCue(
|
||||||
UCogSampleAbilitySystemComponent* TargetAbilitySystem,
|
UCogSampleAbilitySystemComponent* TargetAbilitySystem,
|
||||||
|
const FGameplayEffectSpec& EffectSpec,
|
||||||
const FHitResult& HitResult,
|
const FHitResult& HitResult,
|
||||||
float Damage,
|
float Damage,
|
||||||
const FGameplayEffectContextHandle& EffectContext,
|
const FGameplayEffectContextHandle& EffectContext,
|
||||||
bool IsPredicted)
|
bool IsPredicted)
|
||||||
{
|
{
|
||||||
|
//-----------------------------------------------------------------------------------------------------
|
||||||
|
// We check for >= 1 instead of >= 0 because we can use damage values between 0 and 1.
|
||||||
|
//-----------------------------------------------------------------------------------------------------
|
||||||
|
if (Damage == 0.0f)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ensure(TargetAbilitySystem);
|
ensure(TargetAbilitySystem);
|
||||||
if (TargetAbilitySystem == nullptr)
|
if (TargetAbilitySystem == nullptr)
|
||||||
{
|
{
|
||||||
@@ -154,27 +163,27 @@ void UCogSampleFunctionLibrary_Damage::ExecuteDamageGameplayCue(
|
|||||||
|
|
||||||
TypedContext->bGameplayCueIsPredicted = IsPredicted;
|
TypedContext->bGameplayCueIsPredicted = IsPredicted;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------
|
FGameplayCueParameters GameplayCueParameters;
|
||||||
// We check for >= 1 instead of >= 0 because we can use damage values between 0 and 1.
|
GameplayCueParameters.RawMagnitude = Damage;
|
||||||
//-----------------------------------------------------------------------------------------------------
|
GameplayCueParameters.EffectContext = EffectContext;
|
||||||
if (Damage > 0.0f)
|
GameplayCueParameters.Instigator = TypedContext->GetInstigator();
|
||||||
{
|
GameplayCueParameters.EffectCauser = TypedContext->GetEffectCauser();
|
||||||
FGameplayCueParameters GameplayCueParameters;
|
GameplayCueParameters.PhysicalMaterial = HitResult.PhysMaterial;
|
||||||
GameplayCueParameters.RawMagnitude = Damage;
|
GameplayCueParameters.Location = HitResult.Location;
|
||||||
GameplayCueParameters.EffectContext = EffectContext;
|
GameplayCueParameters.Normal = HitResult.ImpactNormal;
|
||||||
GameplayCueParameters.Instigator = TypedContext->GetInstigator();
|
|
||||||
GameplayCueParameters.EffectCauser = TypedContext->GetEffectCauser();
|
|
||||||
GameplayCueParameters.PhysicalMaterial = HitResult.PhysMaterial;
|
|
||||||
GameplayCueParameters.Location = HitResult.Location;
|
|
||||||
GameplayCueParameters.Normal = HitResult.ImpactNormal;
|
|
||||||
|
|
||||||
if (IsPredicted)
|
TArray<FGameplayTag> Tags;
|
||||||
{
|
SpecAssetTags.GetGameplayTagArray(Tags);
|
||||||
TargetAbilitySystem->ExecuteGameplayCueLocal(Tag_GameplayCue_DamageReceived, GameplayCueParameters);
|
|
||||||
}
|
FGameplayTag* FoundTag = Tags.FindByPredicate([](const FGameplayTag& Tag) { return Tag.MatchesTag(Tag_GameplayCue_DamageReceived); });
|
||||||
else
|
FGameplayTag DamageTag = FoundTag != nullptr ? *FoundTag : Tag_GameplayCue_DamageReceived;
|
||||||
{
|
|
||||||
TargetAbilitySystem->ExecuteGameplayCue(Tag_GameplayCue_DamageReceived, GameplayCueParameters);
|
if (IsPredicted)
|
||||||
}
|
{
|
||||||
|
TargetAbilitySystem->ExecuteGameplayCueLocal(DamageTag, GameplayCueParameters);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TargetAbilitySystem->ExecuteGameplayCue(DamageTag, GameplayCueParameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,7 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
static void ExecuteDamageGameplayCue(
|
static void ExecuteDamageGameplayCue(
|
||||||
UCogSampleAbilitySystemComponent* TargetAbilitySystem,
|
UCogSampleAbilitySystemComponent* TargetAbilitySystem,
|
||||||
|
const FGameplayEffectSpec& EffectSpec,
|
||||||
const FHitResult& HitResult,
|
const FHitResult& HitResult,
|
||||||
float HealthDamage,
|
float HealthDamage,
|
||||||
const FGameplayEffectContextHandle& EffectContext,
|
const FGameplayEffectContextHandle& EffectContext,
|
||||||
|
|||||||
Reference in New Issue
Block a user