Add easier game or plugin settings asset usage with SettingsBase
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
#include "Engine/Content/Content.h"
|
#include "Engine/Content/Content.h"
|
||||||
#include "Engine/Content/JsonAsset.h"
|
#include "Engine/Content/JsonAsset.h"
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#include "Engine/Content/Content.h"
|
#include "Engine/Content/Content.h"
|
||||||
#include "Engine/Content/JsonAsset.h"
|
#include "Engine/Content/JsonAsset.h"
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
||||||
|
|
||||||
const Char* LinuxPlatformTools::GetDisplayName() const
|
const Char* LinuxPlatformTools::GetDisplayName() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include "Engine/Content/Content.h"
|
#include "Engine/Content/Content.h"
|
||||||
#include "Engine/Content/JsonAsset.h"
|
#include "Engine/Content/JsonAsset.h"
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
||||||
|
|
||||||
const Char* UWPPlatformTools::GetDisplayName() const
|
const Char* UWPPlatformTools::GetDisplayName() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include "Engine/Content/Content.h"
|
#include "Engine/Content/Content.h"
|
||||||
#include "Engine/Content/JsonAsset.h"
|
#include "Engine/Content/JsonAsset.h"
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
||||||
|
|
||||||
const Char* WindowsPlatformTools::GetDisplayName() const
|
const Char* WindowsPlatformTools::GetDisplayName() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,36 +37,36 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(BuildSettings, GameCooking);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(BuildSettings, GameCooking);
|
||||||
IMPLEMENT_SETTINGS_GETTER(GraphicsSettings, Graphics);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(GraphicsSettings, Graphics);
|
||||||
IMPLEMENT_SETTINGS_GETTER(LayersAndTagsSettings, LayersAndTags);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(LayersAndTagsSettings, LayersAndTags);
|
||||||
IMPLEMENT_SETTINGS_GETTER(TimeSettings, Time);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(TimeSettings, Time);
|
||||||
IMPLEMENT_SETTINGS_GETTER(AudioSettings, Audio);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(AudioSettings, Audio);
|
||||||
IMPLEMENT_SETTINGS_GETTER(PhysicsSettings, Physics);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(PhysicsSettings, Physics);
|
||||||
IMPLEMENT_SETTINGS_GETTER(InputSettings, Input);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(InputSettings, Input);
|
||||||
IMPLEMENT_SETTINGS_GETTER(StreamingSettings, Streaming);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(StreamingSettings, Streaming);
|
||||||
|
|
||||||
#if !USE_EDITOR
|
#if !USE_EDITOR
|
||||||
#if PLATFORM_WINDOWS
|
#if PLATFORM_WINDOWS
|
||||||
IMPLEMENT_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(WindowsPlatformSettings, WindowsPlatform);
|
||||||
#elif PLATFORM_UWP
|
#elif PLATFORM_UWP
|
||||||
IMPLEMENT_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform);
|
||||||
#elif PLATFORM_LINUX
|
#elif PLATFORM_LINUX
|
||||||
IMPLEMENT_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform);
|
||||||
#elif PLATFORM_PS4
|
#elif PLATFORM_PS4
|
||||||
IMPLEMENT_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform);
|
||||||
#elif PLATFORM_PS5
|
#elif PLATFORM_PS5
|
||||||
IMPLEMENT_SETTINGS_GETTER(PS5PlatformSettings, PS5Platform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(PS5PlatformSettings, PS5Platform);
|
||||||
#elif PLATFORM_XBOX_ONE
|
#elif PLATFORM_XBOX_ONE
|
||||||
IMPLEMENT_SETTINGS_GETTER(XboxOnePlatformSettings, XboxOnePlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(XboxOnePlatformSettings, XboxOnePlatform);
|
||||||
#elif PLATFORM_XBOX_SCARLETT
|
#elif PLATFORM_XBOX_SCARLETT
|
||||||
IMPLEMENT_SETTINGS_GETTER(XboxScarlettPlatformSettings, XboxScarlettPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(XboxScarlettPlatformSettings, XboxScarlettPlatform);
|
||||||
#elif PLATFORM_ANDROID
|
#elif PLATFORM_ANDROID
|
||||||
IMPLEMENT_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform);
|
||||||
#elif PLATFORM_SWITCH
|
#elif PLATFORM_SWITCH
|
||||||
IMPLEMENT_SETTINGS_GETTER(SwitchPlatformSettings, SwitchPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(SwitchPlatformSettings, SwitchPlatform);
|
||||||
#elif PLATFORM_MAC
|
#elif PLATFORM_MAC
|
||||||
IMPLEMENT_SETTINGS_GETTER(MacPlatformSettings, MacPlatform);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(MacPlatformSettings, MacPlatform);
|
||||||
#else
|
#else
|
||||||
#error Unknown platform
|
#error Unknown platform
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Abstract) class FLAXENGINE_API SettingsBase : public ISerializable
|
API_CLASS(Abstract) class FLAXENGINE_API SettingsBase : public ISerializable
|
||||||
{
|
{
|
||||||
DECLARE_SCRIPTING_TYPE_MINIMAL(SettingsBase);
|
DECLARE_SCRIPTING_TYPE_MINIMAL(SettingsBase);
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Applies the settings to the target system.
|
/// Applies the settings to the target system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -20,16 +19,18 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// [ISerializable]
|
// [ISerializable]
|
||||||
void Serialize(SerializeStream& stream, const void* otherObj) override
|
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
|
// Helper utility define for Engine settings getter implementation code
|
||||||
#define IMPLEMENT_SETTINGS_GETTER(type, field) \
|
#define IMPLEMENT_ENGINE_SETTINGS_GETTER(type, field) \
|
||||||
type* type::Get() \
|
type* type::Get() \
|
||||||
{ \
|
{ \
|
||||||
static type DefaultInstance; \
|
static type DefaultInstance; \
|
||||||
@@ -45,3 +46,28 @@ public:
|
|||||||
} \
|
} \
|
||||||
return result; \
|
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()
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace
|
|||||||
LocalizationService Instance;
|
LocalizationService Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(LocalizationSettings, Localization);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(LocalizationSettings, Localization);
|
||||||
|
|
||||||
void LocalizationSettings::Apply()
|
void LocalizationSettings::Apply()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ NavigationSettings::NavigationSettings()
|
|||||||
areaWalkable.Cost = 1;
|
areaWalkable.Cost = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SETTINGS_GETTER(NavigationSettings, Navigation);
|
IMPLEMENT_ENGINE_SETTINGS_GETTER(NavigationSettings, Navigation);
|
||||||
|
|
||||||
void NavigationSettings::Apply()
|
void NavigationSettings::Apply()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user