Enum values not update until editor restart

Hi,

I think I’ve found bug in 4.9.2. Changes mede to UENUM are not getting reflected in editor until restart:

repro:

  1. Create blank C++ project out of “blank” template.

  2. Fire VS and go to [projectName]GameMode.h file.

  3. Add this code before class definition:

    UENUM(BlueprintType) //“BlueprintType” is essential to include
    enum class EUnitStatistic : uint8
    {
    HEALTH UMETA(DisplayName = “Health”),
    ACTION_POINTS UMETA(DisplayName = “ActionPoints”),
    };

  4. Recompile and Hot Reload

  5. Go to editor, create empty blueprint class, inherit it from actor

  6. Open this blueprint, add local variable of type EUnitStatistic. Note that it has two values “Health” and “ActionPoint”. Up til now everything is ok.

  7. Update enum by adding new statistic:

    aaaa UMETA(DisplayName = “aaaa”),

  8. Compile, hot reload

  9. Go to editor and exammine variable created in point 6. Try to change its value to aaaa. The variable is not present. Error.

  10. Restart editor. Now value is present.

P.S. My newlines after each point somehow (again) are disappearing.

cheers

Hey-

I’ve entered a bug report for this issue (UE-22059) for further investigation.

Cheers

This bug still exists - or I hit another one. Re-compiling everything, closing the editor - as mentioned in the bug - does not work. I have a situation where I had a test enum defined which was then removed from the code. After several re-compilations and an editor restart later, it used that old enum definition even though it is no longer within the compiled code. Very strange. Enums are not functioning at the moment. (Version 4.18.3)

Maybe another bug, maybe the same. What I found is that the *.generated.h does not include a correct declaration/definition of the corresponding declaration/definition in the users header file.

In my example below a simple enum type is declared/defined within Test1.h. This enum is used within a struct so it can be edited from within the editor. At the very end of the Test1.generated.h is the generated enum stuff, but instead of the 4 defined types within the enum, only 3 are there.

If I add the missing entry manually and re-compile, it shows up in the editor. But when trying to select an item in the list, the editors log shows:

LogClass: Warning: In asset 'None', there is an enum property of type 'HOTRELOADED_EMyEnumItem_0' with an invalid value of 'OE_Entry1'

Test1.h

UENUM(BlueprintType)
enum class EMyEnumItem : uint8
{
	OE_Entry1 UMETA(DisplayName = "Entry1"),
	OE_Entry2 UMETA(DisplayName = "Entry2"),
	OE_Entry3 UMETA(DisplayName = "Entry3"),
	OE_Entry4 UMETA(DisplayName = "Entry4")
};

USTRUCT(BlueprintType)
struct FTestStruct
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test")
	EMyEnumItem selectedEnum;
};

Test1.generated.h

#define CURRENT_FILE_ID <somestuff>_<EnumsDefinition>_h

#define FOREACH_ENUM_EMyEnumItem(op) \
	op(EMyEnumItem::OE_Entry1) \
	op(EMyEnumItem::OE_Entry2) \
	op(EMyEnumItem::OE_Entry3) 
	!! <<<--- MISSING --- >>> !!
PRAGMA_ENABLE_DEPRECATION_WARNINGS

End of July, 2018. Still a problem in UE4.20

still a problem in 4.25