public override VisualElement CreateInspectorGUI() { rootElement = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(Uxml).CloneTree(); rootElement.Query <TextField>(null, "requires-editor-dll-rebuild").ForEach(ele => { ele.isDelayed = true; ele.RegisterValueChangedCallback(e => { /* AssetDatabase.SaveAssets(); * ActionEditorUtilityProducer.CreateAssembly(); */ }); }); var delegateType = rootElement.Q <PropertyField>("delegateType"); delegateType.RegisterCallback <ChangeEvent <SerializableType> >(evt => { if (evt.newValue != evt.previousValue) { if (ActionDefinitionAsset.LoadAll().Any(a => a != serializedObject.targetObject && a.delegateType == evt.newValue)) { Debug.LogError("ActionDefinitions must have unique delegates."); ((ActionDefinitionAsset)serializedObject.targetObject).delegateType = evt.previousValue; EditorUtility.SetDirty(serializedObject.targetObject); } } }); rootElement.Query <PropertyField>(null, "requires-dll-rebuild--type").ForEach(ele => ele.RegisterCallback <ChangeEvent <SerializableType> >(evt => UpdateAssemblyData())); rootElement.Query <PropertyField>(null, "requires-dll-rebuild--method").ForEach(ele => ele.RegisterCallback <ChangeEvent <SerializableMethod> >(evt => UpdateAssemblyData())); rootElement.Query <PropertyField>(null, "requires-dll-rebuild--bool").ForEach(ele => ele.RegisterValueChangeCallback(evt => UpdateAssemblyData())); var aggregator = rootElement.Q <PropertyField>("aggregator"); BindAggregatorField(delegateType, aggregator); return(rootElement); }
private static List <ActionId> GetItems() { var items = ActionDefinitionAsset.LoadAll().Select(definition => definition.id).ToList(); items.Insert(0, default); return(items); }
public override VisualElement CreatePropertyGUI(SerializedProperty property) { var settings = ProjectUtility.GetProjectSettings <ActionGraphGlobalSettings>(); var definitions = ActionDefinitionAsset.LoadAll().ToArray(); List <string> guids = definitions.Select(a => a.id.guid).ToList(); guids.Insert(0, string.Empty); var popup = new PopupField <string>(property.displayName, guids, property.FindPropertyRelative("guid").stringValue, (choice) => FormatCell(definitions, choice) , (choice) => FormatCell(definitions, choice) ); popup.SetEnabled(settings != null); popup.BindProperty(property.FindPropertyRelative("guid")); return(popup); }