123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- 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;
- }
- }
- }
|