From b82da95b5181ac8bbae38efb13e950d5e88a4caa Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 23 Oct 2020 13:08:43 +0800 Subject: =?UTF-8?q?*=E7=A7=BB=E5=8A=A8amplify=20shader=20editor=E5=88=B0th?= =?UTF-8?q?ird=20party=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Utils/ASEPackageManagerHelper.cs | 540 +++++++++++++++++++++ 1 file changed, 540 insertions(+) create mode 100644 Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/ASEPackageManagerHelper.cs (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/ASEPackageManagerHelper.cs') diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/ASEPackageManagerHelper.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/ASEPackageManagerHelper.cs new file mode 100644 index 00000000..9336c150 --- /dev/null +++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/ASEPackageManagerHelper.cs @@ -0,0 +1,540 @@ +// Amplify Shader Editor - Visual Shader Editing Tool +// Copyright (c) Amplify Creations, Lda +#if UNITY_2018_3_OR_NEWER +using System; +using UnityEngine; +using UnityEditor; +using UnityEditor.PackageManager.Requests; +using System.Collections.Generic; +using System.IO; +using System.Reflection; + +namespace AmplifyShaderEditor +{ + public enum ASESRPVersions + { + ASE_SRP_3_0_0 = 030000, + ASE_SRP_3_1_0 = 030100, + ASE_SRP_3_3_0 = 030300, + ASE_SRP_4_1_0 = 040100, + ASE_SRP_4_2_0 = 040200, + ASE_SRP_4_3_0 = 040300, + ASE_SRP_4_6_0 = 040600, + ASE_SRP_4_8_0 = 040800, + ASE_SRP_4_9_0 = 040900, + ASE_SRP_4_10_0 = 041000, + ASE_SRP_5_7_2 = 050702, + ASE_SRP_5_8_2 = 050802, + ASE_SRP_5_9_0 = 050900, + ASE_SRP_5_10_0 = 051000, + ASE_SRP_5_13_0 = 051300, + ASE_SRP_5_16_1 = 051601, + ASE_SRP_6_9_0 = 060900, + ASE_SRP_6_9_1 = 060901, + ASE_SRP_6_9_2 = 060902, + ASE_SRP_7_0_1 = 070001, + ASE_SRP_7_1_1 = 070101, + ASE_SRP_7_1_2 = 070102, + ASE_SRP_7_1_5 = 070105, + ASE_SRP_7_1_6 = 070106, + ASE_SRP_7_1_7 = 070107, + ASE_SRP_7_1_8 = 070108, + ASE_SRP_7_2_0 = 070200, + ASE_SRP_7_2_1 = 070201, + ASE_SRP_RECENT = 999999 + } + + public enum ASEImportState + { + None, + Lightweight, + HD, + Both + } + + public static class AssetDatabaseEX + { + private static System.Type type = null; + public static System.Type Type { get { return ( type == null ) ? type = System.Type.GetType( "UnityEditor.AssetDatabase, UnityEditor" ) : type; } } + + public static void ImportPackageImmediately( string packagePath ) + { + AssetDatabaseEX.Type.InvokeMember( "ImportPackageImmediately", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, null, new object[] { packagePath } ); + } + } + + + [Serializable] + public static class ASEPackageManagerHelper + { + private static string LightweightNewVersionDetected = "A new Lighweight RP version was detected and new templates are being imported.\n" + + "Please hit the Update button on your ASE canvas to recompile your shader under the newest version."; + + private static string HDNewVersionDetected = "A new HD RP version was detected and new templates are being imported.\n" + + "Please hit the Update button on your ASE canvas to recompile your shader under the newest version."; + + private static string HDPackageId = "com.unity.render-pipelines.high-definition"; + private static string LWPackageId = "com.unity.render-pipelines.lightweight"; + private static string UniversalPackageId = "com.unity.render-pipelines.universal"; + private static string HDEditorPrefsId = "ASEHDEditorPrefsId"; + private static string LWEditorPrefsId = "ASELightweigthEditorPrefsId "; + + private static string URPTemplateVersion = "ASEURPtemplate" + Application.productName; + private static string HDRPTemplateVersion = "ASEHDRPtemplate" + Application.productName; + + private static string SPKeywordFormat = "ASE_SRP_VERSION {0}"; + private static ListRequest m_packageListRequest = null; + private static UnityEditor.PackageManager.PackageInfo m_lwPackageInfo; + private static UnityEditor.PackageManager.PackageInfo m_hdPackageInfo; + + // V4.8.0 and bellow + // HD + private static readonly string[] GetNormalWSFunc = + { + "inline void GetNormalWS( FragInputs input, float3 normalTS, out float3 normalWS, float3 doubleSidedConstants )\n", + "{\n", + "\tGetNormalWS( input, normalTS, normalWS );\n", + "}\n" + }; + + // v4.6.0 and below + private static readonly string[] BuildWordTangentFunc = + { + "float3x3 BuildWorldToTangent(float4 tangentWS, float3 normalWS)\n", + "{\n", + "\tfloat3 unnormalizedNormalWS = normalWS;\n", + "\tfloat renormFactor = 1.0 / length(unnormalizedNormalWS);\n", + "\tfloat3x3 worldToTangent = CreateWorldToTangent(unnormalizedNormalWS, tangentWS.xyz, tangentWS.w > 0.0 ? 1.0 : -1.0);\n", + "\tworldToTangent[0] = worldToTangent[0] * renormFactor;\n", + "\tworldToTangent[1] = worldToTangent[1] * renormFactor;\n", + "\tworldToTangent[2] = worldToTangent[2] * renormFactor;\n", + "\treturn worldToTangent;\n", + "}\n" + }; + + private static bool m_requireUpdateList = false; + private static ASEImportState m_importingPackage = ASEImportState.None; + + + private static ASESRPVersions m_currentHDVersion = ASESRPVersions.ASE_SRP_RECENT; + private static ASESRPVersions m_currentLWVersion = ASESRPVersions.ASE_SRP_RECENT; + + private static int m_urpTemplateVersion = 4; + private static int m_hdrpTemplateVersion = 3; + + private static Dictionary m_srpVersionConverter = new Dictionary() + { + {"3.0.0-preview", ASESRPVersions.ASE_SRP_3_0_0}, + {"3.1.0-preview", ASESRPVersions.ASE_SRP_3_1_0}, + {"3.3.0-preview", ASESRPVersions.ASE_SRP_3_3_0}, + {"4.1.0-preview", ASESRPVersions.ASE_SRP_4_1_0}, + {"4.2.0-preview", ASESRPVersions.ASE_SRP_4_2_0}, + {"4.3.0-preview", ASESRPVersions.ASE_SRP_4_3_0}, + {"4.6.0-preview", ASESRPVersions.ASE_SRP_4_6_0}, + {"4.8.0-preview", ASESRPVersions.ASE_SRP_4_8_0}, + {"4.9.0-preview", ASESRPVersions.ASE_SRP_4_9_0}, + {"4.10.0-preview", ASESRPVersions.ASE_SRP_4_10_0}, + {"5.7.2-preview", ASESRPVersions.ASE_SRP_5_7_2}, + {"5.7.2", ASESRPVersions.ASE_SRP_5_7_2}, + {"5.8.2-preview", ASESRPVersions.ASE_SRP_5_8_2}, + {"5.8.2", ASESRPVersions.ASE_SRP_5_8_2}, + {"5.9.0-preview", ASESRPVersions.ASE_SRP_5_9_0}, + {"5.9.0", ASESRPVersions.ASE_SRP_5_9_0}, + {"5.10.0-preview", ASESRPVersions.ASE_SRP_5_10_0}, + {"5.10.0", ASESRPVersions.ASE_SRP_5_10_0}, + {"5.13.0-preview", ASESRPVersions.ASE_SRP_5_13_0}, + {"5.13.0", ASESRPVersions.ASE_SRP_5_13_0}, + {"5.16.1-preview", ASESRPVersions.ASE_SRP_5_16_1}, + {"5.16.1", ASESRPVersions.ASE_SRP_5_16_1}, + {"6.9.0", ASESRPVersions.ASE_SRP_6_9_0}, + {"6.9.0-preview", ASESRPVersions.ASE_SRP_6_9_0}, + {"6.9.1", ASESRPVersions.ASE_SRP_6_9_1}, + {"6.9.1-preview", ASESRPVersions.ASE_SRP_6_9_1}, + {"6.9.2", ASESRPVersions.ASE_SRP_6_9_2}, + {"6.9.2-preview", ASESRPVersions.ASE_SRP_6_9_2}, + {"7.0.1", ASESRPVersions.ASE_SRP_7_0_1}, + {"7.0.1-preview", ASESRPVersions.ASE_SRP_7_0_1}, + {"7.1.1", ASESRPVersions.ASE_SRP_7_1_1}, + {"7.1.1-preview", ASESRPVersions.ASE_SRP_7_1_1}, + {"7.1.2", ASESRPVersions.ASE_SRP_7_1_2}, + {"7.1.2-preview", ASESRPVersions.ASE_SRP_7_1_2}, + {"7.1.5", ASESRPVersions.ASE_SRP_7_1_5}, + {"7.1.5-preview", ASESRPVersions.ASE_SRP_7_1_5}, + {"7.1.6", ASESRPVersions.ASE_SRP_7_1_6}, + {"7.1.6-preview", ASESRPVersions.ASE_SRP_7_1_6}, + {"7.1.7", ASESRPVersions.ASE_SRP_7_1_7}, + {"7.1.7-preview", ASESRPVersions.ASE_SRP_7_1_7}, + {"7.1.8", ASESRPVersions.ASE_SRP_7_1_8}, + {"7.1.8-preview", ASESRPVersions.ASE_SRP_7_1_8}, + {"7.2.0", ASESRPVersions.ASE_SRP_7_2_0}, + {"7.2.0-preview", ASESRPVersions.ASE_SRP_7_2_0}, + {"7.2.1", ASESRPVersions.ASE_SRP_7_2_1}, + {"7.2.1-preview", ASESRPVersions.ASE_SRP_7_2_1}, + }; + + + + private static Dictionary m_srpToASEPackageLW = new Dictionary() + { + {ASESRPVersions.ASE_SRP_3_0_0, "b53d2f3b156ff104f90d4d7693d769c8"}, + {ASESRPVersions.ASE_SRP_3_1_0, "b53d2f3b156ff104f90d4d7693d769c8"}, + {ASESRPVersions.ASE_SRP_3_3_0, "b53d2f3b156ff104f90d4d7693d769c8"}, + {ASESRPVersions.ASE_SRP_4_1_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_2_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_3_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_6_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_8_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_9_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_4_10_0, "3e8eabcfae1e5aa4397de89fedeb48db"}, + {ASESRPVersions.ASE_SRP_5_7_2, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_5_8_2, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_5_9_0, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_5_10_0, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_5_13_0, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_5_16_1, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_6_9_0, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_6_9_1, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_6_9_2, "4c816894a3147d343891060451241bfe"}, + {ASESRPVersions.ASE_SRP_7_0_1, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_1, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_2, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_5, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_6, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_7, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_1_8, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_2_0, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_7_2_1, "57fcea0ed8b5eb347923c4c21fa31b57"}, + {ASESRPVersions.ASE_SRP_RECENT, "57fcea0ed8b5eb347923c4c21fa31b57"} + }; + + private static Dictionary m_srpToASEPackageHD = new Dictionary() + { + {ASESRPVersions.ASE_SRP_3_0_0, "4dc1afbcc68875c4780502f5e6b80158"}, + {ASESRPVersions.ASE_SRP_3_1_0, "4dc1afbcc68875c4780502f5e6b80158"}, + {ASESRPVersions.ASE_SRP_3_3_0, "4dc1afbcc68875c4780502f5e6b80158"}, + {ASESRPVersions.ASE_SRP_4_1_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_2_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_3_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_6_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_8_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_9_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_4_10_0, "5d615bf612f33364e96fb9fd2959ae9c"}, + {ASESRPVersions.ASE_SRP_5_7_2, "f51b7b861facbc3429fcc5f1f6f91183"}, + {ASESRPVersions.ASE_SRP_5_8_2, "2d7fe4f7c19e90f41b893bc01fc17230"}, + {ASESRPVersions.ASE_SRP_5_9_0, "2d7fe4f7c19e90f41b893bc01fc17230"}, + {ASESRPVersions.ASE_SRP_5_10_0, "2d7fe4f7c19e90f41b893bc01fc17230"}, + {ASESRPVersions.ASE_SRP_5_13_0, "2d7fe4f7c19e90f41b893bc01fc17230"}, + {ASESRPVersions.ASE_SRP_5_16_1, "2d7fe4f7c19e90f41b893bc01fc17230"}, + {ASESRPVersions.ASE_SRP_6_9_0, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_6_9_1, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_6_9_2, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_0_1, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_1, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_2, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_5, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_6, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_7, "e137dba02f4d0f542ab09dcedea27314"}, + {ASESRPVersions.ASE_SRP_7_1_8, "9a5e61a8b3421b944863d0946e32da0a"}, + {ASESRPVersions.ASE_SRP_7_2_0, "9a5e61a8b3421b944863d0946e32da0a"}, + {ASESRPVersions.ASE_SRP_7_2_1, "9a5e61a8b3421b944863d0946e32da0a"}, + {ASESRPVersions.ASE_SRP_RECENT, "9a5e61a8b3421b944863d0946e32da0a"} + }; + + private static Shader m_lateShader; + private static Material m_lateMaterial; + private static AmplifyShaderFunction m_lateShaderFunction; + + + public static void RequestInfo() + { + if( !m_requireUpdateList && m_importingPackage == ASEImportState.None ) + { + m_requireUpdateList = true; + m_packageListRequest = UnityEditor.PackageManager.Client.List( true ); + } + } + + static void FailedPackageImport( string packageName, string errorMessage ) + { + FinishImporter(); + } + + static void CancelledPackageImport( string packageName ) + { + FinishImporter(); + } + + static void CompletedPackageImport( string packageName ) + { + FinishImporter(); + } + + public static void StartImporting( string packagePath ) + { + if( !Preferences.GlobalAutoSRP ) + { + m_importingPackage = ASEImportState.None; + return; + } + AssetDatabase.importPackageCancelled += CancelledPackageImport; + AssetDatabase.importPackageCompleted += CompletedPackageImport; + AssetDatabase.importPackageFailed += FailedPackageImport; + AssetDatabase.ImportPackage( packagePath, false ); + //AssetDatabaseEX.ImportPackageImmediately( packagePath ); + } + + public static void FinishImporter() + { + m_importingPackage = ASEImportState.None; + AssetDatabase.importPackageCancelled -= CancelledPackageImport; + AssetDatabase.importPackageCompleted -= CompletedPackageImport; + AssetDatabase.importPackageFailed -= FailedPackageImport; + } + + public static void SetupLateShader( Shader shader ) + { + RequestInfo(); + m_lateShader = shader; + EditorApplication.delayCall += LateShaderOpener; + } + + public static void LateShaderOpener() + { + Preferences.LoadDefaults(); + Update(); + if( IsProcessing ) + { + EditorApplication.delayCall += LateShaderOpener; + } + else + { + AmplifyShaderEditorWindow.ConvertShaderToASE( m_lateShader ); + m_lateShader = null; + } + } + + public static void SetupLateMaterial( Material material ) + { + RequestInfo(); + m_lateMaterial = material; + EditorApplication.delayCall += LateMaterialOpener; + } + + public static void LateMaterialOpener() + { + Preferences.LoadDefaults(); + Update(); + if( IsProcessing ) + { + EditorApplication.delayCall += LateMaterialOpener; + } + else + { + AmplifyShaderEditorWindow.LoadMaterialToASE( m_lateMaterial ); + m_lateMaterial = null; + } + } + + public static void SetupLateShaderFunction( AmplifyShaderFunction shaderFunction ) + { + RequestInfo(); + m_lateShaderFunction = shaderFunction; + EditorApplication.delayCall += LateShaderFunctionOpener; + } + + public static void LateShaderFunctionOpener() + { + Preferences.LoadDefaults(); + Update(); + if( IsProcessing ) + { + EditorApplication.delayCall += LateShaderFunctionOpener; + } + else + { + AmplifyShaderEditorWindow.LoadShaderFunctionToASE( m_lateShaderFunction, false ); + m_lateShaderFunction = null; + } + } + + public static void Update() + { + //if( m_lwPackageInfo != null ) + //{ + // if( m_srpVersionConverter[ m_lwPackageInfo.version ] != m_currentLWVersion ) + // { + // m_currentLWVersion = m_srpVersionConverter[ m_lwPackageInfo.version ]; + // EditorPrefs.SetInt( LWEditorPrefsId, (int)m_currentLWVersion ); + // m_importingPackage = ASEImportState.Lightweight; + // string packagePath = AssetDatabase.GUIDToAssetPath( m_srpToASEPackageLW[ m_currentLWVersion ] ); + // StartImporting( packagePath ); + // } + //} + + //if( m_hdPackageInfo != null ) + //{ + // if( m_srpVersionConverter[ m_hdPackageInfo.version ] != m_currentHDVersion ) + // { + // m_currentHDVersion = m_srpVersionConverter[ m_hdPackageInfo.version ]; + // EditorPrefs.SetInt( HDEditorPrefsId, (int)m_currentHDVersion ); + // m_importingPackage = ASEImportState.HD; + // string packagePath = AssetDatabase.GUIDToAssetPath( m_srpToASEPackageHD[ m_currentHDVersion ] ); + // StartImporting( packagePath ); + // } + //} + + if( m_requireUpdateList && m_importingPackage == ASEImportState.None ) + { + if( m_packageListRequest != null && m_packageListRequest.IsCompleted ) + { + m_requireUpdateList = false; + foreach( UnityEditor.PackageManager.PackageInfo pi in m_packageListRequest.Result ) + { + if( pi.name.Equals( LWPackageId ) ) + { + m_currentLWVersion = ASESRPVersions.ASE_SRP_RECENT; + m_lwPackageInfo = pi; + ASESRPVersions oldVersion = (ASESRPVersions)EditorPrefs.GetInt( LWEditorPrefsId ); + if( m_srpVersionConverter.ContainsKey( pi.version ) ) + { + m_currentLWVersion = m_srpVersionConverter[ pi.version ]; + } + else + { + m_currentLWVersion = ASESRPVersions.ASE_SRP_RECENT; + } + + EditorPrefs.SetInt( LWEditorPrefsId, (int)m_currentLWVersion ); + bool foundNewVersion = oldVersion != m_currentLWVersion; + if( !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.LightweigthPBRGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.LightweigthUnlitGUID ) ) || + foundNewVersion + ) + { + if( foundNewVersion ) + Debug.Log( LightweightNewVersionDetected ); + + m_importingPackage = ASEImportState.Lightweight; + string guid = m_srpToASEPackageLW.ContainsKey( m_currentLWVersion ) ? m_srpToASEPackageLW[ m_currentLWVersion ] : m_srpToASEPackageLW[ ASESRPVersions.ASE_SRP_RECENT ]; + string packagePath = AssetDatabase.GUIDToAssetPath( guid ); + StartImporting( packagePath ); + } + } + + if( pi.name.Equals( UniversalPackageId ) ) + { + m_currentLWVersion = ASESRPVersions.ASE_SRP_RECENT; + m_lwPackageInfo = pi; + ASESRPVersions oldVersion = (ASESRPVersions)EditorPrefs.GetInt( LWEditorPrefsId ); + if( m_srpVersionConverter.ContainsKey( pi.version ) ) + { + m_currentLWVersion = m_srpVersionConverter[ pi.version ]; + } + else + { + m_currentLWVersion = ASESRPVersions.ASE_SRP_RECENT; + } + + EditorPrefs.SetInt( LWEditorPrefsId, (int)m_currentLWVersion ); + bool foundNewVersion = oldVersion != m_currentLWVersion; + + int urpVersion = EditorPrefs.GetInt( URPTemplateVersion, m_urpTemplateVersion ); + if( urpVersion < m_urpTemplateVersion ) + foundNewVersion = true; + EditorPrefs.SetInt( URPTemplateVersion, m_urpTemplateVersion ); + + if( !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.UniversalPBRGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.UniversalUnlitGUID ) ) || + foundNewVersion + ) + { + if( foundNewVersion ) + Debug.Log( LightweightNewVersionDetected ); + + m_importingPackage = ASEImportState.Lightweight; + string guid = m_srpToASEPackageLW.ContainsKey( m_currentLWVersion ) ? m_srpToASEPackageLW[ m_currentLWVersion ] : m_srpToASEPackageLW[ ASESRPVersions.ASE_SRP_RECENT ]; + string packagePath = AssetDatabase.GUIDToAssetPath( guid ); + StartImporting( packagePath ); + } + + } + + if( pi.name.Equals( HDPackageId ) ) + { + m_currentHDVersion = ASESRPVersions.ASE_SRP_RECENT; + m_hdPackageInfo = pi; + ASESRPVersions oldVersion = (ASESRPVersions)EditorPrefs.GetInt( HDEditorPrefsId ); + if( m_srpVersionConverter.ContainsKey( pi.version ) ) + { + m_currentHDVersion = m_srpVersionConverter[ pi.version ]; + } + else + { + m_currentHDVersion = ASESRPVersions.ASE_SRP_RECENT; + } + + EditorPrefs.SetInt( HDEditorPrefsId, (int)m_currentHDVersion ); + bool foundNewVersion = oldVersion != m_currentHDVersion; + + int hdrpVersion = EditorPrefs.GetInt( HDRPTemplateVersion, m_hdrpTemplateVersion ); + if( hdrpVersion < m_hdrpTemplateVersion ) + foundNewVersion = true; + EditorPrefs.SetInt( HDRPTemplateVersion, m_hdrpTemplateVersion ); + +#if UNITY_2019_3_OR_NEWER + if( !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDNewLitGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDNewPBRGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDNewUnlitGUID ) ) || +#else + if( !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDLitGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDPBRGUID ) ) || + !File.Exists( AssetDatabase.GUIDToAssetPath( TemplatesManager.HDUnlitGUID ) ) || +#endif + foundNewVersion + ) + { + if( foundNewVersion ) + Debug.Log( HDNewVersionDetected ); + + m_importingPackage = m_importingPackage == ASEImportState.Lightweight ? ASEImportState.Both : ASEImportState.HD; + string guid = m_srpToASEPackageHD.ContainsKey( m_currentHDVersion ) ? m_srpToASEPackageHD[ m_currentHDVersion ] : m_srpToASEPackageHD[ ASESRPVersions.ASE_SRP_RECENT ]; + string packagePath = AssetDatabase.GUIDToAssetPath( guid ); + StartImporting( packagePath ); + } + + } + } + } + } + } + + public static void SetSRPInfoOnDataCollector( ref MasterNodeDataCollector dataCollector ) + { + Preferences.LoadDefaults(); + if( m_requireUpdateList ) + Update(); + + if( dataCollector.CurrentSRPType == TemplateSRPType.HD ) + { + dataCollector.AddToDirectives( string.Format( SPKeywordFormat, (int)m_currentHDVersion ) ,-1, AdditionalLineType.Define ); + if( m_currentHDVersion < ASESRPVersions.ASE_SRP_4_9_0 ) + { + dataCollector.AddFunction( GetNormalWSFunc[ 0 ], GetNormalWSFunc, false ); + } + + if( m_currentHDVersion < ASESRPVersions.ASE_SRP_4_8_0 ) + { + dataCollector.AddFunction( BuildWordTangentFunc[ 0 ], BuildWordTangentFunc, false ); + } + } + + if( dataCollector.CurrentSRPType == TemplateSRPType.Lightweight ) + dataCollector.AddToDirectives( string.Format( SPKeywordFormat, (int)m_currentLWVersion ), -1, AdditionalLineType.Define ); + } + public static ASESRPVersions CurrentHDVersion { get { return m_currentHDVersion; } } + public static ASESRPVersions CurrentLWVersion { get { return m_currentLWVersion; } } + public static bool CheckImporter { get { return m_importingPackage != ASEImportState.None; } } + public static bool IsProcessing { get { return m_requireUpdateList && m_importingPackage == ASEImportState.None; } } + } +} +#endif -- cgit v1.1-26-g67d0