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); }
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); }
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); }