Add easier game or plugin settings asset usage with SettingsBase
This commit is contained in:
@@ -37,36 +37,36 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_SETTINGS_GETTER(BuildSettings, GameCooking);
|
||||
IMPLEMENT_SETTINGS_GETTER(GraphicsSettings, Graphics);
|
||||
IMPLEMENT_SETTINGS_GETTER(LayersAndTagsSettings, LayersAndTags);
|
||||
IMPLEMENT_SETTINGS_GETTER(TimeSettings, Time);
|
||||
IMPLEMENT_SETTINGS_GETTER(AudioSettings, Audio);
|
||||
IMPLEMENT_SETTINGS_GETTER(PhysicsSettings, Physics);
|
||||
IMPLEMENT_SETTINGS_GETTER(InputSettings, Input);
|
||||
IMPLEMENT_SETTINGS_GETTER(StreamingSettings, Streaming);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(BuildSettings, GameCooking);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(GraphicsSettings, Graphics);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(LayersAndTagsSettings, LayersAndTags);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(TimeSettings, Time);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(AudioSettings, Audio);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(PhysicsSettings, Physics);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(InputSettings, Input);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(StreamingSettings, Streaming);
|
||||
|
||||
#if !USE_EDITOR
|
||||
#if PLATFORM_WINDOWS
|
||||
IMPLEMENT_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
||||
#elif PLATFORM_UWP
|
||||
IMPLEMENT_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
||||
#elif PLATFORM_LINUX
|
||||
IMPLEMENT_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
||||
#elif PLATFORM_PS4
|
||||
IMPLEMENT_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform);
|
||||
#elif PLATFORM_PS5
|
||||
IMPLEMENT_SETTINGS_GETTER(PS5PlatformSettings, PS5Platform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(PS5PlatformSettings, PS5Platform);
|
||||
#elif PLATFORM_XBOX_ONE
|
||||
IMPLEMENT_SETTINGS_GETTER(XboxOnePlatformSettings, XboxOnePlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(XboxOnePlatformSettings, XboxOnePlatform);
|
||||
#elif PLATFORM_XBOX_SCARLETT
|
||||
IMPLEMENT_SETTINGS_GETTER(XboxScarlettPlatformSettings, XboxScarlettPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(XboxScarlettPlatformSettings, XboxScarlettPlatform);
|
||||
#elif PLATFORM_ANDROID
|
||||
IMPLEMENT_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
||||
#elif PLATFORM_SWITCH
|
||||
IMPLEMENT_SETTINGS_GETTER(SwitchPlatformSettings, SwitchPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(SwitchPlatformSettings, SwitchPlatform);
|
||||
#elif PLATFORM_MAC
|
||||
IMPLEMENT_SETTINGS_GETTER(MacPlatformSettings, MacPlatform);
|
||||
IMPLEMENT_ENGINE_SETTINGS_GETTER(MacPlatformSettings, MacPlatform);
|
||||
#else
|
||||
#error Unknown platform
|
||||
#endif
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
/// </summary>
|
||||
API_CLASS(Abstract) class FLAXENGINE_API SettingsBase : public ISerializable
|
||||
{
|
||||
DECLARE_SCRIPTING_TYPE_MINIMAL(SettingsBase);
|
||||
DECLARE_SCRIPTING_TYPE_MINIMAL(SettingsBase);
|
||||
public:
|
||||
|
||||
/// <summary>
|
||||
/// Applies the settings to the target system.
|
||||
/// </summary>
|
||||
@@ -20,16 +19,18 @@ public:
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
// [ISerializable]
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override
|
||||
{
|
||||
// Not supported (Editor C# edits settings data)
|
||||
}
|
||||
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// Helper utility define for settings getter implementation code
|
||||
#define IMPLEMENT_SETTINGS_GETTER(type, field) \
|
||||
// Helper utility define for Engine settings getter implementation code
|
||||
#define IMPLEMENT_ENGINE_SETTINGS_GETTER(type, field) \
|
||||
type* type::Get() \
|
||||
{ \
|
||||
static type DefaultInstance; \
|
||||
@@ -45,3 +46,28 @@ public:
|
||||
} \
|
||||
return result; \
|
||||
}
|
||||
|
||||
// [Deprecated on 20.01.2022, expires on 20.01.2024]
|
||||
#define IMPLEMENT_SETTINGS_GETTER(type, field) IMPLEMENT_ENGINE_SETTINGS_GETTER(type, field)
|
||||
|
||||
// Helper utility define for Game settings getter implementation code
|
||||
#define IMPLEMENT_GAME_SETTINGS_GETTER(type, name) \
|
||||
type* type::Get() \
|
||||
{ \
|
||||
static type DefaultInstance; \
|
||||
type* result = &DefaultInstance; \
|
||||
const auto gameSettings = GameSettings::Get(); \
|
||||
if (gameSettings) \
|
||||
{ \
|
||||
Guid assetId = Guid::Empty; \
|
||||
gameSettings->CustomSettings.TryGet(TEXT(name), assetId); \
|
||||
const auto asset = Content::Load<JsonAsset>(assetId); \
|
||||
if (asset && asset->Instance && asset->InstanceType == type::TypeInitializer) \
|
||||
{ \
|
||||
result = static_cast<type*>(asset->Instance); \
|
||||
} \
|
||||
} \
|
||||
return result; \
|
||||
}
|
||||
|
||||
#define DECLARE_SETTINGS_GETTER(type) static type* Get()
|
||||
|
||||
Reference in New Issue
Block a user