Esempio n. 1
0
        private Node MakeCompositeNode(CompositeNodeTypes composite, List <uint> nodeIDs)
        {
            // Get nodes
            List <Node> children = new List <Node>();

            foreach (uint id in nodeIDs)
            {
                if (m_nodeDic.TryGetValue(id, out Node result))
                {
                    children.Add(result);
                }
            }

            // create composite node
            Node newNode;

            switch (composite)
            {
            case CompositeNodeTypes.Selector:
                newNode = new Selector(children);
                break;

            case CompositeNodeTypes.Sequence:
                newNode = new Sequence(children);
                break;

            default:
                return(null);
            }

            return(newNode);
        }
Esempio n. 2
0
        public uint CreateCompositeNode(CompositeNodeTypes composite, List <uint> nodeIDs)
        {
            Node newNode = MakeCompositeNode(composite, nodeIDs);

            if (newNode == null)
            {
                return(0xfffffffe);  // failed to create new node
            }
            newNode.SetID(++m_nodeID);
            uint a = newNode.GetID();

            m_nodeDic.Add(a, newNode);
            return(a);
        }
Esempio n. 3
0
        private uint CreateCompositeNodeWithID(CompositeNodeTypes composite, List <uint> nodeIDs, uint nodeID)
        {
            if (m_nodeDic.ContainsKey(nodeID))
            {
                return(0xffffffff);   // id already exists
            }
            Node newNode = MakeCompositeNode(composite, nodeIDs);

            if (newNode == null)
            {
                return(0xfffffffe);  // failed to create new node
            }
            newNode.SetID(nodeID);
            m_nodeDic.Add(nodeID, newNode);
            return(nodeID);
        }