2023-10-09 15:39:32 +08:00
using HybridCLR.Editor.Settings ;
using System ;
2022-09-22 08:56:07 +08:00
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
2023-05-06 12:28:03 +08:00
using UnityEditor ;
2022-09-22 08:56:07 +08:00
using UnityEditor.Build ;
using UnityEditor.Build.Reporting ;
using UnityEngine ;
2023-09-05 16:47:28 +08:00
using static UnityEngine . GraphicsBuffer ;
2022-09-22 08:56:07 +08:00
namespace HybridCLR.Editor.BuildProcessors
{
internal class CheckSettings : IPreprocessBuildWithReport
{
public int callbackOrder = > 0 ;
public void OnPreprocessBuild ( BuildReport report )
{
2022-10-09 20:53:13 +08:00
HybridCLRSettings globalSettings = SettingsUtil . HybridCLRSettings ;
if ( ! globalSettings . enable | | globalSettings . useGlobalIl2cpp )
2022-09-22 08:56:07 +08:00
{
string oldIl2cppPath = Environment . GetEnvironmentVariable ( "UNITY_IL2CPP_PATH" ) ;
if ( ! string . IsNullOrEmpty ( oldIl2cppPath ) )
{
Environment . SetEnvironmentVariable ( "UNITY_IL2CPP_PATH" , "" ) ;
2023-08-30 11:07:12 +08:00
Debug . Log ( $"[CheckSettings] clean process environment variable: UNITY_IL2CPP_PATH, old vlaue:'{oldIl2cppPath}'" ) ;
2022-09-22 08:56:07 +08:00
}
}
else
{
string curIl2cppPath = Environment . GetEnvironmentVariable ( "UNITY_IL2CPP_PATH" ) ;
if ( curIl2cppPath ! = SettingsUtil . LocalIl2CppDir )
{
Environment . SetEnvironmentVariable ( "UNITY_IL2CPP_PATH" , SettingsUtil . LocalIl2CppDir ) ;
2023-08-30 11:07:12 +08:00
Debug . Log ( $"[CheckSettings] UNITY_IL2CPP_PATH old value:'{curIl2cppPath}', new value:'{SettingsUtil.LocalIl2CppDir}'" ) ;
2022-09-22 08:56:07 +08:00
}
}
2022-10-09 16:13:23 +08:00
if ( ! globalSettings . enable )
2022-09-22 08:56:07 +08:00
{
return ;
}
2023-09-05 16:47:28 +08:00
BuildTargetGroup buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( EditorUserBuildSettings . activeBuildTarget ) ;
2023-05-06 12:28:03 +08:00
ScriptingImplementation curScriptingImplementation = PlayerSettings . GetScriptingBackend ( buildTargetGroup ) ;
ScriptingImplementation targetScriptingImplementation = ScriptingImplementation . IL2CPP ;
if ( curScriptingImplementation ! = targetScriptingImplementation )
{
2023-08-30 11:07:12 +08:00
Debug . LogError ( $"[CheckSettings] current ScriptingBackend:{curScriptingImplementation}, have been switched to:{targetScriptingImplementation} automatically" ) ;
2023-05-06 12:28:03 +08:00
PlayerSettings . SetScriptingBackend ( buildTargetGroup , targetScriptingImplementation ) ;
}
2022-09-22 08:56:07 +08:00
var installer = new Installer . InstallerController ( ) ;
if ( ! installer . HasInstalledHybridCLR ( ) )
{
2023-08-30 11:07:12 +08:00
throw new BuildFailedException ( $"You have not initialized HybridCLR, please install it via menu 'HybridCLR/Installer'" ) ;
2022-09-22 08:56:07 +08:00
}
2022-10-09 20:53:13 +08:00
HybridCLRSettings gs = SettingsUtil . HybridCLRSettings ;
2022-09-22 08:56:07 +08:00
if ( ( ( gs . hotUpdateAssemblies ? . Length + gs . hotUpdateAssemblyDefinitions ? . Length ) ? ? 0 ) = = 0 )
{
2023-08-30 11:07:12 +08:00
Debug . LogWarning ( "[CheckSettings] No hot update modules configured in HybridCLRSettings" ) ;
2022-09-22 08:56:07 +08:00
}
}
}
}