|
UENUM(BlueprintType, meta = (Bitflags)) |
|
enum class EHorizonPlayerSortType : uint8 |
|
{ |
|
Invalidated = 0, |
|
LevelUMETA(DisplayName = "PlayerLevel"), |
|
PowerUMETA(DisplayName = "Power"), |
|
SpeedUMETA(DisplayName = "Speed"), |
|
PlaceHolder1 UMETA(DisplayName = "PlaceHolder1"), |
|
PlaceHolder2UMETA(DisplayName = "PlaceHolder2"), |
|
PlaceHolder3UMETA(DisplayName = "PlaceHolder3"), |
|
PlaceHolder4UMETA(DisplayName = "PlaceHolder4"), |
|
}; |
|
|
|
ENUM_CLASS_FLAGS(EHorizonPlayerSortType) |
|
|
|
|
|
USTRUCT(BlueprintType) |
|
struct HORIZONTWEEN_API FHorizonPlayerParameters |
|
{ |
|
GENERATED_BODY() |
|
FHorizonPlayerParameters() |
|
: PlayerSortTypeFlags((int)EHorizonPlayerSortType::Level) |
|
{ |
|
} |
|
public: |
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Bitmask, BitmaskEnum = "EHorizonPlayerSortType")) |
|
int PlayerSortTypeFlags; |
|
}; |
|
|
|
|
|
|
|
bool HasFlag(const INT32& Flags, EHorizonPlayerSortType TestFlag) |
|
{ |
|
INT32 bitFlag = static_cast<int32>(1 << (INT32)TestFlag); //shift to the bit corresponding to the enum value |
|
return (Flags & bitFlag ) != 0; |
|
} |
|
|
|
void Usage(const FHorizonPlayerParameters& param){ |
|
INT32 bitFlag = static_cast<int32>((1 << (INT32)EHorizonPlayerSortType::Level) | |
|
(1 << (INT32)EHorizonPlayerSortType::Speed)); // 10 |
|
bool b1 = HasFlag(param.PlayerSortTypeFlags, EHorizonPlayerSortType::Level); //true |
|
bool b2 = HasFlag(param.PlayerSortTypeFlags, EHorizonPlayerSortType::Power); //false |
|
bool b3 = HasFlag(param.PlayerSortTypeFlags, EHorizonPlayerSortType::Speed); //true |
|
} |