futurelabunseen / A-SeunghyunHong

0 stars 1 forks source link

[Bug] Using Structure for TMap's Key #3

Open strurao opened 2 months ago

strurao commented 2 months ago

Hash함수, 연산자 오버로드를 꼭 해줘야 합니다

USTRUCT(BlueprintType)
struct FHeroSkillKey
{
    GENERATED_BODY()

    UPROPERTY()
    EHeroType HeroType;

    UPROPERTY()
    ECharacterSkills SkillType;

    FHeroSkillKey() : HeroType(EHeroType::None), SkillType(ECharacterSkills::None) {}
    FHeroSkillKey(EHeroType InHeroType, ECharacterSkills InSkillType)
        : HeroType(InHeroType), SkillType(InSkillType) {}

    friend uint32 GetTypeHash(const FHeroSkillKey& Key)
    {
        uint32 HashCode = 0;
        HashCode = HashCombine(HashCode, GetTypeHash(Key.HeroType));
        HashCode = HashCombine(HashCode, GetTypeHash(Key.SkillType));
        return HashCode;
    }

    bool operator==(const FHeroSkillKey& Other) const
    {
        return HeroType == Other.HeroType && SkillType == Other.SkillType;
    }

    bool operator!=(const FHeroSkillKey& Other) const
    {
        return !(*this == Other);
    }
};

참고 자료