AssemblyOptionsSettings.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace Unity.VisualScripting
  4. {
  5. public class AssemblyOptionsSettings
  6. {
  7. private const string CompleteLabel = "Regenerate Nodes";
  8. private readonly PluginConfigurationItemMetadata _assemblyOptionsMetadata;
  9. private bool _showAssembly = false;
  10. private const string TitleAssembly = "Node Library";
  11. private const string DescriptionAssembly = "Choose the assemblies in which you want to look for nodes.\n"
  12. + "By default, all project and Unity assemblies are included.\n"
  13. + "Unless you use a third-party plugin distributed as a DLL, you shouldn't need to change this.";
  14. public AssemblyOptionsSettings(BoltCoreConfiguration coreConfig)
  15. {
  16. _assemblyOptionsMetadata = coreConfig.GetMetadata(nameof(coreConfig.assemblyOptions));
  17. }
  18. private static class Styles
  19. {
  20. public static readonly GUIStyle background;
  21. public static readonly GUIStyle defaultsButton;
  22. public const float OptionsWidth = 250;
  23. static Styles()
  24. {
  25. background = new GUIStyle(LudiqStyles.windowBackground);
  26. background.padding = new RectOffset(20, 20, 20, 20);
  27. defaultsButton = new GUIStyle("Button");
  28. defaultsButton.padding = new RectOffset(10, 10, 4, 4);
  29. }
  30. }
  31. public void OnGUI()
  32. {
  33. _showAssembly = EditorGUILayout.Foldout(_showAssembly, new GUIContent(TitleAssembly, DescriptionAssembly));
  34. if (_showAssembly)
  35. {
  36. GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true));
  37. float height = LudiqGUI.GetInspectorHeight(null, _assemblyOptionsMetadata, Styles.OptionsWidth, GUIContent.none);
  38. EditorGUI.BeginChangeCheck();
  39. var position = GUILayoutUtility.GetRect(Styles.OptionsWidth, height);
  40. LudiqGUI.Inspector(_assemblyOptionsMetadata, position, GUIContent.none);
  41. if (EditorGUI.EndChangeCheck())
  42. {
  43. _assemblyOptionsMetadata.Save();
  44. Codebase.UpdateSettings();
  45. }
  46. if (GUILayout.Button("Reset to Defaults", Styles.defaultsButton))
  47. {
  48. _assemblyOptionsMetadata.Reset(true);
  49. _assemblyOptionsMetadata.Save();
  50. }
  51. LudiqGUI.EndVertical();
  52. }
  53. if (GUILayout.Button(CompleteLabel, Styles.defaultsButton))
  54. {
  55. UnitBase.Rebuild();
  56. EditorUtility.DisplayDialog("Visual Script", "Regenerate Nodes completed", "OK");
  57. }
  58. }
  59. }
  60. }