@@ -377,13 +377,37 @@ public static IEnumerator SetMaterials(int materialID)
377377 switch ( lineSplit [ 0 ] )
378378 {
379379 case "Standard" :
380- EditorCoroutineUtility . StartCoroutineOwnerless ( UpdateShader ( LoadAsset < Material > ( lineSplit [ 1 ] ) , std ) ) ;
380+ Material matStd = LoadAsset < Material > ( lineSplit [ 1 ] ) ;
381+ if ( matStd == null )
382+ {
383+ Debug . LogWarning ( lineSplit [ 1 ] + " is not a valid asset." ) ;
384+ break ;
385+ }
386+ EditorCoroutineUtility . StartCoroutineOwnerless ( UpdateShader ( matStd , std ) ) ;
381387 break ;
388+
382389 case "Specular" :
383- EditorCoroutineUtility . StartCoroutineOwnerless ( UpdateShader ( LoadAsset < Material > ( lineSplit [ 1 ] ) , spc ) ) ;
390+ Material matSpc = LoadAsset < Material > ( lineSplit [ 1 ] ) ;
391+ if ( matSpc == null )
392+ {
393+ Debug . LogWarning ( lineSplit [ 1 ] + " is not a valid asset." ) ;
394+ break ;
395+ }
396+ EditorCoroutineUtility . StartCoroutineOwnerless ( UpdateShader ( matSpc , spc ) ) ;
384397 break ;
398+
385399 case "Foliage" :
386- LoadAsset < Material > ( lineSplit [ 1 ] ) . DisableKeyword ( "_TINTENABLED_ON" ) ;
400+ Material mat = LoadAsset < Material > ( lineSplit [ 1 ] ) ;
401+ if ( mat == null )
402+ {
403+ Debug . LogWarning ( lineSplit [ 1 ] + " is not a valid asset." ) ;
404+ break ;
405+ }
406+ mat . DisableKeyword ( "_TINTENABLED_ON" ) ;
407+ break ;
408+
409+ default :
410+ Debug . LogWarning ( lineSplit [ 0 ] + " is not a valid shader." ) ;
387411 break ;
388412 }
389413 yield return null ;
@@ -395,9 +419,6 @@ public static IEnumerator SetMaterials(int materialID)
395419
396420 public static IEnumerator UpdateShader ( Material mat , Shader shader )
397421 {
398- if ( mat == null )
399- yield break ;
400-
401422 mat . shader = shader ;
402423 yield return null ;
403424 switch ( mat . GetFloat ( "_Mode" ) )
@@ -415,6 +436,7 @@ public static IEnumerator UpdateShader(Material mat, Shader shader)
415436 SetKeyword ( mat , "_SPECGLOSSMAP" , mat . GetTexture ( "_SpecGlossMap" ) ) ;
416437 mat . renderQueue = - 1 ;
417438 break ;
439+
418440 case 1f :
419441 mat . SetOverrideTag ( "RenderType" , "TransparentCutout" ) ;
420442 mat . SetInt ( "_SrcBlend" , ( int ) UnityEngine . Rendering . BlendMode . One ) ;
@@ -426,6 +448,7 @@ public static IEnumerator UpdateShader(Material mat, Shader shader)
426448 mat . EnableKeyword ( "_NORMALMAP" ) ;
427449 mat . renderQueue = ( int ) UnityEngine . Rendering . RenderQueue . AlphaTest ;
428450 break ;
451+
429452 case 2f :
430453 mat . SetOverrideTag ( "RenderType" , "Transparent" ) ;
431454 mat . SetInt ( "_SrcBlend" , ( int ) UnityEngine . Rendering . BlendMode . SrcAlpha ) ;
@@ -437,6 +460,7 @@ public static IEnumerator UpdateShader(Material mat, Shader shader)
437460 mat . EnableKeyword ( "_NORMALMAP" ) ;
438461 mat . renderQueue = ( int ) UnityEngine . Rendering . RenderQueue . Transparent ;
439462 break ;
463+
440464 case 3f :
441465 mat . SetOverrideTag ( "RenderType" , "Transparent" ) ;
442466 mat . SetInt ( "_SrcBlend" , ( int ) UnityEngine . Rendering . BlendMode . One ) ;
0 commit comments