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;
}
}