RealtimeStyleTransferRuntime/Source/LyraGame/AbilitySystem/Attributes/LyraAttributeSet.h

59 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "AttributeSet.h"
#include "Delegates/Delegate.h"
#include "HAL/PlatformMisc.h"
#include "UObject/UObjectGlobals.h"
#include "LyraAttributeSet.generated.h"
class AActor;
class ULyraAbilitySystemComponent;
class UObject;
class UWorld;
struct FGameplayEffectSpec;
/**
* This macro defines a set of helper functions for accessing and initializing attributes.
*
* The following example of the macro:
* ATTRIBUTE_ACCESSORS(ULyraHealthSet, Health)
* will create the following functions:
* static FGameplayAttribute GetHealthAttribute();
* float GetHealth() const;
* void SetHealth(float NewVal);
* void InitHealth(float NewVal);
*/
#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName)
// Delegate used to broadcast attribute events.
DECLARE_MULTICAST_DELEGATE_FourParams(FLyraAttributeEvent, AActor* /*EffectInstigator*/, AActor* /*EffectCauser*/, const FGameplayEffectSpec& /*EffectSpec*/, float /*EffectMagnitude*/);
/**
* ULyraAttributeSet
*
* Base attribute set class for the project.
*/
UCLASS()
class LYRAGAME_API ULyraAttributeSet : public UAttributeSet
{
GENERATED_BODY()
public:
ULyraAttributeSet();
UWorld* GetWorld() const override;
ULyraAbilitySystemComponent* GetLyraAbilitySystemComponent() const;
};