Esempio n. 1
0
        // PUBLIC METHODS: ------------------------------------------------------------------------

        public static List <Data> Sort(Node node, BehaviorGraphEditor editor)
        {
            if (node == null)
            {
                return(new List <Data>());
            }

            Data root = BuildData(editor, node, null);

            CalculateSizes(root);
            CalculatePositions(root, 0f);

            Stack <Data> candidates = new Stack <Data>();

            candidates.Push(root);

            List <Data> list = new List <Data>();

            while (candidates.Count > 0)
            {
                Data data = candidates.Pop();
                list.Add(data);

                for (int i = 0; i < data.children.Count; ++i)
                {
                    candidates.Push(data.children[i]);
                }
            }

            return(list);
        }
Esempio n. 2
0
        // PRIVATE METHODS: -----------------------------------------------------------------------

        private static Data BuildData(BehaviorGraphEditor editor, Node node, Data parent)
        {
            Data data = new Data(
                node,
                GetWidth(editor, node),
                GetHeight(editor, node),
                parent
                );

            int count = node.outputs.Count;

            for (int i = 0; i < count; ++i)
            {
                Data currChild = BuildData(editor, node.outputs[i], data);
                data.children.Add(currChild);
            }

            return(data);
        }
Esempio n. 3
0
        private static float GetHeight(BehaviorGraphEditor editor, Node node)
        {
            int nodeID = node.GetInstanceID();

            return(editor.nodeEditors[nodeID].GetNodeHeight());
        }