using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEditor.Callbacks; namespace Ubisoft.Hotel.Package.Editor { /// /// Class responsible for applying Package properties when Hotel PackageManager package is not installed to ease contributors' labor when building /// for testing the package by itseft /// public class PackageBuilder : IPreprocessBuildWithReport { #if !HT_PACKAGE_PACKAGEMANAGER_PROD /* [MenuItem("Hotel/Package/PreProcess")] public static void Menu_PreProcess() { PreProcessBuild(); } */ private static PackageSpaceBuildSuiteProvider Provider { get; set; } private static BuildSuite s_buildSuite; private static BuildSuite BuildSuite { get { if (s_buildSuite == null) { string unityRootPath = "Assets/Hotel/Editor"; string name = "buildSuite"; string unityFilePath = $"{unityRootPath}/{name}.asset"; s_buildSuite = AssetDatabase.LoadAssetAtPath(unityFilePath, typeof(BuildSuite)) as BuildSuite; if (s_buildSuite == null) { s_buildSuite = HtUnityEditorFactory.CreateScriptableObject(typeof(BuildSuite), unityRootPath, name) as BuildSuite; BuildSuite.name = name; BuildSuite.Serialize(BuildSuite); HtAssetDatabase.RefreshObject(BuildSuite); AssetDatabase.SaveAssets(); } } return s_buildSuite; } set { s_buildSuite = value; } } private static void PreProcessBuild() { Provider = new PackageSpaceBuildSuiteProvider(null); BuildSuite.Clear(); Provider.ApplyToBuildSuite(PlatformUtils.GetActivePlatform(), BuildSuite); BuildSuite.CompileBuildProperties(); HtAssetDatabase.RefreshObject(BuildSuite); AssetDatabase.SaveAssets(); HtAssetDatabase.Update(); BuildSuite.PreBuild(PlatformUtils.GetActivePlatform()); //BuildSuite = null; } private static void PostProcessBuild(BuildTarget target, string pathToBuiltProject) { BuildSuite.PostBuild(target, pathToBuiltProject); } #endif public int callbackOrder { get { return 0; } } public void OnPreprocessBuild(BuildReport report) { #if !HT_PACKAGE_PACKAGEMANAGER_PROD PreProcessBuild(); #endif } [PostProcessBuild(1080)] public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) { #if !HT_PACKAGE_PACKAGEMANAGER_PROD PostProcessBuild(target, pathToBuiltProject); #endif } } }