사용자 정의 객체를 TMap 컨테이너의 Key로 사용하려면, 등호 연산자 오버라이드 및 GetTypeHash 함수 오버로딩이 필요하다.
자세한 설명은 에픽 게임즈 튜토리얼에 나와 있다.
#include "Misc/Crc.h"
USTRUCT(BlueprintType)
struct FObjectID
{
GENERATED_BODY()
public:
uint64 ContentsID;
uint64 DatabaseID;
FObjectID()
: ContentsID(0), DatabaseID(0) {}
FObjectID(uint64 InContentsID, uint64 InDatabaseID)
: ContentsID(InContentsID), DatabaseID(InDatabaseID) {}
FObjectID(const FObjectID& InObjectID)
: ContentsID(InObjectID.ContentsID), DatabaseID(InObjectID.DatabaseID) {}
bool operator==(const FObjectID& InObjectID) const
{
return ContentsID == InObjectID.ContentsID && DatabaseID == InObjectID.DatabaseID;
}
};
FORCEINLINE uint32 GetTypeHash(const FObjectID& InObjectID)
{
uint32 Hash = FCrc::MemCrc32(&InObjectID, sizeof(FObjectID));
return Hash;
}