Ejemplo n.º 1
0
    private void AddConsideration()
    {
        UtilityAIConsideration consideration = new UtilityAIConsideration();

        action.considerations.Add(consideration);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        UpdateConsiderations();
    }
    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();
    }
Ejemplo n.º 3
0
 public UtilityAIConsideration(UtilityAIConsideration consideration)
 {
     name          = consideration.name;
     enabled       = consideration.enabled;
     responseCurve = new ResponseCurve(consideration.responseCurve);
 }