public ExposedDelegateEditor(UtilityAIActionEditor utilityAIActionEditor, ExposedDelegate exposedDelegate) { this.utilityAIActionEditor = utilityAIActionEditor; this.exposedDelegate = exposedDelegate; VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/UtilityAI/Scripts/Editor/Exposed Delegate Editor/ExposedDelegateEditor.uxml"); visualTree.CloneTree(this); StyleSheet stylesheet = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/UtilityAI/Scripts/Editor/Exposed Delegate Editor/ExposedDelegateEditor.uss"); this.styleSheets.Add(stylesheet); this.AddToClassList("exposedDelegateEditor"); Button btnAddDelegateEntry = this.Query <Button>("btnAddNewMethod").First(); btnAddDelegateEntry.BringToFront(); btnAddDelegateEntry.clickable.clicked += AddDelegateEntry; Button btnRemoveAllDelegateEntries = this.Query <Button>("btnRemoveAllMethods").First(); btnRemoveAllDelegateEntries.BringToFront(); btnRemoveAllDelegateEntries.clickable.clicked += RemoveAllDelegateEntries; delegateEntriesList = this.Query <Foldout>("delegateEntries"); delegateEntriesList.Query <Toggle>().First().AddToClassList("delegateEntryFoldout"); delegateEntriesContainer = delegateEntriesList.Query <VisualElement>("delegateEntriesContainer").First(); UpdateDelegateEntries(); }
public void UpdateActions() { actionContainer.Clear(); foreach (UtilityAIAction action in utilityAIAgent.actions) { UtilityAIActionEditor utilityAIActionEditor = new UtilityAIActionEditor(this, action); actionContainer.Add(utilityAIActionEditor); } }
public UtilityAIConsiderationEditor(UtilityAIActionEditor utilityAIActionEditor, UtilityAIConsideration consideration) { this.consideration = consideration; this.utilityAIActionEditor = utilityAIActionEditor; VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/UtilityAI/Scripts/Editor/Utility AI Consideration Editor/UtilityAIConsiderationEditor.uxml"); visualTree.CloneTree(this); StyleSheet stylesheet = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/UtilityAI/Scripts/Editor/Utility AI Consideration Editor/UtilityAIConsiderationEditor.uss"); this.styleSheets.Add(stylesheet); this.AddToClassList("utilityAIActionEditor"); Button moveUpButton = this.Query <Button>("moveUpButton").First(); moveUpButton.BringToFront(); moveUpButton.clickable.clicked += MoveConsiderationUp; Button moveDownButton = this.Query <Button>("moveDownButton").First(); moveDownButton.BringToFront(); moveDownButton.clickable.clicked += MoveConsiderationDown; Button deleteButton = this.Query <Button>("deleteButton").First(); deleteButton.BringToFront(); deleteButton.clickable.clicked += DeleteConsideration; considerationContainerFoldout = this.Query <Foldout>("consideration").First(); considerationContainerFoldout.text = consideration.name + ": "; considerationContainerFoldout.Query <Toggle>().First().AddToClassList("considerationFoldout"); responseCurveContainer = this.Query <VisualElement>("responseCurve").First(); TextField nameField = this.Query <TextField>("considerationName").First(); nameField.value = consideration.name; nameField.RegisterCallback <ChangeEvent <string> >( e => { if (e.newValue != "") { consideration.name = (string)e.newValue; considerationContainerFoldout.text = (string)e.newValue + ":"; } } ); Toggle enabledField = this.Query <Toggle>("considerationEnabled").First(); enabledField.value = consideration.enabled; enabledField.RegisterCallback <ChangeEvent <bool> >( e => { consideration.enabled = (bool)e.newValue; } ); VisualElement inputFieldContainer = this.Query <VisualElement>("considerationInput").First(); List <GameObject> considerationInputsPrefabs = FindPrefabsWithComponent <UtilityAIConsiderationInput>(); List <UtilityAIConsiderationInput> considerationInputs = new List <UtilityAIConsiderationInput>(); foreach (GameObject prefab in considerationInputsPrefabs) { considerationInputs.Add(prefab.GetComponent <UtilityAIConsiderationInput>()); } if (consideration.considerationInput == null) { consideration.considerationInput = considerationInputs[0]; } Debug.Log(consideration.considerationInput); int currentIndex = considerationInputs.IndexOf(consideration.considerationInput); PopupField <UtilityAIConsiderationInput> inputFieldPopup = new PopupField <UtilityAIConsiderationInput>("Consideration Inputs: ", considerationInputs, currentIndex); inputFieldPopup.RegisterCallback <ChangeEvent <UtilityAIConsiderationInput> >( e => { consideration.considerationInput = (UtilityAIConsiderationInput)e.newValue; } ); inputFieldContainer.Add(inputFieldPopup); UpdateResponseCurve(); }