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);
        }
Ejemplo n.º 2
0
        private static List <ActionId> GetItems()
        {
            var items = ActionDefinitionAsset.LoadAll().Select(definition => definition.id).ToList();

            items.Insert(0, default);
            return(items);
        }
Ejemplo n.º 3
0
        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);
        }