// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. using System; using FlaxEditor.Content.Settings; using FlaxEditor.Scripting; using FlaxEngine; namespace FlaxEditor.Content.Create { /// /// Engine settings asset creating handler. Allows to specify type of the settings to create (e.g. , , etc.). /// /// public class SettingsCreateEntry : CreateFileEntry { /// /// Types of the settings assets that can be created. /// public enum SettingsTypes { /// /// The game settings. /// GameSettings, /// /// The audio settings. /// AudioSettings, /// /// The time settings. /// TimeSettings, /// /// The layers and tags settings. /// LayersAndTagsSettings, /// /// The physics settings. /// PhysicsSettings, /// /// The graphics settings. /// GraphicsSettings, /// /// The navigation settings. /// NavigationSettings, /// /// The build settings. /// BuildSettings, /// /// The input settings. /// InputSettings, /// /// The Windows settings. /// WindowsPlatformSettings, /// /// The UWP settings. /// UWPPlatformSettings, /// /// The Linux settings. /// LinuxPlatformSettings, /// /// The PS4 settings /// PS4PlatformSettings, /// /// The Xbox Scarlett settings /// XboxScarlettPlatformSettings, /// /// The Android settings /// AndroidPlatformSettings, } private static readonly Type[] _types = { typeof(GameSettings), typeof(AudioSettings), typeof(TimeSettings), typeof(LayersAndTagsSettings), typeof(PhysicsSettings), typeof(GraphicsSettings), typeof(NavigationSettings), typeof(BuildSettings), typeof(InputSettings), typeof(WindowsPlatformSettings), typeof(UWPPlatformSettings), typeof(LinuxPlatformSettings), TypeUtils.GetManagedType(GameSettings.PS4PlatformSettingsTypename), TypeUtils.GetManagedType(GameSettings.XboxScarlettPlatformSettingsTypename), typeof(AndroidPlatformSettings), }; /// /// The create options. /// public class Options { /// /// The type. /// [Tooltip("Type of the settings asset to create")] public SettingsTypes Type = SettingsTypes.GameSettings; } private readonly Options _options = new Options(); /// public override object Settings => _options; /// /// Initializes a new instance of the class. /// /// The result file url. public SettingsCreateEntry(string resultUrl) : base("Settings", resultUrl) { } /// public override bool Create() { // Create settings asset object and serialize it to pure json asset var type = _types[(int)_options.Type]; if (type == null) { MessageBox.Show("Cannot create " + _options.Type + " settings. Platform not supported."); return true; } var data = Activator.CreateInstance(type); return Editor.SaveJsonAsset(ResultUrl, data); } } }