Here be an example settings class:
/** Project settings example. */
UCLASS(DefaultConfig, Config = Example)
class EXAMPLES_API UExampleSettings : public UObject
{
GENERATED_BODY()
private:
/** Blah. */
UPROPERTY(EditAnywhere, Config, NoClear, Category = Defaults, meta = (MetaClass = "SomeClass"))
FSoftClassPath DefaultSomeClass;
};
Then in an Editor Module
{
TSharedPtr<ISettingsSection> section = settingsModule->RegisterSettings(
"Project",
"Examples",
"Example",
LOCTEXT("ExampleSettings", "Example"),
LOCTEXT("ExampleSettings_Description", "Example settings."),
GetMutableDefault<UExampleSettings>());
section->OnModified().BindStatic(&UExampleSettings::OnSettingsChange);
}
It works perfectly ofcourse, it reads from the default plugin ini file, and if the default plugin.ini file does not exists it read correctly from the project/config/defaultPlugin.ini file
But… when we have a Plugin/Config/DefaultPlugin.ini file the project settings keep reading from this one, even with the overwritten ini file there
And the overwritten file does not bring the default settings as it does with Engine Plugins.
If you look at the Niagara Plugin for instance, whenever the user changes something in the settings, the engine creates the default ini file in the correct place with the default settings and the changes.
What happens to a Project Plugin is that it does indeed create the ini file in the correct place, it does indeed save the user changes, but it does not bring the default settings along. AND then again it does not even read the created file with the changes if the Plugin default file still exists.
Am i missing something? or is what i said right and its a bug? if so, is there a work around?