In my case, I discovered a static function, name collision trying to bind MetasoundEngine.
In Engine\Plugins\Runtime\Metasound\Source\MetasoundEngine\Public\MetasoundSettings.h, there are two classes with UFUNCTION's of the same name.
UCLASS(Hidden)
class METASOUNDENGINE_API UMetaSoundQualityHelper : public UObject
{
GENERATED_BODY()
public:
/**
* Returns a list of quality settings to present to a combobox
* */
UFUNCTION(meta = (DeprecatedFunction, DeprecationMessage = "Use UMetaSoundSettings::GetQualityNames instead"))
static TArray<FName> GetQualityNames() { return { }; };
};
UCLASS(config = MetaSound, defaultconfig, meta = (DisplayName = "MetaSounds"))
class METASOUNDENGINE_API UMetaSoundSettings : public UDeveloperSettings
{
...
/* Returns an array of quality setting names. Can be used to present to a combobox. Ex:
* UPROPERTY(... meta=(GetOptions="MetasoundEngine.MetaSoundSettings.GetQualityNames"))
* FName QualitySetting;
*/
UFUNCTION()
static TArray<FName> GetQualityNames();
...
}
In this case one of the functions is deprecated, and there was another place where I got a collision but I didn't record where that happened. It'll probably happen quite a few times in the engine.
In the Nim generated bindings static functions aren't qualified. We need a way to deal with them automatically, e.g. log or display a message if there's a collision, modify the name of static functions to include the class name if they're in the same module, or resort to manual bindings so they can be renamed.
In my case, I discovered a static function, name collision trying to bind
MetasoundEngine.In
Engine\Plugins\Runtime\Metasound\Source\MetasoundEngine\Public\MetasoundSettings.h, there are two classes with UFUNCTION's of the same name.In this case one of the functions is deprecated, and there was another place where I got a collision but I didn't record where that happened. It'll probably happen quite a few times in the engine.
In the Nim generated bindings static functions aren't qualified. We need a way to deal with them automatically, e.g. log or display a message if there's a collision, modify the name of static functions to include the class name if they're in the same module, or resort to manual bindings so they can be renamed.