From cc201e198d3027e96dabd7330912642955959f1f Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 9 Mar 2021 14:26:30 +0100 Subject: [PATCH] Add Switch platform --- Source/Editor/Editor.Build.cs | 1 + Source/Editor/Surface/Archetypes/Tools.cs | 5 ++-- Source/Engine/Audio/Audio.Build.cs | 3 +++ Source/Engine/Core/Config/GameSettings.cpp | 3 +++ Source/Engine/Core/Config/GameSettings.cs | 15 ++++++++++++ Source/Engine/Core/Config/GameSettings.h | 1 + Source/Engine/Core/Config/PlatformSettings.h | 3 +++ Source/Engine/Engine/Engine.Build.cs | 3 +++ Source/Engine/Engine/Game.h | 2 ++ Source/Engine/Graphics/Graphics.Build.cs | 3 +++ Source/Engine/Main/Main.Build.cs | 3 +++ Source/Engine/Platform/Base/PlatformBase.cpp | 2 ++ Source/Engine/Platform/Clipboard.h | 2 ++ Source/Engine/Platform/ConditionVariable.h | 2 ++ Source/Engine/Platform/CriticalSection.h | 2 ++ Source/Engine/Platform/Defines.h | 10 ++++++++ Source/Engine/Platform/File.h | 2 ++ Source/Engine/Platform/FileSystem.h | 2 ++ Source/Engine/Platform/FileSystemWatcher.h | 2 ++ Source/Engine/Platform/Network.h | 4 +++- Source/Engine/Platform/Platform.Build.cs | 4 ++++ Source/Engine/Platform/Platform.h | 2 ++ Source/Engine/Platform/Thread.h | 2 ++ Source/Engine/Platform/Types.h | 23 +++++++++++++++++++ Source/Engine/Platform/Window.h | 2 ++ .../Tools/TextureTool/TextureTool.Build.cs | 1 + Source/Engine/Visject/ShaderGraph.cpp | 1 + Source/Engine/Visject/VisjectGraph.cpp | 3 +++ Source/ThirdParty/freetype/freetype.Build.cs | 1 + Source/ThirdParty/mono-2.0/mono.Build.cs | 3 +++ Source/ThirdParty/ogg/ogg.Build.cs | 1 + Source/ThirdParty/vorbis/vorbis.Build.cs | 1 + Source/Tools/Flax.Build/Build/DepsModule.cs | 1 + Source/Tools/Flax.Build/Build/Module.cs | 1 + Source/Tools/Flax.Build/Build/Platform.cs | 1 + .../Tools/Flax.Build/Build/TargetPlatform.cs | 5 ++++ Source/Tools/Flax.Build/Deps/Dependency.cs | 1 + Source/Tools/Flax.Build/Flax.Build.csproj | 1 + Source/Tools/Flax.Build/Globals.cs | 1 + .../Platforms/Windows/WindowsPlatform.cs | 1 + 40 files changed, 123 insertions(+), 3 deletions(-) diff --git a/Source/Editor/Editor.Build.cs b/Source/Editor/Editor.Build.cs index 3f9156b5d..3ca463a2c 100644 --- a/Source/Editor/Editor.Build.cs +++ b/Source/Editor/Editor.Build.cs @@ -58,6 +58,7 @@ public class Editor : EditorModule AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "PS4", "PLATFORM_TOOLS_PS4"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "XboxScarlett", "PLATFORM_TOOLS_XBOX_SCARLETT"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "Android", "PLATFORM_TOOLS_ANDROID"); + AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "Switch", "PLATFORM_TOOLS_SWITCH"); // Visual Studio integration if (options.Platform.Target == TargetPlatform.Windows) diff --git a/Source/Editor/Surface/Archetypes/Tools.cs b/Source/Editor/Surface/Archetypes/Tools.cs index e5513b598..52ffbb5cb 100644 --- a/Source/Editor/Surface/Archetypes/Tools.cs +++ b/Source/Editor/Surface/Archetypes/Tools.cs @@ -1326,9 +1326,9 @@ namespace FlaxEditor.Surface.Archetypes Title = "Platform Switch", Description = "Gets the input value based on the runtime-platform type", Flags = NodeFlags.AllGraphs, - Size = new Vector2(220, 160), + Size = new Vector2(220, 180), ConnectionsHints = ConnectionsHint.Value, - IndependentBoxes = new[] { 1, 2, 3, 4, 5, 6, 7, 8 }, + IndependentBoxes = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, DependentBoxes = new[] { 0 }, Elements = new[] { @@ -1341,6 +1341,7 @@ namespace FlaxEditor.Surface.Archetypes NodeElementArchetype.Factory.Input(5, "PlayStation 4", true, null, 6), NodeElementArchetype.Factory.Input(6, "Xbox Scarlett", true, null, 7), NodeElementArchetype.Factory.Input(7, "Android", true, null, 8), + NodeElementArchetype.Factory.Input(8, "Switch", true, null, 9), } }, new NodeArchetype diff --git a/Source/Engine/Audio/Audio.Build.cs b/Source/Engine/Audio/Audio.Build.cs index d4b63e82b..3a40e73b0 100644 --- a/Source/Engine/Audio/Audio.Build.cs +++ b/Source/Engine/Audio/Audio.Build.cs @@ -46,6 +46,9 @@ public class Audio : EngineModule case TargetPlatform.Android: useOpenAL = true; break; + case TargetPlatform.Switch: + useNone = true; + break; default: throw new InvalidPlatformException(options.Platform.Target); } diff --git a/Source/Engine/Core/Config/GameSettings.cpp b/Source/Engine/Core/Config/GameSettings.cpp index a8fa83132..424eddaa1 100644 --- a/Source/Engine/Core/Config/GameSettings.cpp +++ b/Source/Engine/Core/Config/GameSettings.cpp @@ -55,6 +55,8 @@ IMPLEMENT_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform); IMPLEMENT_SETTINGS_GETTER(XboxScarlettPlatformSettings, XboxScarlettPlatform); #elif PLATFORM_ANDROID IMPLEMENT_SETTINGS_GETTER(AndroidPlatformSettings, AndroidPlatform); +#elif PLATFORM_SWITCH +IMPLEMENT_SETTINGS_GETTER(SwitchPlatformSettings, SwitchPlatform); #else #error Unknown platform #endif @@ -199,6 +201,7 @@ void GameSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* mo DESERIALIZE(PS4Platform); DESERIALIZE(XboxScarlettPlatform); DESERIALIZE(AndroidPlatform); + DESERIALIZE(SwitchPlatform); } void LayersAndTagsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) diff --git a/Source/Engine/Core/Config/GameSettings.cs b/Source/Engine/Core/Config/GameSettings.cs index a4f8d8e55..0767d795a 100644 --- a/Source/Engine/Core/Config/GameSettings.cs +++ b/Source/Engine/Core/Config/GameSettings.cs @@ -11,6 +11,7 @@ namespace FlaxEditor.Content.Settings { internal const string PS4PlatformSettingsTypename = "FlaxEditor.Content.Settings.PS4PlatformSettings"; internal const string XboxScarlettPlatformSettingsTypename = "FlaxEditor.Content.Settings.XboxScarlettPlatformSettings"; + internal const string SwitchPlatformSettingsTypename = "FlaxEditor.Content.Settings.SwitchPlatformSettings"; /// /// The default application icon. @@ -138,6 +139,14 @@ namespace FlaxEditor.Content.Settings public JsonAsset AndroidPlatform; #endif +#if FLAX_EDITOR || PLATFORM_SWITCH + /// + /// Reference to Switch Platform Settings asset. Used to apply configuration on Switch platform. + /// + [EditorOrder(2070), EditorDisplay("Platform Settings", "Switch"), AssetReference(SwitchPlatformSettingsTypename, true), Tooltip("Reference to Switch Platform Settings asset")] + public JsonAsset SwitchPlatform; +#endif + /// /// Gets the absolute path to the game settings asset file. /// @@ -240,6 +249,10 @@ namespace FlaxEditor.Content.Settings if (type == typeof(AndroidPlatformSettings)) return LoadAsset(gameSettings.AndroidPlatform) as T; #endif +#if FLAX_EDITOR || PLATFORM_SWITCH + if (type.FullName == SwitchPlatformSettingsTypename) + return LoadAsset(gameSettings.SwitchPlatform, SwitchPlatformSettingsTypename) as T; +#endif if (gameSettings.CustomSettings != null) { @@ -324,6 +337,8 @@ namespace FlaxEditor.Content.Settings return SaveAsset(gameSettings, ref gameSettings.XboxScarlettPlatform, obj); if (type == typeof(AndroidPlatformSettings)) return SaveAsset(gameSettings, ref gameSettings.AndroidPlatform, obj); + if (type.FullName == SwitchPlatformSettingsTypename) + return SaveAsset(gameSettings, ref gameSettings.SwitchPlatform, obj); if (type == typeof(AudioSettings)) return SaveAsset(gameSettings, ref gameSettings.Audio, obj); diff --git a/Source/Engine/Core/Config/GameSettings.h b/Source/Engine/Core/Config/GameSettings.h index 16e1fe7b5..63745d9d8 100644 --- a/Source/Engine/Core/Config/GameSettings.h +++ b/Source/Engine/Core/Config/GameSettings.h @@ -77,6 +77,7 @@ public: Guid PS4Platform; Guid XboxScarlettPlatform; Guid AndroidPlatform; + Guid SwitchPlatform; public: diff --git a/Source/Engine/Core/Config/PlatformSettings.h b/Source/Engine/Core/Config/PlatformSettings.h index 2148989b9..29cf7959f 100644 --- a/Source/Engine/Core/Config/PlatformSettings.h +++ b/Source/Engine/Core/Config/PlatformSettings.h @@ -23,3 +23,6 @@ #if PLATFORM_ANDROID #include "Engine/Platform/Android/AndroidPlatformSettings.h" #endif +#if PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchPlatformSettings.h" +#endif diff --git a/Source/Engine/Engine/Engine.Build.cs b/Source/Engine/Engine/Engine.Build.cs index 507651f8f..38db0e59c 100644 --- a/Source/Engine/Engine/Engine.Build.cs +++ b/Source/Engine/Engine/Engine.Build.cs @@ -42,6 +42,9 @@ public class Engine : EngineModule case TargetPlatform.PS4: options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Engine")); break; + case TargetPlatform.Switch: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Engine")); + break; } } } diff --git a/Source/Engine/Engine/Game.h b/Source/Engine/Engine/Game.h index 2e9050314..585bfd3b3 100644 --- a/Source/Engine/Engine/Game.h +++ b/Source/Engine/Engine/Game.h @@ -16,6 +16,8 @@ #include "Platforms/XboxScarlett/Engine/Engine/XboxScarlettGame.h" #elif PLATFORM_ANDROID #include "Android/AndroidGame.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Engine/SwitchGame.h" #else #error Missing Game implementation! #endif diff --git a/Source/Engine/Graphics/Graphics.Build.cs b/Source/Engine/Graphics/Graphics.Build.cs index ff25348b0..7d7f49d3d 100644 --- a/Source/Engine/Graphics/Graphics.Build.cs +++ b/Source/Engine/Graphics/Graphics.Build.cs @@ -75,6 +75,9 @@ public class Graphics : EngineModule case TargetPlatform.Android: options.PrivateDependencies.Add("GraphicsDeviceVulkan"); break; + case TargetPlatform.Switch: + options.PrivateDependencies.Add("GraphicsDeviceNull"); // TODO: use Vulkan on Switch + break; default: throw new InvalidPlatformException(options.Platform.Target); } diff --git a/Source/Engine/Main/Main.Build.cs b/Source/Engine/Main/Main.Build.cs index 6c8106760..669e5435b 100644 --- a/Source/Engine/Main/Main.Build.cs +++ b/Source/Engine/Main/Main.Build.cs @@ -64,6 +64,9 @@ public class Main : EngineModule case TargetPlatform.Android: options.SourcePaths.Add(Path.Combine(FolderPath, "Android")); break; + case TargetPlatform.Switch: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Main")); + break; default: throw new InvalidPlatformException(options.Platform.Target); } } diff --git a/Source/Engine/Platform/Base/PlatformBase.cpp b/Source/Engine/Platform/Base/PlatformBase.cpp index 5ffb85a9a..4ad6949d7 100644 --- a/Source/Engine/Platform/Base/PlatformBase.cpp +++ b/Source/Engine/Platform/Base/PlatformBase.cpp @@ -534,6 +534,8 @@ const Char* ToString(PlatformType type) return TEXT("Xbox Scarlett"); case PlatformType::Android: return TEXT("Android"); + case PlatformType::Switch: + return TEXT("Switch"); default: return TEXT(""); } diff --git a/Source/Engine/Platform/Clipboard.h b/Source/Engine/Platform/Clipboard.h index 5c84d5d9e..6ad8e7bc5 100644 --- a/Source/Engine/Platform/Clipboard.h +++ b/Source/Engine/Platform/Clipboard.h @@ -14,6 +14,8 @@ #include "Base/ClipboardBase.h" #elif PLATFORM_ANDROID #include "Base/ClipboardBase.h" +#elif PLATFORM_SWITCH +#include "Base/ClipboardBase.h" #else #error Missing Clipboard implementation! #endif diff --git a/Source/Engine/Platform/ConditionVariable.h b/Source/Engine/Platform/ConditionVariable.h index 0ebaecd92..1704cc361 100644 --- a/Source/Engine/Platform/ConditionVariable.h +++ b/Source/Engine/Platform/ConditionVariable.h @@ -14,6 +14,8 @@ #include "Win32/Win32ConditionVariable.h" #elif PLATFORM_ANDROID #include "Unix/UnixConditionVariable.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchConditionVariable.h" #else #error Missing Condition Variable implementation! #endif diff --git a/Source/Engine/Platform/CriticalSection.h b/Source/Engine/Platform/CriticalSection.h index d2d57a997..85f4e464c 100644 --- a/Source/Engine/Platform/CriticalSection.h +++ b/Source/Engine/Platform/CriticalSection.h @@ -14,6 +14,8 @@ #include "Win32/Win32CriticalSection.h" #elif PLATFORM_ANDROID #include "Unix/UnixCriticalSection.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchCriticalSection.h" #else #error Missing Critical Section implementation! #endif diff --git a/Source/Engine/Platform/Defines.h b/Source/Engine/Platform/Defines.h index ac45ba1c9..9064fb13a 100644 --- a/Source/Engine/Platform/Defines.h +++ b/Source/Engine/Platform/Defines.h @@ -43,6 +43,11 @@ API_ENUM() enum class PlatformType /// Running on Android. /// Android = 7, + + /// + /// Running on Switch. + /// + Switch = 8, }; /// @@ -113,6 +118,9 @@ API_ENUM() enum class ArchitectureType #if !defined(PLATFORM_IOS) #define PLATFORM_IOS 0 #endif +#if !defined(PLATFORM_SWITCH) +#define PLATFORM_SWITCH 0 +#endif #if PLATFORM_WINDOWS #include "Windows/WindowsDefines.h" @@ -126,6 +134,8 @@ API_ENUM() enum class ArchitectureType #include "Platforms/XboxScarlett/Engine/Platform/XboxScarlettDefines.h" #elif PLATFORM_ANDROID #include "Android/AndroidDefines.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchDefines.h" #else #error Missing Defines implementation! #endif diff --git a/Source/Engine/Platform/File.h b/Source/Engine/Platform/File.h index 44ea82f15..4988203b7 100644 --- a/Source/Engine/Platform/File.h +++ b/Source/Engine/Platform/File.h @@ -14,6 +14,8 @@ #include "Win32/Win32File.h" #elif PLATFORM_ANDROID #include "Android/AndroidFile.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchFile.h" #else #error Missing File implementation! #endif diff --git a/Source/Engine/Platform/FileSystem.h b/Source/Engine/Platform/FileSystem.h index 5d38c7c00..20d3c05e5 100644 --- a/Source/Engine/Platform/FileSystem.h +++ b/Source/Engine/Platform/FileSystem.h @@ -14,6 +14,8 @@ #include "Platforms/XboxScarlett/Engine/Platform/XboxScarlettFileSystem.h" #elif PLATFORM_ANDROID #include "Android/AndroidFileSystem.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchFileSystem.h" #else #error Missing File System implementation! #endif diff --git a/Source/Engine/Platform/FileSystemWatcher.h b/Source/Engine/Platform/FileSystemWatcher.h index 3c74ad627..bd14f4241 100644 --- a/Source/Engine/Platform/FileSystemWatcher.h +++ b/Source/Engine/Platform/FileSystemWatcher.h @@ -14,6 +14,8 @@ #include "Base/FileSystemWatcherBase.h" #elif PLATFORM_ANDROID #include "Base/FileSystemWatcherBase.h" +#elif PLATFORM_SWITCH +#include "Base/FileSystemWatcherBase.h" #else #error Missing File System Watcher implementation! #endif diff --git a/Source/Engine/Platform/Network.h b/Source/Engine/Platform/Network.h index b8c198770..ec91013de 100644 --- a/Source/Engine/Platform/Network.h +++ b/Source/Engine/Platform/Network.h @@ -1,4 +1,4 @@ -// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. +// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. #pragma once @@ -14,6 +14,8 @@ #include "Win32/Win32Network.h" #elif PLATFORM_ANDROID #include "Base/NetworkBase.h" +#elif PLATFORM_SWITCH +#include "Base/NetworkBase.h" #else #error Missing Network implementation! #endif diff --git a/Source/Engine/Platform/Platform.Build.cs b/Source/Engine/Platform/Platform.Build.cs index 8fb2d2175..1948b56b6 100644 --- a/Source/Engine/Platform/Platform.Build.cs +++ b/Source/Engine/Platform/Platform.Build.cs @@ -65,6 +65,9 @@ public class Platform : EngineModule options.SourcePaths.Add(Path.Combine(FolderPath, "Unix")); options.SourcePaths.Add(Path.Combine(FolderPath, "Android")); break; + case TargetPlatform.Switch: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Platform")); + break; default: throw new InvalidPlatformException(options.Platform.Target); } if (options.Target.IsEditor) @@ -76,6 +79,7 @@ public class Platform : EngineModule options.SourceFiles.Add(Path.Combine(FolderPath, "Android", "AndroidPlatformSettings.h")); AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "XboxScarlett", "Engine", "Platform", "XboxScarlettPlatformSettings.h")); AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Platform", "PS4PlatformSettings.h")); + AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Platform", "SwitchPlatformSettings.h")); } } } diff --git a/Source/Engine/Platform/Platform.h b/Source/Engine/Platform/Platform.h index f96526be0..3fa1d99a1 100644 --- a/Source/Engine/Platform/Platform.h +++ b/Source/Engine/Platform/Platform.h @@ -20,6 +20,8 @@ #include "Platforms/XboxScarlett/Engine/Platform/XboxScarlettPlatform.h" #elif PLATFORM_ANDROID #include "Android/AndroidPlatform.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchPlatform.h" #else #error Missing Platform implementation! #endif diff --git a/Source/Engine/Platform/Thread.h b/Source/Engine/Platform/Thread.h index 4c156f936..4d9c3428a 100644 --- a/Source/Engine/Platform/Thread.h +++ b/Source/Engine/Platform/Thread.h @@ -14,6 +14,8 @@ #include "Win32/Win32Thread.h" #elif PLATFORM_ANDROID #include "Android/AndroidThread.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchThread.h" #else #error Missing Thread implementation! #endif diff --git a/Source/Engine/Platform/Types.h b/Source/Engine/Platform/Types.h index 3f6511241..2eadf565b 100644 --- a/Source/Engine/Platform/Types.h +++ b/Source/Engine/Platform/Types.h @@ -140,6 +140,29 @@ typedef AndroidWindow Window; class NetworkBase; typedef NetworkBase Network; +#elif PLATFORM_SWITCH + +class ClipboardBase; +typedef ClipboardBase Clipboard; +class SwitchCriticalSection; +typedef SwitchCriticalSection CriticalSection; +class SwitchConditionVariable; +typedef SwitchConditionVariable ConditionVariable; +class SwitchFileSystem; +typedef SwitchFileSystem FileSystem; +class FileSystemWatcherBase; +typedef FileSystemWatcherBase FileSystemWatcher; +class SwitchFile; +typedef SwitchFile File; +class SwitchPlatform; +typedef SwitchPlatform Platform; +class SwitchThread; +typedef SwitchThread Thread; +class SwitchWindow; +typedef SwitchWindow Window; +class NetworkBase; +typedef NetworkBase Network; + #else #error Missing Types implementation! diff --git a/Source/Engine/Platform/Window.h b/Source/Engine/Platform/Window.h index 0b17401fc..138303dc6 100644 --- a/Source/Engine/Platform/Window.h +++ b/Source/Engine/Platform/Window.h @@ -14,6 +14,8 @@ #include "Platforms/XboxScarlett/Engine/Platform/XboxScarlettWindow.h" #elif PLATFORM_ANDROID #include "Android/AndroidWindow.h" +#elif PLATFORM_SWITCH +#include "Platforms/Switch/Engine/Platform/SwitchWindow.h" #else #error Missing Window implementation! #endif diff --git a/Source/Engine/Tools/TextureTool/TextureTool.Build.cs b/Source/Engine/Tools/TextureTool/TextureTool.Build.cs index fe5862318..c584b6c31 100644 --- a/Source/Engine/Tools/TextureTool/TextureTool.Build.cs +++ b/Source/Engine/Tools/TextureTool/TextureTool.Build.cs @@ -33,6 +33,7 @@ public class TextureTool : EngineModule case TargetPlatform.Linux: case TargetPlatform.PS4: case TargetPlatform.Android: + case TargetPlatform.Switch: useStb = true; break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index abb83bd9b..b3f221617 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -767,6 +767,7 @@ void ShaderGenerator::ProcessGroupTools(Box* box, Node* node, Value& value) PLATFORM_CASE(6, "PLATFORM_PS4"); PLATFORM_CASE(7, "PLATFORM_XBOX_SCARLETT"); PLATFORM_CASE(8, "PLATFORM_ANDROID"); + PLATFORM_CASE(9, "PLATFORM_SWITCH"); #undef PLATFORM_CASE break; } diff --git a/Source/Engine/Visject/VisjectGraph.cpp b/Source/Engine/Visject/VisjectGraph.cpp index 49885887f..fcba6c8b7 100644 --- a/Source/Engine/Visject/VisjectGraph.cpp +++ b/Source/Engine/Visject/VisjectGraph.cpp @@ -714,6 +714,9 @@ void VisjectExecutor::ProcessGroupTools(Box* box, Node* node, Value& value) case PlatformType::Android: boxId = 8; break; + case PlatformType::Switch: + boxId = 9; + break; default: ; } value = tryGetValue(node->GetBox(node->GetBox(boxId)->HasConnection() ? boxId : 1), Value::Zero); diff --git a/Source/ThirdParty/freetype/freetype.Build.cs b/Source/ThirdParty/freetype/freetype.Build.cs index 7cf93e32c..a5f697538 100644 --- a/Source/ThirdParty/freetype/freetype.Build.cs +++ b/Source/ThirdParty/freetype/freetype.Build.cs @@ -40,6 +40,7 @@ public class freetype : DepsModule case TargetPlatform.Linux: case TargetPlatform.PS4: case TargetPlatform.Android: + case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(depsRoot, "libfreetype.a")); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/ThirdParty/mono-2.0/mono.Build.cs b/Source/ThirdParty/mono-2.0/mono.Build.cs index cbfefcf6b..2399b47e8 100644 --- a/Source/ThirdParty/mono-2.0/mono.Build.cs +++ b/Source/ThirdParty/mono-2.0/mono.Build.cs @@ -88,6 +88,9 @@ public class mono : DepsModule options.DependencyFiles.Add(Path.Combine(depsRoot, "libmonosgen-2.0.so")); options.Libraries.Add(Path.Combine(depsRoot, "libmonosgen-2.0.so")); break; + case TargetPlatform.Switch: + // TODO: mono for Switch + break; default: throw new InvalidPlatformException(options.Platform.Target); } diff --git a/Source/ThirdParty/ogg/ogg.Build.cs b/Source/ThirdParty/ogg/ogg.Build.cs index 5a2e1d7db..168391012 100644 --- a/Source/ThirdParty/ogg/ogg.Build.cs +++ b/Source/ThirdParty/ogg/ogg.Build.cs @@ -39,6 +39,7 @@ public class ogg : DepsModule case TargetPlatform.Linux: case TargetPlatform.PS4: case TargetPlatform.Android: + case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(depsRoot, "libogg.a")); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/ThirdParty/vorbis/vorbis.Build.cs b/Source/ThirdParty/vorbis/vorbis.Build.cs index d743ff327..0d95d621a 100644 --- a/Source/ThirdParty/vorbis/vorbis.Build.cs +++ b/Source/ThirdParty/vorbis/vorbis.Build.cs @@ -45,6 +45,7 @@ public class vorbis : DepsModule options.OutputFiles.Add(Path.Combine(depsRoot, "libvorbisfile.a")); break; case TargetPlatform.PS4: + case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(depsRoot, "libvorbis.a")); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/Tools/Flax.Build/Build/DepsModule.cs b/Source/Tools/Flax.Build/Build/DepsModule.cs index 96e921015..423485b1c 100644 --- a/Source/Tools/Flax.Build/Build/DepsModule.cs +++ b/Source/Tools/Flax.Build/Build/DepsModule.cs @@ -31,6 +31,7 @@ namespace Flax.Build case TargetPlatform.Linux: case TargetPlatform.PS4: case TargetPlatform.Android: + case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(path, string.Format("lib{0}.a", name))); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/Tools/Flax.Build/Build/Module.cs b/Source/Tools/Flax.Build/Build/Module.cs index c623de92d..a5c1dddc5 100644 --- a/Source/Tools/Flax.Build/Build/Module.cs +++ b/Source/Tools/Flax.Build/Build/Module.cs @@ -90,6 +90,7 @@ namespace Flax.Build case TargetPlatform.PS4: return "PLATFORM_PS4"; case TargetPlatform.XboxScarlett: return "PLATFORM_XBOX_SCARLETT"; case TargetPlatform.Android: return "PLATFORM_ANDROID"; + case TargetPlatform.Switch: return "PLATFORM_SWITCH"; default: throw new InvalidPlatformException(platform); } } diff --git a/Source/Tools/Flax.Build/Build/Platform.cs b/Source/Tools/Flax.Build/Build/Platform.cs index 79c30f969..96f187a37 100644 --- a/Source/Tools/Flax.Build/Build/Platform.cs +++ b/Source/Tools/Flax.Build/Build/Platform.cs @@ -230,6 +230,7 @@ namespace Flax.Build case TargetPlatform.Linux: return targetArchitecture == TargetArchitecture.x64; case TargetPlatform.PS4: return targetArchitecture == TargetArchitecture.x64; case TargetPlatform.Android: return targetArchitecture == TargetArchitecture.ARM64; + case TargetPlatform.Switch: return targetArchitecture == TargetArchitecture.ARM64; default: return false; } } diff --git a/Source/Tools/Flax.Build/Build/TargetPlatform.cs b/Source/Tools/Flax.Build/Build/TargetPlatform.cs index 27e7fe02a..8efb50cea 100644 --- a/Source/Tools/Flax.Build/Build/TargetPlatform.cs +++ b/Source/Tools/Flax.Build/Build/TargetPlatform.cs @@ -41,6 +41,11 @@ namespace Flax.Build /// Running on Android. /// Android = 7, + + /// + /// Running on Switch. + /// + Switch = 8, } /// diff --git a/Source/Tools/Flax.Build/Deps/Dependency.cs b/Source/Tools/Flax.Build/Deps/Dependency.cs index 6b105d2e8..7b85a29be 100644 --- a/Source/Tools/Flax.Build/Deps/Dependency.cs +++ b/Source/Tools/Flax.Build/Deps/Dependency.cs @@ -237,6 +237,7 @@ namespace Flax.Deps } case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.Switch: { cmdLine = "CMakeLists.txt"; break; diff --git a/Source/Tools/Flax.Build/Flax.Build.csproj b/Source/Tools/Flax.Build/Flax.Build.csproj index 236348032..0de0bd0a0 100644 --- a/Source/Tools/Flax.Build/Flax.Build.csproj +++ b/Source/Tools/Flax.Build/Flax.Build.csproj @@ -143,6 +143,7 @@ + diff --git a/Source/Tools/Flax.Build/Globals.cs b/Source/Tools/Flax.Build/Globals.cs index d33251a94..27bb78ac3 100644 --- a/Source/Tools/Flax.Build/Globals.cs +++ b/Source/Tools/Flax.Build/Globals.cs @@ -34,6 +34,7 @@ namespace Flax.Build TargetPlatform.PS4, TargetPlatform.XboxScarlett, TargetPlatform.Android, + TargetPlatform.Switch, }; /// diff --git a/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs b/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs index 145eaaf02..3e34e1eb3 100644 --- a/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs +++ b/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs @@ -61,6 +61,7 @@ namespace Flax.Build.Platforms case TargetPlatform.PS4: return Sdk.HasValid("PS4Sdk"); case TargetPlatform.XboxScarlett: return GetSDKs().ContainsKey(WindowsPlatformSDK.v10_0_19041_0) && Sdk.HasValid("GDK"); case TargetPlatform.Android: return AndroidSdk.Instance.IsValid && AndroidNdk.Instance.IsValid; + case TargetPlatform.Switch: return Sdk.HasValid("SwitchSdk"); default: return false; } }