You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rnx #rb none #ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902 #ROBOMERGE-BOT: (v613-10869866) [CL 10870584 by ryan durand in Main branch]
89 lines
1.9 KiB
C++
89 lines
1.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
#include "ToolMenuOwner.generated.h"
|
|
|
|
|
|
USTRUCT(BlueprintType, meta=(HasNativeBreak="ToolMenus.ToolMenuEntryExtensions.BreakToolMenuOwner", HasNativeMake="ToolMenus.ToolMenuEntryExtensions.MakeToolMenuOwner"))
|
|
struct TOOLMENUS_API FToolMenuOwner
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
private:
|
|
struct FStoreName
|
|
{
|
|
int32 Index;
|
|
int32 Number;
|
|
};
|
|
|
|
enum class EValueType : uint8
|
|
{
|
|
None,
|
|
Pointer,
|
|
Name
|
|
};
|
|
|
|
public:
|
|
FORCEINLINE FToolMenuOwner() : ValueInt64(0), ValueType(EValueType::None) {}
|
|
FORCEINLINE FToolMenuOwner(void* InPointer) : ValueInt64(reinterpret_cast<int64>(InPointer)), ValueType(EValueType::Pointer) {}
|
|
|
|
FToolMenuOwner(const WIDECHAR* InValue) : FToolMenuOwner(FName(InValue)) {}
|
|
FToolMenuOwner(const ANSICHAR* InValue) : FToolMenuOwner(FName(InValue)) {}
|
|
|
|
FToolMenuOwner(const FName InValue)
|
|
{
|
|
if (InValue == NAME_None)
|
|
{
|
|
ValueInt64 = 0;
|
|
ValueType = EValueType::None;
|
|
}
|
|
else
|
|
{
|
|
ValueName.Index = InValue.GetComparisonIndex().ToUnstableInt();
|
|
ValueName.Number = InValue.GetNumber();
|
|
ValueType = EValueType::Name;
|
|
}
|
|
}
|
|
|
|
FORCEINLINE bool operator==(const FToolMenuOwner& Other) const
|
|
{
|
|
return Other.ValueInt64 == ValueInt64 && Other.ValueType == ValueType;
|
|
}
|
|
|
|
FORCEINLINE bool operator!=(const FToolMenuOwner& Other) const
|
|
{
|
|
return Other.ValueInt64 != ValueInt64 || Other.ValueType != ValueType;
|
|
}
|
|
|
|
friend uint32 GetTypeHash(const FToolMenuOwner& Key)
|
|
{
|
|
return GetTypeHash(Key.ValueInt64);
|
|
}
|
|
|
|
FORCEINLINE bool IsSet() const { return ValueInt64 != 0; }
|
|
|
|
FName TryGetName() const
|
|
{
|
|
if (ValueType == EValueType::Name)
|
|
{
|
|
const FNameEntryId EntryId = FNameEntryId::FromUnstableInt(ValueName.Index);
|
|
return FName(EntryId, EntryId, ValueName.Number);
|
|
}
|
|
|
|
return NAME_None;
|
|
}
|
|
|
|
private:
|
|
|
|
union
|
|
{
|
|
int64 ValueInt64;
|
|
FStoreName ValueName;
|
|
};
|
|
|
|
EValueType ValueType;
|
|
};
|