81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								using UnityEngine;
							 | 
						||
| 
								 | 
							
								using UnityEditor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Unity.VisualScripting
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public class AssemblyOptionsSettings
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        private const string CompleteLabel = "Regenerate Nodes";
							 | 
						||
| 
								 | 
							
								        private readonly PluginConfigurationItemMetadata _assemblyOptionsMetadata;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        private bool _showAssembly = false;
							 | 
						||
| 
								 | 
							
								        private const string TitleAssembly = "Node Library";
							 | 
						||
| 
								 | 
							
								        private const string DescriptionAssembly = "Choose the assemblies in which you want to look for nodes.\n"
							 | 
						||
| 
								 | 
							
								            + "By default, all project and Unity assemblies are included.\n"
							 | 
						||
| 
								 | 
							
								            + "Unless you use a third-party plugin distributed as a DLL, you shouldn't need to change this.";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        private ProjectAssemblyOptionsListInspector _assemblyOptionsInspector;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public AssemblyOptionsSettings(BoltCoreConfiguration coreConfig)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            _assemblyOptionsMetadata = coreConfig.GetMetadata(nameof(coreConfig.assemblyOptions));
							 | 
						||
| 
								 | 
							
								            _assemblyOptionsInspector = new ProjectAssemblyOptionsListInspector(_assemblyOptionsMetadata);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        private static class Styles
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            public static readonly GUIStyle background;
							 | 
						||
| 
								 | 
							
								            public static readonly GUIStyle defaultsButton;
							 | 
						||
| 
								 | 
							
								            public const float OptionsWidth = 250;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            static Styles()
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                background = new GUIStyle(LudiqStyles.windowBackground);
							 | 
						||
| 
								 | 
							
								                background.padding = new RectOffset(20, 20, 20, 20);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                defaultsButton = new GUIStyle("Button");
							 | 
						||
| 
								 | 
							
								                defaultsButton.padding = new RectOffset(10, 10, 4, 4);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public void OnGUI()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            _showAssembly = EditorGUILayout.Foldout(_showAssembly, new GUIContent(TitleAssembly, DescriptionAssembly));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (_showAssembly)
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                var height = _assemblyOptionsInspector.GetCachedHeight(Styles.OptionsWidth, GUIContent.none, null);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                EditorGUI.BeginChangeCheck();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                var position = GUILayoutUtility.GetRect(Styles.OptionsWidth, height);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _assemblyOptionsInspector.Draw(position, GUIContent.none);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (EditorGUI.EndChangeCheck())
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    _assemblyOptionsMetadata.SaveImmediately(true);
							 | 
						||
| 
								 | 
							
								                    Codebase.UpdateSettings();
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (GUILayout.Button("Reset to Defaults", Styles.defaultsButton) && EditorUtility.DisplayDialog("Reset the Node Library", "Reset the Node Library to its default state?", "Reset to Default", "Cancel"))
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    _assemblyOptionsMetadata.Reset(true);
							 | 
						||
| 
								 | 
							
								                    _assemblyOptionsMetadata.SaveImmediately(true);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                LudiqGUI.EndVertical();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (GUILayout.Button(CompleteLabel, Styles.defaultsButton))
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                UnitBase.Rebuild();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                EditorUtility.DisplayDialog("Visual Script", "Regenerate Nodes completed", "OK");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |