From f6b2be20793f01a0c0668c285a6826e3be41f49d Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 4 Sep 2023 14:52:24 -0400 Subject: [PATCH] Generate Build Constants Button --- Editor/Build/BuildProject.cs | 36 +++++++++++++++++++ .../UI/ProjectConfigurationsDrawer.cs | 6 ++++ 2 files changed, 42 insertions(+) diff --git a/Editor/Build/BuildProject.cs b/Editor/Build/BuildProject.cs index e2e8c05..c4af464 100644 --- a/Editor/Build/BuildProject.cs +++ b/Editor/Build/BuildProject.cs @@ -78,6 +78,34 @@ public static void ConfigureEditor(string configKey, BuildOptions options = Buil ); } + /// + /// Ignore the Editor configuration steps and only generate the BuildConstants.cs file, + /// to avoid dealing with platform and scene list switching + /// + /// + /// + public static void GenerateBuildConstantsOnlyButton(string configKey, BuildOptions options = BuildOptions.None) + { + DateTime configureTime = DateTime.Now; + + // Clear any old notifications + BuildNotificationList.instance.RefreshAll(); + + // Report Build Constants generation + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Notification, + "Generating BuildConstants for: ", configKey, + true, null)); + + // Parse build config + BuildSettings.projectConfigurations.ParseKeychain(configKey, out BuildReleaseType releaseType, out BuildPlatform platform, out BuildArchitecture architecture, + out BuildScriptingBackend scriptingBackend, out BuildDistribution distribution); + string constantsFileLocation = BuildSettings.basicSettings.constantsFileLocation; + + GenerateBuildConstants(releaseType, platform, architecture, scriptingBackend, distribution, configureTime, constantsFileLocation); + + } + public static string GenerateDefaultDefines(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture arch, BuildScriptingBackend scriptingBackend, BuildDistribution dist) { @@ -265,6 +293,14 @@ private static void ConfigureEnvironment(BuildReleaseType releaseType, BuildPlat releaseType.sceneList.Refresh(); } + ///Create the buildConstants.cs file + private static void GenerateBuildConstants(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, + BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string constantsFileLocation) + { + BuildConstantsGenerator.Generate(buildTime, constantsFileLocation, BuildSettings.productParameters.buildVersion, + releaseType, platform, scriptingBackend, architecture, distribution); + } + private static void ReplaceFromFile(StringBuilder sb, string keyString, string filename) { if (sb.ToString().IndexOf(keyString) > -1) diff --git a/Editor/Build/Settings/UI/ProjectConfigurationsDrawer.cs b/Editor/Build/Settings/UI/ProjectConfigurationsDrawer.cs index 49099f5..4848f96 100644 --- a/Editor/Build/Settings/UI/ProjectConfigurationsDrawer.cs +++ b/Editor/Build/Settings/UI/ProjectConfigurationsDrawer.cs @@ -182,6 +182,12 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten } EditorGUI.EndDisabledGroup(); + if (GUILayout.Button(new GUIContent("Generate Build Constants", "Only generate the BuildConstants.cs file without changing platform."), GUILayout.ExpandWidth(true))) + { + // Generate the Build Constants File + BuildProject.GenerateBuildConstantsOnlyButton(selectedKeyChain.stringValue, buildOptions); + } + if (GUILayout.Button(new GUIContent("Configure Editor Environment", "Switches platform, refreshes BuildConstants, applies scripting defines and variant settings and sets Build Settings scene list to match the selected build configuration"), GUILayout.ExpandWidth(true))) { // Update Editor environment settings to match selected build configuration