Files
2025-05-18 13:04:45 +08:00

45 lines
1.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ActiveGameplayEffectHandle.h"
#include "AbilitySystemComponent.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(ActiveGameplayEffectHandle)
namespace GlobalActiveGameplayEffectHandles
{
static TMap<FActiveGameplayEffectHandle, TWeakObjectPtr<UAbilitySystemComponent>> Map;
}
void FActiveGameplayEffectHandle::ResetGlobalHandleMap()
{
GlobalActiveGameplayEffectHandles::Map.Reset();
}
FActiveGameplayEffectHandle FActiveGameplayEffectHandle::GenerateNewHandle(UAbilitySystemComponent* OwningComponent)
{
static int32 GHandleID=0;
FActiveGameplayEffectHandle NewHandle(GHandleID++);
TWeakObjectPtr<UAbilitySystemComponent> WeakPtr(OwningComponent);
GlobalActiveGameplayEffectHandles::Map.Add(NewHandle, WeakPtr);
return NewHandle;
}
UAbilitySystemComponent* FActiveGameplayEffectHandle::GetOwningAbilitySystemComponent() const
{
TWeakObjectPtr<UAbilitySystemComponent>* Ptr = GlobalActiveGameplayEffectHandles::Map.Find(*this);
if (Ptr)
{
return Ptr->Get();
}
return nullptr;
}
void FActiveGameplayEffectHandle::RemoveFromGlobalMap()
{
GlobalActiveGameplayEffectHandles::Map.Remove(*this);
}