int GetSlotIndex(int orderIndex) { List <NodeLinkSlot> childrenLink = compositeNode.childrenLink; if (0 <= orderIndex && orderIndex < _ChildNodeOrders.Count) { int branchID = _ChildNodeOrders[orderIndex].branchID; for (int i = 0, count = childrenLink.Count; i < count; i++) { NodeLinkSlot slot = childrenLink[i]; if (slot.branchID == branchID) { return(i); } } } return(-1); }
public override int GetInterruptIndex(TreeNodeBase node) { _ChildNodeOrders.Clear(); List <NodeLinkSlot> childrenLink = compositeNode.childrenLink; int childCount = childrenLink.Count; for (int childIndex = 0; childIndex < childCount; ++childIndex) { NodeLinkSlot slot = childrenLink[childIndex]; float weight = 0.0f; NodeBranch branch = behaviourTree.nodeBranchies.GetFromID(slot.branchID); if (branch.childNodeID == node.nodeID) { weight = -1f; branch.isActive = true; } else { weight = Random.value; } Order order = new Order() { branchID = slot.branchID, weight = weight, }; _ChildNodeOrders.Add(order); } _ChildNodeOrders.Sort(); _OrderIndex = 0; return(GetSlotIndex(_OrderIndex)); }