public HouseRangeDecorator(BtNode wrappedNode, BaseBlackboard bb, Villager villager, bool withinRange) : base( wrappedNode, bb) { WithinRange = withinRange; vBB = (VillagerBB)bb; villagerRef = villager; }
public virtual void RemoveChild(BtNode node) { if (m_children != null && node != null) { m_children.Remove(node); } }
public override void RemoveChild(BtNode node) { int index = m_children.IndexOf(node); m_results.RemoveAt(index); base.RemoveChild(node); }
/// <summary> /// 如果当前节点Tick结束,就继续下一个节点 /// </summary> public override BtResult Tick() { if (m_curActiveChild == null) { m_curActiveChild = m_children[0]; m_curActiveIndex = 0; } BtResult result = m_curActiveChild.Tick(); if (result == BtResult.Ended) { m_curActiveIndex++; if (m_curActiveIndex >= m_children.Count) { m_curActiveChild.Clear(); m_curActiveChild = null; m_curActiveIndex = -1; } else { m_curActiveChild.Clear(); m_curActiveChild = m_children[m_curActiveIndex]; result = BtResult.Running; } } return(result); }
public override void Clear() { if (m_curActiveChild != null) { m_curActiveChild.Clear(); m_curActiveChild = null; } }
public virtual void AddChild(BtNode node) { if (m_children == null) { m_children = new List <BtNode>(); } if (node != null) { m_children.Add(node); } }
public override void OnHeaderGUI() { GUI.color = Color.white; BtNode node = target as BtNode; BtGraph graph = node.graph as BtGraph; string title = target.name; GUILayout.Label(title, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30)); GUI.color = Color.white; }
public override void Clear() { if (m_curActiveChild != null) { m_curActiveChild.Clear(); m_curActiveChild = null; m_curActiveIndex = -1; } foreach (BtNode child in m_children) { child.Clear(); } }
/// <summary> /// 如果当前节点tick完成就清除 /// </summary> public override BtResult Tick() { if (m_curActiveChild == null) { return(BtResult.Ended); } BtResult result = m_curActiveChild.Tick(); if (result == BtResult.Ended) { m_curActiveChild.Clear(); m_curActiveChild = null; } return(result); }
/// <summary> /// 评估当前节点,如果没有就取第一个 /// </summary> public override bool DoEvaluate() { if (m_curActiveChild != null) { // 评估不通过,清除当前节点 bool result = m_curActiveChild.Evaluate(); if (!result) { m_curActiveChild.Clear(); m_curActiveChild = null; m_curActiveIndex = -1; } return(result); } else { return(m_children[0].Evaluate()); } }
/// <summary> /// 一般情况作为树的父节点,开始检查条件,满足后执行DoEvaluate,遍历子节点 /// 遍历评估能通过的节点,设置为当前节点,然后tick /// </summary> public override bool DoEvaluate() { if (m_children != null) { foreach (BtNode child in m_children) { if (child.Evaluate()) { if (m_curActiveChild != null && m_curActiveChild != child) { m_curActiveChild.Clear(); } m_curActiveChild = child; return(true); } } } m_curActiveChild = null; return(false); }
public override void AddChild(BtNode node) { }
public FindTreeDecorator(BtNode wrappedNode, BaseBlackboard bb) : base(wrappedNode, bb) { vBB = (VillagerBB)bb; }
public override void OnBodyGUI() { base.OnBodyGUI(); BtNode node = target as BtNode; BtGraph graph = node.graph as BtGraph; }
public override void AddChild(BtNode node) { base.AddChild(node); m_results.Add(BtResult.Running); }
public CanRepairHomeDecorator(BtNode wrappedNode, BaseBlackboard bb, Villager villager) : base(wrappedNode, bb) { vBB = (VillagerBB)bb; villagerRef = villager; }
public override void RemoveChild(BtNode node) { }