コード例 #1
0
    private void OnGUI()
    {
        DrawGrid(20, 0.2f, Color.gray);
        DrawGrid(100, 0.4f, Color.gray);

        DrawNodes();
        DrawConnections();

        DrawConnectionLine(Event.current);
        var temp = (SkillTreeData)EditorGUILayout.ObjectField(MySkillTree, typeof(SkillTreeData), allowSceneObjects: false);

        if (temp != MySkillTree)
        {
            MySkillTree = temp;
            LoadNodes(temp);
        }
        DrawButtons();

        ProcessNodeEvents(Event.current);
        ProcessEvents(Event.current);


        if (GUI.changed)
        {
            Repaint();
        }
    }
コード例 #2
0
 void Awake()
 {
     skillPointsUpdateAction = EventManager.Convert <int>(SkillPointsUpdatedDelegate);
     EventManager.StartListening(GlobalEventsNameList.SKILL_POINTS_UPDATE, skillPointsUpdateAction);
     levelbutton = GetComponent <Button>();
     //MTM - this is the image overlay which visually changes from dark overlay to no overlay, so bright and active
     activeImageLayer         = GetComponent <Image>();
     skillSetLevelDescription = GetComponentInChildren <TextMeshProUGUI>();
     skillTreeData            = GameObject.FindObjectOfType <SkillTreeData>();
     //keep the initial state unavailable, so color of the activeImageLayer also unavailable.
 }
コード例 #3
0
    // Function for clearing data from the editor window
    private void ClearNodes()
    {
        MySkillTree = ScriptableObject.CreateInstance <SkillTreeData>();

        if (nodes != null && nodes.Count > 0)
        {
            Node node;
            while (nodes.Count > 0)
            {
                node = nodes[0];
                OnClickRemoveNode(node);
            }
        }
    }
コード例 #4
0
    private void LoadNodes(SkillTreeData skillData)
    {
        ClearNodes();
        MySkillTree = skillData;

        // Store the SkillTree as an array of Skill
        Skill[] _skillTree = skillData.skills;

        // Create nodes
        for (int i = 0; i < _skillTree.Length; ++i)
        {
            if (nodes == null)
            {
                nodes = new List <Node>();
            }

            nodes.Add(new Node(_skillTree[i].editor_position, 200, 150, nodeStyle, selectedNodeStyle, inPointStyle,
                               outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode,
                               _skillTree[i].id, _skillTree[i].unlocked, _skillTree[i].name, _skillTree[i].cost, _skillTree[i].description,
                               _skillTree[i].dependencies));
        }

        Node outNode;

        // Create connections
        for (int i = 0; i < nodes.Count; ++i)
        {
            for (int j = 0; j < nodes[i].skill.dependencies.Length; ++j)
            {
                for (int k = 0; k < nodes.Count; k++)
                {
                    if (nodes[i].skill.dependencies[j] == nodes[k].skill.id)
                    {
                        outNode = nodes[k];
                        OnClickOutPoint(outNode.outPoint);
                        break;
                    }
                }
                OnClickInPoint(nodes[i].inPoint);
            }
        }
    }
コード例 #5
0
    // Start is called before the first frame update

    void Awake()
    {
        skillTreeData = GameObject.FindObjectOfType <SkillTreeData>();
    }