44
55using  System ; 
66using  System . Collections . Generic ; 
7+ using  System . Text ; 
78using  UnityEditor . Modules ; 
89using  UnityEditor . Rendering ; 
910using  UnityEngine ; 
@@ -427,6 +428,43 @@ public static void RemovePlayerSettings(BuildProfile buildProfile)
427428            buildProfile . RemovePlayerSettings ( clearYaml :  true ) ; 
428429        } 
429430
431+         /// <summary> 
432+         /// Create graphics settings override for build profile 
433+         /// </summary> 
434+         public  static   void  CreateGraphicsSettings ( BuildProfile  buildProfile ) 
435+         { 
436+             buildProfile . CreateGraphicsSettings ( ) ; 
437+         } 
438+ 
439+         /// <summary> 
440+         /// Remove build profile graphics settings override 
441+         /// </summary> 
442+         public  static   void  RemoveGraphicsSettings ( BuildProfile  buildProfile ) 
443+         { 
444+             buildProfile . RemoveGraphicsSettings ( ) ; 
445+         } 
446+ 
447+         /// <summary> 
448+         /// Create graphics settings quality for build profile 
449+         /// </summary> 
450+         public  static   void  CreateQualitySettings ( BuildProfile  buildProfile ) 
451+         { 
452+             buildProfile . CreateQualitySettings ( ) ; 
453+         } 
454+ 
455+         /// <summary> 
456+         /// Remove build profile quality settings override 
457+         /// </summary> 
458+         public  static   void  RemoveQualitySettings ( BuildProfile  buildProfile ) 
459+         { 
460+             buildProfile . RemoveQualitySettings ( ) ; 
461+         } 
462+ 
463+         public  static   void  NotifyBuildProfileExtensionOfCreation ( BuildProfile  buildProfile ,  int  preconfiguredSettingsVariant ) 
464+         { 
465+             buildProfile . NotifyBuildProfileExtensionOfCreation ( preconfiguredSettingsVariant ) ; 
466+         } 
467+ 
430468        /// <summary> 
431469        /// Create player settings for build profile based on global player settings 
432470        /// </summary> 
@@ -680,7 +718,7 @@ public static List<BuildProfile> GetAllBuildProfiles()
680718            return  result ; 
681719        } 
682720
683-         public  static   string [ ]  GetSettingsRequiringRestart ( PlayerSettings  previousProfileSettings ,  PlayerSettings  newProfileSettings ,  BuildTarget  oldBuildTarget ,  BuildTarget  newBuildTarget ) 
721+         public  static   PlayerSettingsRequiringRestart [ ]  GetSettingsRequiringRestart ( PlayerSettings  previousProfileSettings ,  PlayerSettings  newProfileSettings ,  BuildTarget  oldBuildTarget ,  BuildTarget  newBuildTarget ) 
684722        { 
685723            return  PlayerSettings . GetSettingsRequiringRestart ( previousProfileSettings ,  newProfileSettings ,  oldBuildTarget ,  newBuildTarget ) ; 
686724        } 
@@ -722,14 +760,19 @@ public static bool HandlePlayerSettingsChanged(
722760                } 
723761            } 
724762
725-             string [ ]  settingsRequiringRestart  =  GetSettingsRequiringRestart ( currentPlayerSettings , 
763+             var  settingsRequiringRestart  =  GetSettingsRequiringRestart ( currentPlayerSettings , 
726764                nextPlayerSettings ,  currentBuildTarget ,  nextBuildTarget ) ; 
727765            // if we've found settings that need restarting.. 
728766            if  ( settingsRequiringRestart . Length  >  0  ) 
729767            { 
730768                // ..we show the restart prompt, if the user restarts, we add a restart call to the editor 
731769                if  ( ShowRestartEditorDialog ( settingsRequiringRestart ) ) 
732770                { 
771+                     if  ( ContainsPlayerSetting ( settingsRequiringRestart ,  PlayerSettingsRequiringRestart . VirtualTexturing ) ) 
772+                     { 
773+                         PlayerSettings . SyncVirtualTexturingState ( nextPlayerSettings ) ; 
774+                     } 
775+ 
733776                    EditorApplication . delayCall  +=  EditorApplication . RestartEditorAndRecompileScripts ; 
734777                    return  true ; 
735778                } 
@@ -746,22 +789,21 @@ public static bool HandlePlayerSettingsChanged(
746789            return  true ; 
747790        } 
748791
792+ 
749793        /// <summary> 
750794        /// Show the restart editor dialog with the names of the settings that required the restart to take effect. 
751795        /// </summary> 
752-         static   bool  ShowRestartEditorDialog ( string [ ]  settingsRequiringRestart ) 
796+         static   bool  ShowRestartEditorDialog ( PlayerSettingsRequiringRestart [ ]  settingsRequiringRestart ) 
753797        { 
754-             var  editorPromptText  =  new  System . Text . StringBuilder ( ) ; 
798+             var  editorPromptText  =  new  StringBuilder ( ) ; 
755799            editorPromptText . AppendLine ( L10n . Tr ( "The Unity editor must be restarted for the following settings to take effect:" ) ) ; 
756-             for  ( int  i  =  0 ;  i  <  settingsRequiringRestart . Length ;  i ++ ) 
757-             { 
758-                 editorPromptText . AppendLine ( settingsRequiringRestart [ i ] ) ; 
759-             } 
760- 
800+             var  playerSettingNames  =  GetPlayerSettingNamesToEditorRestartPromptText ( settingsRequiringRestart ) ; 
801+             editorPromptText . AppendLine ( playerSettingNames . ToString ( ) ) ; 
761802            return  EditorUtility . DisplayDialog ( L10n . Tr ( "Unity editor restart required" ) , 
762803                editorPromptText . ToString ( ) ,  L10n . Tr ( "Apply" ) ,  L10n . Tr ( "Cancel" ) ) ; 
763804        } 
764805
806+ 
765807        internal  static   PlayerSettings  GetBuildProfileOrGlobalPlayerSettings ( BuildProfile  buildProfile ) 
766808        { 
767809            if  ( buildProfile  ==  null  ||  buildProfile . playerSettings  ==  null ) 
@@ -770,5 +812,62 @@ internal static PlayerSettings GetBuildProfileOrGlobalPlayerSettings(BuildProfil
770812            } 
771813            return  buildProfile . playerSettings ; 
772814        } 
815+ 
816+         public  static   bool  IsBasePlatformOfActivePlatform ( GUID  platformGuid ) 
817+         { 
818+             var  module  =  ModuleManager . FindPlatformSupportModule ( EditorUserBuildSettings . activePlatformGuid ) ; 
819+             if  ( module  ==  null ) 
820+                 return  false ; 
821+             if  ( module  is  IDerivedBuildTargetProvider  derivedBuildTargetProvider ) 
822+             { 
823+                 var  basePlatformGuid  =  derivedBuildTargetProvider . GetBasePlatformGuid ( ) ; 
824+                 return  basePlatformGuid  ==  platformGuid ; 
825+             } 
826+             return  false ; 
827+         } 
828+ 
829+         public  static   void  RepaintProjectSettingsWindow ( ) 
830+         { 
831+             foreach  ( var  window  in  EditorWindow . activeEditorWindows ) 
832+             { 
833+                 if  ( window  is  ProjectSettingsWindow ) 
834+                 { 
835+                     window . Repaint ( ) ; 
836+                 } 
837+             } 
838+         } 
839+ 
840+         /* 
841+          * private helper functions 
842+          */ 
843+         private  static   bool  ContainsPlayerSetting ( PlayerSettingsRequiringRestart [ ]  playerSettings ,  PlayerSettingsRequiringRestart  targetSetting ) 
844+         { 
845+             foreach  ( PlayerSettingsRequiringRestart  setting  in  playerSettings ) 
846+             { 
847+                 if  ( setting  ==  targetSetting ) 
848+                 { 
849+                     return  true ; 
850+                 } 
851+             } 
852+             return  false ; 
853+         } 
854+ 
855+         private  static   StringBuilder  GetPlayerSettingNamesToEditorRestartPromptText ( PlayerSettingsRequiringRestart [ ]  settingsRequiringRestart ) 
856+         { 
857+             var  settingsText  =  new  StringBuilder ( ) ; 
858+             foreach  ( PlayerSettingsRequiringRestart  setting  in  settingsRequiringRestart ) 
859+             { 
860+                 var  settingPromptText  =  setting  switch 
861+                 { 
862+                     PlayerSettingsRequiringRestart . IncrementalGC  =>  "Incremental GC" , 
863+                     PlayerSettingsRequiringRestart . ActiveInputHandling  =>  "Active Input Handling" , 
864+                     PlayerSettingsRequiringRestart . GraphicsJobs  =>  "Graphics Jobs" , 
865+                     PlayerSettingsRequiringRestart . VirtualTexturing  =>  "Virtual Texturing" , 
866+                     _ =>  string . Empty 
867+                 } ; 
868+                 settingsText . AppendLine ( settingPromptText ) ; 
869+             } 
870+             return  settingsText ; 
871+         } 
773872    } 
774873} 
0 commit comments