I’ve found a work-around by elliminating all the explicit values and removing the “None” enumeration. X, Y, and Z take the expected values when this is the case.
UENUM(BlueprintType)
enum class EMovementTrackingFlags : uint8
{
X,
Y,
Z
};
ENUM_CLASS_FLAGS(EMovementTrackingFlags);
This necessitates work-arounds in order to evaluate the flags.
bool UTargetTrackingComponent::IsMovementFlagged(EMovementTrackingFlags testTrackingFlag)
{
EMovementTrackingFlags flagValue = (EMovementTrackingFlags)movementTrackingFlags;
return ((flagValue & testTrackingFlag) != (EMovementTrackingFlags) 0 );
}
and…
movementTrackingFlags != 0
This is in direct contradiction to the code indicated on the Unreal Code Standards page, E.G:
enum class EFlags
{
None = 0x00,
Flag1 = 0x01,
Flag2 = 0x02,
Flag3 = 0x04
};
ENUM_CLASS_FLAGS(EFlags)
As well as…
if (Flags & EFlags::Flag1)
This causes my code to behave and appear in editor as expected. However, I am leaving this thread open should staff weigh in on this.