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