Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ProjectSettingsProviderView.cs 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace Unity.VisualScripting
  4. {
  5. internal class ProjectSettingsProviderView : SettingsProvider
  6. {
  7. private const string Path = "Project/Visual Scripting";
  8. private const string Title = "Visual Scripting";
  9. private const string TitleGroup = "Generate Nodes";
  10. private readonly GUIStyle marginStyle = new GUIStyle() { margin = new RectOffset(10, 10, 10, 10) };
  11. private AssemblyOptionsSettings _assemblyOptionsSettings;
  12. private TypeOptionsSettings _typeOptionsSettings;
  13. private CustomPropertyProviderSettings _customPropertyProviderSettings;
  14. private BackupSettings _backupSettings;
  15. private ScriptReferenceResolverSettings _scriptReferenceResolverSettings;
  16. private BoltCoreConfiguration _vsCoreConfig = null;
  17. public ProjectSettingsProviderView() : base(Path, SettingsScope.Project)
  18. {
  19. label = Title;
  20. EditorTypeUtility.Initialize();
  21. }
  22. private void CreateOptionsIfNeeded()
  23. {
  24. _assemblyOptionsSettings ??= new AssemblyOptionsSettings(_vsCoreConfig);
  25. _typeOptionsSettings ??= new TypeOptionsSettings(_vsCoreConfig);
  26. _customPropertyProviderSettings ??= new CustomPropertyProviderSettings();
  27. _backupSettings ??= new BackupSettings();
  28. _scriptReferenceResolverSettings ??= new ScriptReferenceResolverSettings();
  29. }
  30. private void EnsureConfig()
  31. {
  32. if (_vsCoreConfig != null)
  33. return;
  34. if (BoltCore.instance == null || BoltCore.Configuration == null)
  35. {
  36. UnityAPI.Initialize();
  37. PluginContainer.Initialize();
  38. }
  39. _vsCoreConfig = BoltCore.Configuration;
  40. }
  41. public override void OnGUI(string searchContext)
  42. {
  43. GUILayout.BeginVertical(marginStyle);
  44. if (VSUsageUtility.isVisualScriptingUsed)
  45. {
  46. EnsureConfig();
  47. GUILayout.Space(5f);
  48. GUILayout.Label(TitleGroup, EditorStyles.boldLabel);
  49. GUILayout.Space(10f);
  50. // happens when opening unity with the settings window already opened. there's a delay until the singleton is assigned
  51. if (_vsCoreConfig == null)
  52. {
  53. EditorGUILayout.HelpBox("Loading Configuration...", MessageType.Info);
  54. return;
  55. }
  56. CreateOptionsIfNeeded();
  57. _typeOptionsSettings.OnGUI();
  58. GUILayout.Space(10f);
  59. _assemblyOptionsSettings.OnGUI();
  60. GUILayout.Space(10f);
  61. _customPropertyProviderSettings.OnGUI();
  62. GUILayout.Space(10f);
  63. _backupSettings.OnGUI();
  64. GUILayout.Space(10f);
  65. _scriptReferenceResolverSettings.OnGUI();
  66. }
  67. else
  68. {
  69. GUILayout.Space(5f);
  70. GUILayout.BeginHorizontal(EditorStyles.label);
  71. if (GUILayout.Button("Initialize Visual Scripting", Styles.defaultsButton))
  72. {
  73. VSUsageUtility.isVisualScriptingUsed = true;
  74. }
  75. GUILayout.Space(5f);
  76. GUILayout.EndHorizontal();
  77. }
  78. GUILayout.EndVertical();
  79. }
  80. private static class Styles
  81. {
  82. static Styles()
  83. {
  84. defaultsButton = new GUIStyle("Button");
  85. defaultsButton.padding = new RectOffset(10, 10, 4, 4);
  86. }
  87. public static readonly GUIStyle defaultsButton;
  88. }
  89. }
  90. }