Hi,
I have notices that hot-reload fails a lot in how I use it. It seems like the “GetVariable” Nodes in blueprint doesn’t refresh their types when HotReloading classes that have been changed.
To better illustrate. I have setup a class in native:
UCLASS(Blueprintable,abstract)
class DREVIL_API UEvilSkill : public UObject
{
GENERATED_BODY()
public:
UEvilSkill( const FObjectInitializer& ObjectInitializer );
UFUNCTION(BlueprintCallable,Category="Skill|Cooldown")
virtual float GetCooldown();
};
And a blueprint
Where skill is a UEvilSkill.
Then I add a member to the class:
UCLASS(Blueprintable,abstract)
class DREVIL_API UEvilSkill : public UObject
{
GENERATED_BODY()
public:
UEvilSkill( const FObjectInitializer& ObjectInitializer );
UFUNCTION(BlueprintCallable,Category="Skill|Cooldown")
virtual float GetCooldown();
UPROPERTY( EditDefaultsOnly, BlueprintReadOnly, Category = "Skill" )
float Cooldown;
};
and recompiles in MSVS. (It doesn’t matter if I add properties or functions)
When compiling the blueprint again, the “GetVariable” node will be of type: HOTRELOADED_EvilSkill0 (ie, it hasn’t updated to the new skill class) but target in GetCooldown will have been updated to EvilSkill.
I can workaround the issue by dragging out a new GetVariable node to the Skill member. But it feels like a really damper to the workflow.
This is in 4.6.1 but I verified that the issue exists in 4.7.0 too. 4.6.1 is verified in Source-code version and binary downloaded version, and 4.7.0 is only verified in binary downloaded version.