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