Maze / Library /PackageCache /com.unity.visualscripting@1.8.0 /Editor /SettingsProvider /ProjectSettingsProviderView.cs
| using UnityEngine; | |
| using UnityEditor; | |
| namespace Unity.VisualScripting | |
| { | |
| internal class ProjectSettingsProviderView : SettingsProvider | |
| { | |
| private const string Path = "Project/Visual Scripting"; | |
| private const string Title = "Visual Scripting"; | |
| private const string TitleGroup = "Generate Nodes"; | |
| private readonly GUIStyle marginStyle = new GUIStyle() { margin = new RectOffset(10, 10, 10, 10) }; | |
| private AssemblyOptionsSettings _assemblyOptionsSettings; | |
| private TypeOptionsSettings _typeOptionsSettings; | |
| private CustomPropertyProviderSettings _customPropertyProviderSettings; | |
| private BackupSettings _backupSettings; | |
| private ScriptReferenceResolverSettings _scriptReferenceResolverSettings; | |
| private BoltCoreConfiguration _vsCoreConfig = null; | |
| public ProjectSettingsProviderView() : base(Path, SettingsScope.Project) | |
| { | |
| label = Title; | |
| EditorTypeUtility.Initialize(); | |
| } | |
| private void CreateOptionsIfNeeded() | |
| { | |
| _assemblyOptionsSettings ??= new AssemblyOptionsSettings(_vsCoreConfig); | |
| _typeOptionsSettings ??= new TypeOptionsSettings(_vsCoreConfig); | |
| _customPropertyProviderSettings ??= new CustomPropertyProviderSettings(); | |
| _backupSettings ??= new BackupSettings(); | |
| _scriptReferenceResolverSettings ??= new ScriptReferenceResolverSettings(); | |
| } | |
| private void EnsureConfig() | |
| { | |
| if (_vsCoreConfig != null) | |
| return; | |
| if (BoltCore.instance == null || BoltCore.Configuration == null) | |
| { | |
| UnityAPI.Initialize(); | |
| PluginContainer.Initialize(); | |
| } | |
| _vsCoreConfig = BoltCore.Configuration; | |
| } | |
| public override void OnGUI(string searchContext) | |
| { | |
| GUILayout.BeginVertical(marginStyle); | |
| if (VSUsageUtility.isVisualScriptingUsed) | |
| { | |
| EnsureConfig(); | |
| GUILayout.Space(5f); | |
| GUILayout.Label(TitleGroup, EditorStyles.boldLabel); | |
| GUILayout.Space(10f); | |
| // happens when opening unity with the settings window already opened. there's a delay until the singleton is assigned | |
| if (_vsCoreConfig == null) | |
| { | |
| EditorGUILayout.HelpBox("Loading Configuration...", MessageType.Info); | |
| return; | |
| } | |
| CreateOptionsIfNeeded(); | |
| _typeOptionsSettings.OnGUI(); | |
| GUILayout.Space(10f); | |
| _assemblyOptionsSettings.OnGUI(); | |
| GUILayout.Space(10f); | |
| _customPropertyProviderSettings.OnGUI(); | |
| GUILayout.Space(10f); | |
| _backupSettings.OnGUI(); | |
| GUILayout.Space(10f); | |
| _scriptReferenceResolverSettings.OnGUI(); | |
| } | |
| else | |
| { | |
| GUILayout.Space(5f); | |
| GUILayout.BeginHorizontal(EditorStyles.label); | |
| if (GUILayout.Button("Initialize Visual Scripting", Styles.defaultsButton)) | |
| { | |
| VSUsageUtility.isVisualScriptingUsed = true; | |
| } | |
| GUILayout.Space(5f); | |
| GUILayout.EndHorizontal(); | |
| } | |
| GUILayout.EndVertical(); | |
| } | |
| private static class Styles | |
| { | |
| static Styles() | |
| { | |
| defaultsButton = new GUIStyle("Button"); | |
| defaultsButton.padding = new RectOffset(10, 10, 4, 4); | |
| } | |
| public static readonly GUIStyle defaultsButton; | |
| } | |
| } | |
| } | |