From eaafb72ca935d090e9d23ed289e1a904dd848dea Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 13 Nov 2023 23:54:07 +0100 Subject: [PATCH] Optimize some includes and use automatic serializers for platform settings --- .../Engine/Core/Config/PlatformSettingsBase.h | 2 +- .../Engine/Graphics/Materials/MaterialInfo.h | 1 - .../DirectX/DX11/GPUDeviceDX11.h | 1 + .../DirectX/DX12/GPUPipelineStateDX12.h | 1 + .../Android/AndroidPlatformSettings.h | 17 +++---------- .../Platform/Apple/ApplePlatformSettings.h | 9 +------ .../Engine/Platform/GDK/GDKPlatformSettings.h | 25 ++----------------- .../Platform/Linux/LinuxPlatformSettings.h | 19 ++------------ .../Engine/Platform/Mac/MacPlatformSettings.h | 13 +--------- .../Engine/Platform/UWP/UWPPlatformSettings.h | 18 ++----------- .../Windows/WindowsPlatformSettings.h | 22 ++-------------- .../Engine/Platform/iOS/iOSPlatformSettings.h | 12 +-------- Source/Engine/Serialization/Serialization.h | 1 + .../Engine/Serialization/SerializationFwd.h | 3 ++- 14 files changed, 20 insertions(+), 124 deletions(-) diff --git a/Source/Engine/Core/Config/PlatformSettingsBase.h b/Source/Engine/Core/Config/PlatformSettingsBase.h index 6d7e8601e..b372e3dd5 100644 --- a/Source/Engine/Core/Config/PlatformSettingsBase.h +++ b/Source/Engine/Core/Config/PlatformSettingsBase.h @@ -3,7 +3,7 @@ #pragma once #include "Engine/Core/Config/Settings.h" -#include "Engine/Serialization/Serialization.h" +#include "Engine/Serialization/SerializationFwd.h" /// /// Specifies the display mode of a game window. diff --git a/Source/Engine/Graphics/Materials/MaterialInfo.h b/Source/Engine/Graphics/Materials/MaterialInfo.h index 8e4933150..afa23a6cc 100644 --- a/Source/Engine/Graphics/Materials/MaterialInfo.h +++ b/Source/Engine/Graphics/Materials/MaterialInfo.h @@ -3,7 +3,6 @@ #pragma once #include "../Enums.h" -#include "Engine/Core/Math/Math.h" /// /// Material domain type. Material domain defines the target usage of the material shader. diff --git a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.h b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.h index 6205a628d..c0e0d8fd5 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.h +++ b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.h @@ -4,6 +4,7 @@ #include "Engine/Graphics/GPUDevice.h" #include "Engine/Graphics/GPUResource.h" +#include "Engine/Core/Collections/Dictionary.h" #include "../GPUDeviceDX.h" #include "../IncludeDirectXHeaders.h" diff --git a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.h b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.h index 2764ce235..27aba0c4b 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.h +++ b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.h @@ -7,6 +7,7 @@ #include "Engine/Graphics/GPUPipelineState.h" #include "GPUDeviceDX12.h" #include "Types.h" +#include "Engine/Core/Collections/Dictionary.h" #include "../IncludeDirectXHeaders.h" class GPUTextureViewDX12; diff --git a/Source/Engine/Platform/Android/AndroidPlatformSettings.h b/Source/Engine/Platform/Android/AndroidPlatformSettings.h index 0a877fc18..d5e7190f2 100644 --- a/Source/Engine/Platform/Android/AndroidPlatformSettings.h +++ b/Source/Engine/Platform/Android/AndroidPlatformSettings.h @@ -6,16 +6,15 @@ #include "Engine/Core/Config/PlatformSettingsBase.h" #include "Engine/Scripting/SoftObjectReference.h" - -class Texture; +#include "Engine/Content/Assets/Texture.h" /// /// Android platform settings. /// API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API AndroidPlatformSettings : public SettingsBase { -DECLARE_SCRIPTING_TYPE_MINIMAL(AndroidPlatformSettings); -public: + DECLARE_SCRIPTING_TYPE_MINIMAL(AndroidPlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The application package name (eg. com.company.product). Custom tokens: ${PROJECT_NAME}, ${COMPANY_NAME}. @@ -35,20 +34,10 @@ public: API_FIELD(Attributes="EditorOrder(1030), EditorDisplay(\"Other\")") SoftObjectReference OverrideIcon; -public: - /// /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static AndroidPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - DESERIALIZE(PackageName); - DESERIALIZE(Permissions); - DESERIALIZE(OverrideIcon); - } }; #if PLATFORM_ANDROID diff --git a/Source/Engine/Platform/Apple/ApplePlatformSettings.h b/Source/Engine/Platform/Apple/ApplePlatformSettings.h index 57ad58449..a03cdd630 100644 --- a/Source/Engine/Platform/Apple/ApplePlatformSettings.h +++ b/Source/Engine/Platform/Apple/ApplePlatformSettings.h @@ -16,6 +16,7 @@ class Texture; API_CLASS(Abstract, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API ApplePlatformSettings : public SettingsBase { DECLARE_SCRIPTING_TYPE_MINIMAL(ApplePlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The app identifier (reversed DNS, eg. com.company.product). Custom tokens: ${PROJECT_NAME}, ${COMPANY_NAME}. @@ -28,14 +29,6 @@ API_CLASS(Abstract, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_AP /// API_FIELD(Attributes="EditorOrder(1000), EditorDisplay(\"Other\")") SoftObjectReference OverrideIcon; - -public: - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override - { - DESERIALIZE(AppIdentifier); - DESERIALIZE(OverrideIcon); - } }; #endif diff --git a/Source/Engine/Platform/GDK/GDKPlatformSettings.h b/Source/Engine/Platform/GDK/GDKPlatformSettings.h index 88822047d..1827427c8 100644 --- a/Source/Engine/Platform/GDK/GDKPlatformSettings.h +++ b/Source/Engine/Platform/GDK/GDKPlatformSettings.h @@ -16,7 +16,8 @@ class Texture; API_CLASS(Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API GDKPlatformSettings : public SettingsBase { DECLARE_SCRIPTING_TYPE_MINIMAL(GDKPlatformSettings); -public: + API_AUTO_SERIALIZATION(); + /// /// Game identity name stored in game package manifest (for store). If empty the product name will be used from Game Settings. /// @@ -118,28 +119,6 @@ public: /// API_FIELD(Attributes="EditorOrder(420), EditorDisplay(\"Media Capture\")") bool BlockGameDVR = false; - -public: - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override - { - DESERIALIZE(Name); - DESERIALIZE(PublisherName); - DESERIALIZE(PublisherDisplayName); - DESERIALIZE(Square150x150Logo); - DESERIALIZE(Square480x480Logo); - DESERIALIZE(Square44x44Logo); - DESERIALIZE(SplashScreenImage); - DESERIALIZE(StoreLogo); - DESERIALIZE(BackgroundColor); - DESERIALIZE(TitleId); - DESERIALIZE(StoreId); - DESERIALIZE(RequiresXboxLive); - DESERIALIZE(SCID); - DESERIALIZE(GameDVRSystemComponent); - DESERIALIZE(BlockBroadcast); - DESERIALIZE(BlockGameDVR); - } }; #endif diff --git a/Source/Engine/Platform/Linux/LinuxPlatformSettings.h b/Source/Engine/Platform/Linux/LinuxPlatformSettings.h index 8384b3d51..429149367 100644 --- a/Source/Engine/Platform/Linux/LinuxPlatformSettings.h +++ b/Source/Engine/Platform/Linux/LinuxPlatformSettings.h @@ -14,8 +14,8 @@ class Texture; /// API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API LinuxPlatformSettings : public SettingsBase { -DECLARE_SCRIPTING_TYPE_MINIMAL(LinuxPlatformSettings); -public: + DECLARE_SCRIPTING_TYPE_MINIMAL(LinuxPlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The default game window mode. @@ -65,25 +65,10 @@ public: API_FIELD(Attributes="EditorOrder(2000), DefaultValue(true), EditorDisplay(\"Graphics\")") bool SupportVulkan = true; -public: - /// /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static LinuxPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - DESERIALIZE(WindowMode); - DESERIALIZE(ScreenWidth); - DESERIALIZE(ScreenHeight); - DESERIALIZE(RunInBackground); - DESERIALIZE(ResizableWindow); - DESERIALIZE(ForceSingleInstance); - DESERIALIZE(OverrideIcon); - DESERIALIZE(SupportVulkan); - } }; #if PLATFORM_LINUX diff --git a/Source/Engine/Platform/Mac/MacPlatformSettings.h b/Source/Engine/Platform/Mac/MacPlatformSettings.h index d3ef21fc4..c7e334bcd 100644 --- a/Source/Engine/Platform/Mac/MacPlatformSettings.h +++ b/Source/Engine/Platform/Mac/MacPlatformSettings.h @@ -12,6 +12,7 @@ API_CLASS(Sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API MacPlatformSettings : public ApplePlatformSettings { DECLARE_SCRIPTING_TYPE_MINIMAL(MacPlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The default game window mode. @@ -43,22 +44,10 @@ API_CLASS(Sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API API_FIELD(Attributes="EditorOrder(1010), EditorDisplay(\"Other\", \"Run In Background\")") bool RunInBackground = false; -public: /// /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static MacPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - ApplePlatformSettings::Deserialize(stream, modifier); - DESERIALIZE(WindowMode); - DESERIALIZE(ScreenWidth); - DESERIALIZE(ScreenHeight); - DESERIALIZE(ResizableWindow); - DESERIALIZE(RunInBackground); - } }; #if PLATFORM_MAC diff --git a/Source/Engine/Platform/UWP/UWPPlatformSettings.h b/Source/Engine/Platform/UWP/UWPPlatformSettings.h index 98a2fedce..2c67898bf 100644 --- a/Source/Engine/Platform/UWP/UWPPlatformSettings.h +++ b/Source/Engine/Platform/UWP/UWPPlatformSettings.h @@ -11,8 +11,8 @@ /// API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API UWPPlatformSettings : public SettingsBase { -DECLARE_SCRIPTING_TYPE_MINIMAL(UWPPlatformSettings); -public: + DECLARE_SCRIPTING_TYPE_MINIMAL(UWPPlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The preferred launch windowing mode. @@ -66,8 +66,6 @@ public: All = Landscape | LandscapeFlipped | Portrait | PortraitFlipped }; -public: - /// /// The preferred launch windowing mode. Always fullscreen on Xbox. /// @@ -98,22 +96,10 @@ public: API_FIELD(Attributes="EditorOrder(2010), DefaultValue(false), EditorDisplay(\"Graphics\", \"Support DirectX 10\")") bool SupportDX10 = false; -public: - /// /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static UWPPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - DESERIALIZE(PreferredLaunchWindowingMode); - DESERIALIZE(AutoRotationPreferences); - DESERIALIZE(CertificateLocation); - DESERIALIZE(SupportDX11); - DESERIALIZE(SupportDX10); - } }; #if PLATFORM_UWP diff --git a/Source/Engine/Platform/Windows/WindowsPlatformSettings.h b/Source/Engine/Platform/Windows/WindowsPlatformSettings.h index 4c380fda3..02bfc2bc6 100644 --- a/Source/Engine/Platform/Windows/WindowsPlatformSettings.h +++ b/Source/Engine/Platform/Windows/WindowsPlatformSettings.h @@ -14,8 +14,8 @@ class Texture; /// API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API WindowsPlatformSettings : public SettingsBase { -DECLARE_SCRIPTING_TYPE_MINIMAL(WindowsPlatformSettings); -public: + DECLARE_SCRIPTING_TYPE_MINIMAL(WindowsPlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The default game window mode. @@ -83,28 +83,10 @@ public: API_FIELD(Attributes="EditorOrder(2030), DefaultValue(false), EditorDisplay(\"Graphics\")") bool SupportVulkan = false; -public: - /// /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static WindowsPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - DESERIALIZE(WindowMode); - DESERIALIZE(ScreenWidth); - DESERIALIZE(ScreenHeight); - DESERIALIZE(RunInBackground); - DESERIALIZE(ResizableWindow); - DESERIALIZE(ForceSingleInstance); - DESERIALIZE(OverrideIcon); - DESERIALIZE(SupportDX12); - DESERIALIZE(SupportDX11); - DESERIALIZE(SupportDX10); - DESERIALIZE(SupportVulkan); - } }; #if PLATFORM_WINDOWS diff --git a/Source/Engine/Platform/iOS/iOSPlatformSettings.h b/Source/Engine/Platform/iOS/iOSPlatformSettings.h index 53218e0f6..9eed39f41 100644 --- a/Source/Engine/Platform/iOS/iOSPlatformSettings.h +++ b/Source/Engine/Platform/iOS/iOSPlatformSettings.h @@ -12,6 +12,7 @@ API_CLASS(Sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API iOSPlatformSettings : public ApplePlatformSettings { DECLARE_SCRIPTING_TYPE_MINIMAL(ApplePlatformSettings); + API_AUTO_SERIALIZATION(); /// /// The app export destination methods. @@ -79,17 +80,6 @@ API_CLASS(Sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API /// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use. /// static iOSPlatformSettings* Get(); - - // [SettingsBase] - void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override - { - ApplePlatformSettings::Deserialize(stream, modifier); - DESERIALIZE(AppTeamId); - DESERIALIZE(AppVersion); - DESERIALIZE(ExportMethod); - DESERIALIZE(SupportedInterfaceOrientationsiPhone); - DESERIALIZE(SupportedInterfaceOrientationsiPad); - } }; #if PLATFORM_IOS diff --git a/Source/Engine/Serialization/Serialization.h b/Source/Engine/Serialization/Serialization.h index f9dc0870a..ed1008922 100644 --- a/Source/Engine/Serialization/Serialization.h +++ b/Source/Engine/Serialization/Serialization.h @@ -3,6 +3,7 @@ #pragma once #include "SerializationFwd.h" +#include "ISerializeModifier.h" #include "Engine/Core/Collections/Array.h" #include "Engine/Core/Collections/Dictionary.h" #include "Engine/Scripting/ScriptingObject.h" diff --git a/Source/Engine/Serialization/SerializationFwd.h b/Source/Engine/Serialization/SerializationFwd.h index 6315ec058..2ac7ae1de 100644 --- a/Source/Engine/Serialization/SerializationFwd.h +++ b/Source/Engine/Serialization/SerializationFwd.h @@ -3,10 +3,11 @@ #pragma once #include "Engine/Core/ISerializable.h" -#include "ISerializeModifier.h" #include "Json.h" #include "JsonWriter.h" +class ISerializeModifier; + // The floating-point values serialization epsilon for equality checks precision #define SERIALIZE_EPSILON 1e-7f #define SERIALIZE_EPSILON_DOUBLE 1e-17