From cea1a6774910e82d9ae4f26859367d6f351bfba5 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 21 Dec 2020 14:53:27 +0100 Subject: [PATCH] Refactor game settings to support using API bindings --- .gitmodules | 6 ++++++ Source/Engine/Audio/AudioSettings.h | 6 +++--- Source/Engine/Core/Config/BuildSettings.h | 5 ++--- Source/Engine/Core/Config/GameSettings.cpp | 2 +- Source/Engine/Core/Config/GraphicsSettings.h | 5 ++--- .../Engine/Core/Config/LayersTagsSettings.h | 5 ++--- Source/Engine/Core/Config/Settings.h | 20 +++++++++---------- Source/Engine/Core/Config/TimeSettings.h | 5 ++--- Source/Engine/Input/InputSettings.h | 6 +++--- Source/Engine/Navigation/NavigationSettings.h | 2 +- Source/Engine/Physics/PhysicsSettings.h | 6 +++--- .../Android/AndroidPlatformSettings.h | 6 +++--- .../Platform/Linux/LinuxPlatformSettings.h | 6 +++--- .../Engine/Platform/UWP/UWPPlatformSettings.h | 6 +++--- .../Windows/WindowsPlatformSettings.h | 6 +++--- Source/Platforms/PS4 | 1 + Source/Platforms/XboxScarlett | 1 + 17 files changed, 49 insertions(+), 45 deletions(-) create mode 160000 Source/Platforms/PS4 create mode 160000 Source/Platforms/XboxScarlett diff --git a/.gitmodules b/.gitmodules index e69de29bb..36d11c4bd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "Source/Platforms/PS4"] + path = Source/Platforms/PS4 + url = https://gitlab.flaxengine.com/flax/flaxengine-ps4.git +[submodule "Source/Platforms/XboxScarlett"] + path = Source/Platforms/XboxScarlett + url = https://gitlab.flaxengine.com/flax/flaxengine-xboxscarlett.git diff --git a/Source/Engine/Audio/AudioSettings.h b/Source/Engine/Audio/AudioSettings.h index 388e901b5..c8850adda 100644 --- a/Source/Engine/Audio/AudioSettings.h +++ b/Source/Engine/Audio/AudioSettings.h @@ -8,8 +8,8 @@ /// /// Audio settings container. /// -/// -class AudioSettings : public Settings +/// +class AudioSettings : public SettingsBase { public: @@ -30,7 +30,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { DisableAudio = false; diff --git a/Source/Engine/Core/Config/BuildSettings.h b/Source/Engine/Core/Config/BuildSettings.h index 26bf13d61..253ab5c7a 100644 --- a/Source/Engine/Core/Config/BuildSettings.h +++ b/Source/Engine/Core/Config/BuildSettings.h @@ -10,8 +10,7 @@ /// /// The game building rendering settings. /// -/// -class BuildSettings : public Settings +class BuildSettings : public SettingsBase { public: @@ -62,7 +61,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { MaxAssetsPerPackage = 1024; diff --git a/Source/Engine/Core/Config/GameSettings.cpp b/Source/Engine/Core/Config/GameSettings.cpp index b87c380aa..ea4fef45f 100644 --- a/Source/Engine/Core/Config/GameSettings.cpp +++ b/Source/Engine/Core/Config/GameSettings.cpp @@ -28,7 +28,7 @@ bool GameSettings::NoSplashScreen = false; Guid GameSettings::SplashScreen; Dictionary GameSettings::CustomSettings; -Array SettingsBase::Containers(32); +Array Settings::Containers(32); #if USE_EDITOR extern void LoadPlatformSettingsEditor(ISerializable::DeserializeStream& data); diff --git a/Source/Engine/Core/Config/GraphicsSettings.h b/Source/Engine/Core/Config/GraphicsSettings.h index 2efd08eac..79f0b23c5 100644 --- a/Source/Engine/Core/Config/GraphicsSettings.h +++ b/Source/Engine/Core/Config/GraphicsSettings.h @@ -9,8 +9,7 @@ /// /// Graphics rendering settings. /// -/// -class GraphicsSettings : public Settings +class GraphicsSettings : public SettingsBase { public: @@ -56,7 +55,7 @@ public: public: - // [Settings] + // [SettingsBase] void Apply() override; void RestoreDefault() final override diff --git a/Source/Engine/Core/Config/LayersTagsSettings.h b/Source/Engine/Core/Config/LayersTagsSettings.h index 161302d49..db7292676 100644 --- a/Source/Engine/Core/Config/LayersTagsSettings.h +++ b/Source/Engine/Core/Config/LayersTagsSettings.h @@ -7,8 +7,7 @@ /// /// Layers and objects tags settings. /// -/// -class LayersAndTagsSettings : public Settings +class LayersAndTagsSettings : public SettingsBase { public: @@ -54,7 +53,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() override { Tags.Clear(); diff --git a/Source/Engine/Core/Config/Settings.h b/Source/Engine/Core/Config/Settings.h index 6400a43a7..4d12788ba 100644 --- a/Source/Engine/Core/Config/Settings.h +++ b/Source/Engine/Core/Config/Settings.h @@ -7,16 +7,16 @@ #include "Engine/Serialization/ISerializable.h" /// -/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to c#. +/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to engine/game. /// -class SettingsBase +class FLAXENGINE_API Settings { public: /// /// The settings containers. /// - static Array Containers; + static Array Containers; /// /// Restores the default settings for all the registered containers. @@ -30,19 +30,19 @@ public: private: // Disable copy/move - SettingsBase(const SettingsBase&) = delete; - SettingsBase& operator=(const SettingsBase&) = delete; + Settings(const Settings&) = delete; + Settings& operator=(const Settings&) = delete; protected: - SettingsBase() + Settings() { Containers.Add(this); } public: - virtual ~SettingsBase() = default; + virtual ~Settings() = default; public: @@ -69,14 +69,14 @@ public: }; /// -/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to c#. +/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to engine/game. /// template -class Settings : public SettingsBase, public Singleton +class SettingsBase : public Settings, public Singleton { protected: - Settings() + SettingsBase() { } }; diff --git a/Source/Engine/Core/Config/TimeSettings.h b/Source/Engine/Core/Config/TimeSettings.h index 385cbad7e..c020bea09 100644 --- a/Source/Engine/Core/Config/TimeSettings.h +++ b/Source/Engine/Core/Config/TimeSettings.h @@ -8,8 +8,7 @@ /// /// Time and game simulation settings container. /// -/// -class TimeSettings : public Settings +class TimeSettings : public SettingsBase { public: @@ -40,7 +39,7 @@ public: public: - // [Settings] + // [SettingsBase] void Apply() override; void RestoreDefault() override diff --git a/Source/Engine/Input/InputSettings.h b/Source/Engine/Input/InputSettings.h index 7fc7d64a0..20b87943d 100644 --- a/Source/Engine/Input/InputSettings.h +++ b/Source/Engine/Input/InputSettings.h @@ -10,8 +10,8 @@ /// /// Input settings container. /// -/// -class InputSettings : public Settings +/// +class InputSettings : public SettingsBase { public: @@ -27,7 +27,7 @@ public: public: - // [Settings] + // [SettingsBase] void Apply() override { Input::ActionMappings = ActionMappings; diff --git a/Source/Engine/Navigation/NavigationSettings.h b/Source/Engine/Navigation/NavigationSettings.h index 86abac470..8ae98266d 100644 --- a/Source/Engine/Navigation/NavigationSettings.h +++ b/Source/Engine/Navigation/NavigationSettings.h @@ -82,7 +82,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { CellHeight = 10.0f; diff --git a/Source/Engine/Physics/PhysicsSettings.h b/Source/Engine/Physics/PhysicsSettings.h index 58f89feab..2ffd2307b 100644 --- a/Source/Engine/Physics/PhysicsSettings.h +++ b/Source/Engine/Physics/PhysicsSettings.h @@ -25,8 +25,8 @@ /// /// Physics simulation settings container. /// -/// -class PhysicsSettings : public Settings +/// +class PhysicsSettings : public SettingsBase { public: @@ -115,7 +115,7 @@ public: public: - // [Settings] + // [SettingsBase] void Apply() override; void RestoreDefault() override; void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override; diff --git a/Source/Engine/Platform/Android/AndroidPlatformSettings.h b/Source/Engine/Platform/Android/AndroidPlatformSettings.h index 3a1c1f736..061368486 100644 --- a/Source/Engine/Platform/Android/AndroidPlatformSettings.h +++ b/Source/Engine/Platform/Android/AndroidPlatformSettings.h @@ -9,8 +9,8 @@ /// /// Android platform settings. /// -/// -class AndroidPlatformSettings : public Settings +/// +class AndroidPlatformSettings : public SettingsBase { public: @@ -36,7 +36,7 @@ public: RestoreDefault(); } - // [Settings] + // [SettingsBase] void RestoreDefault() final override { PackageName = TEXT("com.${COMPANY_NAME}.${PROJECT_NAME}"); diff --git a/Source/Engine/Platform/Linux/LinuxPlatformSettings.h b/Source/Engine/Platform/Linux/LinuxPlatformSettings.h index eb8230da7..6086ae9f5 100644 --- a/Source/Engine/Platform/Linux/LinuxPlatformSettings.h +++ b/Source/Engine/Platform/Linux/LinuxPlatformSettings.h @@ -9,8 +9,8 @@ /// /// Linux platform settings. /// -/// -class LinuxPlatformSettings : public Settings +/// +class LinuxPlatformSettings : public SettingsBase { public: @@ -56,7 +56,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { WindowMode = GameWindowMode::Windowed; diff --git a/Source/Engine/Platform/UWP/UWPPlatformSettings.h b/Source/Engine/Platform/UWP/UWPPlatformSettings.h index 0d5baa958..adc1469a4 100644 --- a/Source/Engine/Platform/UWP/UWPPlatformSettings.h +++ b/Source/Engine/Platform/UWP/UWPPlatformSettings.h @@ -9,8 +9,8 @@ /// /// Universal Windows Platform settings. /// -/// -class UWPPlatformSettings : public Settings +/// +class UWPPlatformSettings : public SettingsBase { public: @@ -95,7 +95,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { PreferredLaunchWindowingMode = WindowMode::FullScreen; diff --git a/Source/Engine/Platform/Windows/WindowsPlatformSettings.h b/Source/Engine/Platform/Windows/WindowsPlatformSettings.h index 2c1ca3ce4..3e163066e 100644 --- a/Source/Engine/Platform/Windows/WindowsPlatformSettings.h +++ b/Source/Engine/Platform/Windows/WindowsPlatformSettings.h @@ -9,8 +9,8 @@ /// /// Windows platform settings. /// -/// -class WindowsPlatformSettings : public Settings +/// +class WindowsPlatformSettings : public SettingsBase { public: @@ -71,7 +71,7 @@ public: public: - // [Settings] + // [SettingsBase] void RestoreDefault() final override { WindowMode = GameWindowMode::Windowed; diff --git a/Source/Platforms/PS4 b/Source/Platforms/PS4 new file mode 160000 index 000000000..b9e29ede6 --- /dev/null +++ b/Source/Platforms/PS4 @@ -0,0 +1 @@ +Subproject commit b9e29ede69d31f93cbdd012d6e6c4ad8120dc7c0 diff --git a/Source/Platforms/XboxScarlett b/Source/Platforms/XboxScarlett new file mode 160000 index 000000000..7691bbaf2 --- /dev/null +++ b/Source/Platforms/XboxScarlett @@ -0,0 +1 @@ +Subproject commit 7691bbaf2a7e47459d9fb18fd1a8833cdbd7517a